问题
当前sfa系统稳定性低,有些请求处理比较慢,每天大于两秒的请求有上千个,优化的时候只能靠猜测
当前迫切需要一款追踪工具对系统问题进行监控,对系统问题进行诊断
使用全链路追踪的必要性
请求链路追踪,故障快速定位:可以通过调用链结合业务日志快速定位错误信息。
可视化: 各个阶段耗时,进行性能分析。
依赖优化:各个调用环节的可用性、梳理服务依赖关系以及优化。
数据分析,优化交互。
-
目前分布式链路追踪系统基本都是根据谷歌的《Dapper大规模分布式系统的跟踪系统》这篇论文发展而来,主流的有zipkin,pinpoint,skywalking,cat。
SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
类别 | Zipkin | Pinpoint | SkyWalking | CAT |
---|---|---|---|---|
实现方式 | 拦截请求,发送(HTTP,mq)数据至zipkin服务 | java探针,字节码增强 | java探针,字节码增强 | 代码埋点(拦截器,注解,过滤器等) |
-
因为zipkin和cat对代码有一定的侵入性,系统改造成本高,有比较高的风险。
-
而pinpoint和skywalking都是基于字节码注入技术,可以做到完全的代码无侵入。对现有系统的改造极小。
-
skywalking agent系统负载比pinpoint更小一点 , 支持可插拔配置,存储方式更加灵活,功能更加完备,接口诊断粒度更细
我个人认为 skywalking更强的地方
- 线程剖析 粒度比pinpoint更细,可以拦截指定端点(url)指定时间的数据进行线程剖析
- 记录了fullgc次数
- 独立的慢sql记录
- 实现opentace协议,兼容多种采集方式
- 报警配置更加灵活
落地方案
-
skywalking 分 客户端,采集端,web服务 ,客户端需要添加应用程序启动参数中。
-
采集端和web端部署到同一台服务上,最少4g内存,最少40g磁盘,可以设置 1/10采集减轻负载
-
集群部署 ( zookeeper + server)* 3 8g内存 100g磁盘
-
存储 可选mysql hdfs,es 试点服务可以搭建单节点es服务,数据可不用分片,数据默认存储7天,最低要求 8g内存200g磁盘
-
集群部署 ( es)* 3 16g内存 1T磁盘
集群方案可以同时对整个活动系统进行监控