调用链监控Skywalking与Zipkin

1.Skywalking与Zipkin的区别
  • 颗粒度:Skywalking方法级(展示的更详细),方法中所有的调用都展示出来了,如数据库调用、redis调用,第三方网络调用,而Zipkin只能展示接口级
  • UI界面:Skywalking完胜,国产开源,更适合国人眼球
  • 代码侵入性:Skywalking无代码侵入,使用字节码增强技术,在启动服务时使用 javaagent 指向skywalking服务即可收集调用链span信息
  • Zipkin:简单、轻量级
2.安装部署对比

Zipkin安装部署简单,参考:Spring Cloud Sleuth + Zipkin 调用链监控
Skywalking安装部署复杂:http://skywalking.apache.org/ , github

# Skywalking安装步骤如下:
# 1.docker 安装elasticsearch
docker run -d -it --name=elasticsearch --net=esnetwork \
--restart=always \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
-v /root/elasticsearch/config/:/usr/share/elasticsearch/config/ \
-v /root/elasticsearch/data/:/usr/share/elasticsearch/data/ \
-v /root/elasticsearch/logs/:/usr/share/elasticsearch/logs/ \
-v /root/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/ \
-v /etc/localtime:/etc/localtime \
-v /etc/timezone:/etc/timezone \
elasticsearch:7.4.2

# 2.安装 IK 分词器(进入docker容器安装插件)
docker exec -it elasticsearch bash
cd bin/
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip

# 3.下载skywalking:wget http://mirror.bit.edu.cn/apache/skywalking/7.0.0/apache-skywalking-apm-7.0.0.tar.gz

# 4.解压,进入目录,修改配置 
 vi config/application.yml ,配置storage为elasticsearch7,默认h2
 storage:
   selector: ${SW_STORAGE:elasticsearch7}

# 5.启动 SkyWalking OAP 服务
sh bin/oapService.sh , 查看启动日志:tail -f logs/skywalking-oap-server.log

# 6.启动 SkyWalking UI 服务
sh bin/webappService.sh,查看日志:tail -f logs/web.log

# 7.复制 skywalking 软件里面的 agent 目录到 java应用服务器上
# 8.复制后,修改agent\config\agent.config 里面的collector.backend_service参数,
值为:skywalking OAP服务的IP地址,端口默认为11800
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.10.1:11800}

# 7.启动java服务,指向复制后的agent目录中的skywalking-agent.jar
nohup java -javaagent:/skywalking/agent/skywalking-agent.jar -jar xxxx-1.0.0.jar &
3.界面对比

启动zipkin与对应微服务,访问服务,产生数据,查看zipkin ui界面

  • zipkin需要在代码中引入依赖,默认使用http向zipkin server发送数据,当调用量大时可以结合 rabbitmq ,java服务向rabbitmq发送调用链trace,zipkin采集rabbitmq里面的trace信息
  • nohup java -jar zipkin-server-2.12.9-exec.jar --zipkin.collector.rabbitmq.addresses=localhost --zipkin.collector.rabbitmq.username=admin --zipkin.collector.rabbitmq.password=admin &
    调用链监控Skywalking与Zipkin_第1张图片
    调用链监控Skywalking与Zipkin_第2张图片
    调用链监控Skywalking与Zipkin_第3张图片
    调用链监控Skywalking与Zipkin_第4张图片
    zipkin 只能看到调用了那些服务,服务耗时多长,没法查看服务中的方法调用了redis、网络接口等

启动Skywalking与对应微服务,访问服务,产生数据,查看skywalking ui界面

调用链监控Skywalking与Zipkin_第5张图片
调用链监控Skywalking与Zipkin_第6张图片

调用链监控Skywalking与Zipkin_第7张图片

方法里面的mysql调用、redis调用,调用了几次,每次的耗时,都展示的很详情,very nice
调用链监控Skywalking与Zipkin_第8张图片

比如,采集的这个接口,调用了2次mysql查询,每次耗时2670ms,就需要优化sql了调用链监控Skywalking与Zipkin_第9张图片

你可能感兴趣的:(SpringCloud实战,SpringBoot,项目开发)