1、调用链监控系统简介
Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
2、基本原理
类别 | Zipkin | Pinpoint | SkyWalking | CAT |
---|---|---|---|---|
实现方式 | 拦截请求,发送(HTTP,mq)数据至zipkin服务 | java探针,字节码增强 | java探针,字节码增强 | 代码埋点(拦截器,注解,过滤器等) |
3、接入方式
类别 | Zipkin | Pinpoint | SkyWalking | CAT |
---|---|---|---|---|
接入方式 | 基于linkerd或者sleuth方式,引入配置即可 | javaagent字节码 | javaagent字节码 | 代码侵入 |
agent到collector的协议 | http,MQ | thrift | gRPC | http/tcp |
OpenTracing | √ | × | √ | × |
4、对比分析
类别 | Zipkin | Pinpoint | SkyWalking | CAT |
---|---|---|---|---|
颗粒度 | 接口级 | 方法级 | 方法级 | 代码级 |
全局调用统计 | × | √ | √ | √ |
traceid查询 | √ | × | √ | × |
报警 | × | √ | √ | √ |
JVM监控 | × | × | √ | √ |
5、页面UI展示
类别 | Zipkin | Pinpoint | SkyWalking | CAT |
---|---|---|---|---|
健壮度 | ** | ***** | **** | ***** |
6、数据存储
类别 | Zipkin | Pinpoint | SkyWalking | CAT |
---|---|---|---|---|
数据存储 | ES,mysql,Cassandra,内存 | Hbase | ES,H2 | mysql,hdfs |
7、测试对比
模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合起来,一共有12种。下面看下汇总表:
7、后台展示
zipkin后台:
cat后台:
CAT 是基于 Java 开发的实时应用监控平台,美团点评开源,文档完善、后台报表完善。具有以下优势:
实时处理:信息的价值会随时间锐减,尤其是事故处理过程中
全量数据:全量采集指标数据,便于深度分析故障案例
高可用:故障的还原与问题定位,需要高可用监控来支撑
故障容忍:故障不影响业务正常运转、对业务透明
高吞吐:海量监控数据的收集,需要高吞吐能力做保证
可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统
经过对比,我们选择了国内开源产品CAT作为我们系统调用链跟踪的监控平台。经过一段时间的应用,cat帮助我们减少故障发现时间,降低故障定位成本,辅助应用程序优化。