SkyWalking链路追踪系统
前言
在微服务开发如火如荼的今天,微服务也引入了一些额外问题。微服务开发&运维过程中会经常调用到其他服务暴露的接口,项目足够大时,内部调用会非常复杂,这种复杂性会导致很难去定位问题,出现问题的时候容易互相推诿进而导致效率低下,所以需要在微服务构建的系统中引入服务调用链路追踪工具,方便开发人员快速定位问题。
解决方案对比
目前市面上比较流行的链路追踪工具有Zipkin、CAT、Pinpoint、SkyWalking等等
简单介绍
- Zipkin是Twitter开源的调用链分析工具,目前基于SpringCloud Sleuth得到了广泛的使用,轻量,使用部署简单。
- SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI友好,非侵入式接入。目前已加入Apache孵化器。
- CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
- Pinpoint是韩国开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
对比
截止至2020/04/20
类别 | SkyWalking | CAT | Zipkin | Pinpoint |
---|---|---|---|---|
可视化界面 | 是 | 是 | 是 | 是 |
报表 | 丰富 | 很丰富 | 近似于无 | 有 |
接入方式 | 非侵入式 | 侵入式 | 侵入式 | 非侵入式 |
UI是否友好 | 是 | 是 | 否 | 是 |
颗粒度 | 方法级 | 代码级 | 接口级 | 方法级 |
数据存储 | ES,H2 | mysql,hdfs | ES,mysql,Cassandra,内存 | Hbase |
社区活跃度 | 13.1k star | 13.1k star | 12.7k star | 10.2k star |
实现方式 | 拦截请求,发送(HTTP,mq)数据至zipkin服务 | java探针,字节码增强 | java探针,字节码增强 | 代码埋点(拦截器,注解,过滤器等) |
下载
ElasticSearch7 API变更比较多,故官网拆分出两个包,可根据ElasticSearch版本选择下载
下载页
SkyWalking 7.0.0
SkyWalking 7.0.0-ES7版本
所有历史版本
- 可以在归档库中,找到SkyWalking所有的历史发布版本
- 孵化器阶段发行版归档库包含SkyWalking还在孵化器时的发布版本。
安装&启动
-
将下载好的压缩包解压至用户目录
-
修改config/application.yml修改配置,由于我本地安装的是ES7版本,故将储存引擎由默认的H2修改为ElasticSearch7
-
启动SkyWalking之前确保ElasticSearch服务启动成功,然后执行oapService.bat(linux下执行oapService.sh)再执行webappService.bat(webappService.sh),或者直接执行startup.bat(startup.sh)
-
确保启动无误之后浏览器访问localhost:8080)
端口可在webapp/webapp.yml中修改
Java接入
将skywalking根目录下的agent目录拷贝至用户目录,新建一个spring-boot项目,
在启动JVM参数中添加以下配置
-javaagent:D:\Apache-Skywalking\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=你的项目名
启动项目,并访问一个接口可以看到如下拓扑图
本地新建了一个服务,如果是微服务项目服务间调用会非常明显的展示出来