前言
在上一篇介绍了使用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
说明:
- javaagent 参数必须在 jar参数之前;
- agent.service_name 表示服务名称;
- 启动前需要修改agent.config 文件中的相应配置:
collector.backend_service (后端服务的ip地址和端口 xxx.xxx.xxx.xxx:11800)