调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

沙海
沙海
沙海
1017
文章
2
评论
2021年4月27日11:45:37
评论
1 2840字阅读9分28秒
摘要

调用链监控Skywalking与Zipkin

调用链监控Skywalking与Zipkin

调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

闪耀的瞬间
2020-06-16 11:39:23
调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin
3719

调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

收藏

10

分类专栏:
SpringCloud实战
SpringBoot 项目开发
文章标签:
调用链监控
skywalking
zipkin

版权

调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_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 &
12345678910111213141516171819202122232425262728293031323334353637383940414243
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_zhuyu19911016520-CSDN博客_skywalking zipkin

    调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

    调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

    调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

    zipkin 只能看到调用了那些服务,服务耗时多长,没法查看服务中的方法调用了redis、网络接口等

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

调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin 调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

方法里面的mysql调用、redis调用,调用了几次,每次的耗时,都展示的很详情,very nice 调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

比如,采集的这个接口,调用了2次mysql查询,每次耗时2670ms,就需要优化sql了调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin

skywalking之所以能采集到多种中间件(http、redis、mysql、mongodb)等等的信息,是因为它对每个中间件内置了处理程序,当我们启动应用使用skywalking时会自动对应用内的各种中间件添加拦截器 有http的、jdbc的调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin zipkin只能采集到服务层,也就是那个控制器的那个方法,内部调用了什么不能采集,如需要采集需要自定义处理器,相当于给当前 traceId 手动添加 spanId 例如:SpringBoot应用,使用Zipkin则需要引入 brave 相关的包,然后自动注入http-interceptors拦截器,才能采集应用内对外的http请求 SpringCloud应用,使用sleuth会自动注入http的拦截器,在http请求头中添加spanId

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: