使用skywalking进行服务链监控

前言

在上一篇介绍了使用pinpoint进行微服务的服务链监控(https://www.jianshu.com/p/5a6dc609acea),但由于在使用过程中pinpoint的当前版本1.8.2还不支持webflux导致项目中使用的spring cloud gateway不能监控到,所以换用能够支持webflux的skywalking。

在skywalking 6.2中已经支持spring cloud gateway。使用spring boot 2.1.4.RELEASE + spring cloud Greenwich.SR2 版本验证通过,但使用spring boot 2.1.6.RELEASE + spring cloud Greenwich.SR2 版本验证失败。在6.2的java agent中spring cloud gateway的插件在optional-plugins目录中,需要将它放置到plugins中。

SkyWalking一个开源可观测性平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking提供了一种简单的方法,可以让你清晰的查看分布式系统、甚至是跨云环境中。它更像是现代化APM(Application Performance Manager),专为云原生、基于容器和分布式系统而设计的。

SkyWalking是由国人开发,现在已经成为apache开源项目。对于SkyWalking的基本介绍可以直接参见中文文档:https://github.com/apache/incubator-skywalking/tree/master/docs/others/cn

安装部署

这里采用docker-compose的方式部署skywalking。部署所用的docker-compose.yml如下,skywalking-oap中挂载的配置文件volume来自于:https://github.com/apache/incubator-skywalking/tree/master/docker中的config目录。

version: '3.3'
services:
  elasticsearch:
    image: elasticsearch:6.6.1
    container_name: skywalking-es
    restart: always
    # ports:
    #   - 9200:9200
    #   - 9300:9300
    environment:
      discovery.type: single-node
      TZ: Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
  oap:
    image: apache/skywalking-oap-server:6.2.0
    container_name: skywalking-oap
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      TZ: Asia/Shanghai
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
#    volumes:
#      - ./config:/skywalking/config
  ui:
    image: apache/skywalking-ui:6.2.0
    container_name: skywalking-ui
    depends_on:
      - oap
    links:
      - oap
    restart: always
    ports:
      - 18080:8080
    environment:
      SW_OAP_ADDRESS: oap:12800
      TZ: Asia/Shanghai

运行容器

运行docker-compose命令启动skywalking。启动后使用浏览器打开http://localhost:18080地址访问skywalking界面。

docker-compose up -d

使用 Agent收集调用信息

skywalking与pinpoint一样,采用javaagent无侵入的方式实现了应用调用信息的收集,原应用程序无需做任何改动。只需要在启动时增加javaagent参数。启动时参数如下:

java -javaagent:/opt/skywalking-agent/skywalking-agent.jar=agent.service_name=demo -jar demo.jar

说明:

  1. javaagent 参数必须在 jar参数之前;
  2. agent.service_name 表示服务名称;
  3. 启动前需要修改agent.config 文件中的相应配置:
collector.backend_service (后端服务的ip地址和端口 xxx.xxx.xxx.xxx:11800)

其它配置项说明参见:https://github.com/apache/incubator-skywalking/blob/master/docs/en/setup/service-agent/java-agent/README.md

skywalking的web界面

ss_dashboard.png
ss_topo.png
ss_trace.png

参考地址

推荐阅读更多精彩内容