調用鏈監控對比

簡介

Zipkin是Twitter開源的調用鏈分析工具,目前基於springcloud sleuth得到了廣泛的使用,特點是輕量,使用部署簡單。

Pinpoint是韓國人開源的基於字節碼注入的調用鏈分析,以及應用監控分析工具。特點是支持多種插件,UI功能強大,接入端無代碼侵入。

SkyWalking是本土開源的基於字節碼注入的調用鏈分析,以及應用監控分析工具。特點是支持多種插件,UI功能較強,接入端無代碼侵入。目前已加入Apache孵化器。

CAT是大衆點評開源的基於編碼和配置的調用鏈分析,應用監控分析,日誌採集,監控報警等一系列的監控平臺工具。

4種APM工具對比

類別 Zipkin Pinpoint SkyWalking CAT
實現方式 攔截請求,發送(HTTP,mq)數據至zipkin服務 java探針,字節碼增強 java探針,字節碼增強 代碼埋點(攔截器,註解,過濾器等)
接入方式 基於linkerd或者sleuth方式,引入配置即可 javaagent字節碼 javaagent字節碼 代碼侵入
agent到collector的協議 http,MQ thrift gRPC http/tcp
OpenTracing × ×
顆粒度 接口級 方法級 方法級 代碼級
全局調用統計 ×
traceid查詢 × ×
報警 ×
JVM監控 × ×
UI健壯度 ** ***** **** *****
數據存儲 ES,mysql,Cassandra,內存 Hbase ES,H2 mysql,hdfs
github活躍度 12.8k 10.3k 13.4k 13.3k

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種。下面看下彙總表:

img

從上表可以看出,在三種鏈路監控組件中,skywalking的探針對吞吐量的影響最小,zipkin的吞吐量居中。pinpoint的探針對吞吐量的影響較爲明顯,在500併發用戶時,測試服務的吞吐量從1385降低到774,影響很大。然後再看下CPU和memory的影響,在內部服務器進行的壓測,對CPU和memory的影響都差不多在10%之內。

推薦方案

每種APM工具都有各自的優勢,個人推薦使用SkyWalking,主要從以下幾個方面考慮

  1. 代碼無侵入,通過添加Java探針可直接使用
  2. 追蹤細緻到方法級別,可以跟蹤方法級別的耗時
  3. UI交互友好,國人開發,適用於國人的UI風格
  4. agent到collect通訊方式gRPC,相對HTTP有更好的性能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章