June's Studio.

Apm-链路监控

字数统计: 704阅读时长: 2 min
2018/11/27

简介

Zipkin 是 Twitter 开源的调用链分析工具,目前基于 springcloud sleuth 得到了广泛的使用,特点是轻量,使用部署简单。

Pinpoint 是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI 功能强大,接入端无代码侵入。

SkyWalking 是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI 功能较强,接入端无代码侵入。目前已加入 Apache 孵化器。

CAT 是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。

基本原理

类别 Zipkin Pinpoint SkyWalking CAT
实现方式 拦截请求,发送(HTTP,mq)数据至 zipkin 服务 java 探针,字节码增强 java 探针,字节码增强 代码埋点(拦截器,注解,过滤器等)

接入

类别 Zipkin Pinpoint SkyWalking CAT
接入方式 基于 linkerd 或者 sleuth 方式,引入配置即可 javaagent 字节码 javaagent 字节码 代码侵入
agent 到 collector 的协议 http,MQ thrift gRPC http/tcp
OpenTracing × ×

分析

类别 Zipkin Pinpoint SkyWalking CAT
颗粒度 接口级 方法级 方法级 代码级
全局调用统计 ×
traceid 查询 × ×
报警 ×
JVM 监控 × ×

面 UI 展示

类别 Zipkin Pinpoint SkyWalking CAT
健壮度 ** ***** **** *****

数据存储

类别 Zipkin Pinpoint SkyWalking CAT
数据存储 ES,mysql,Cassandra, 内存 Hbase ES,H2 mysql,hdfs

PinPoint 和 skyWalking 支持的插件对比

类别 Pinpoint SkyWalking
web 容器 Tomcat6/7/8,Resin,Jetty,JBoss,Websphere Tomcat7/8/9,Resin,Jetty
JDBC Oracle,mysql Oracle,mysql,Sharding-JDBC
消息中间件 ActiveMQ, RabbitMQ RocketMQ 4.x,Kafka
日志 log4j, Logback log4j,log4j2, Logback
HTTP 库 Apache HTTP Client, GoogleHttpClient, OkHttpClient Apache HTTP Client, OkHttpClient,Feign
Spring 体系 spring,springboot spring,springboot,eureka,hystrix
RPC 框架 Dubbo,Thrift Dubbo,Motan,gRPC,ServiceComb
NOSQL Memcached, Redis, CASSANDRA Memcached, Redis

性能分析

摘自:https://juejin.im/post/5a7a9e0af265da4e914b46f1

模拟了三种并发用户:500,750,1000。使用 jmeter 测试,每个线程发送 30 个请求,设置思考时间为 10ms。使用的采样率为 1,即 100%,这边与生产可能有差别。pinpoint 默认的采样率为 20,即 50%,通过设置 agent 的配置文件改为 100%。zipkin 默认也是 1。组合起来,一共有 12 种。下面看下汇总表:


从上表可以看出,在三种链路监控组件中,skywalking 的探针对吞吐量的影响最小,zipkin 的吞吐量居中。pinpoint 的探针对吞吐量的影响较为明显,在 500 并发用户时,测试服务的吞吐量从 1385 降低到 774,影响很大。然后再看下 CPU 和 memory 的影响,在内部服务器进行的压测,对 CPU 和 memory 的影响都差不多在 10% 之内。

CATALOG
  1. 1. 简介
  2. 2. 基本原理
  3. 3. 接入
  4. 4. 分析
  5. 5. 面 UI 展示
  6. 6. 数据存储
  7. 7. PinPoint 和 skyWalking 支持的插件对比
  8. 8. 性能分析