SkyWalking
官网:https://skywalking.apache.org/
下载:https://skywalking.apache.org/downloads/
Github: https://github.com/apache/skywalking
文档:https://skywalking.apache.org/docs/main/v8.4.0/readme/
中文文档:https://github.com/SkyAPM/document-cn-translation-of-skywalking
Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点。
是一款基于分布式跟踪的应用程序性能监控系统。
另外社区还发展出了一个叫OpenTracing的组织,旨在推进调用链监控的一些规范和标准工作。
SkyWalking 是一个应用性能监控系统,特别为微服务、云原生和基于容器(Docker, Kubernetes, Mesos)体系结构而设计。
除了应用指标监控以外,它还能对分布式调用链路进行追踪。类似功能的组件还有:Zipkin、Pinpoint、CAT等。
监控维度可以分为节点资源监控(CPU、内存、带宽、磁盘)、应用探活监控(探活心跳)、应用服务能力监控(自动化回归测试)、应用服务性能监控等(全链路追踪),本文主要对比全链路追踪中常使用的Zipkin、Pinpoint、SkyWalking和CAT。
一、全链路追踪工具
1、Zipkin
Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
2、Pinpoint
韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
3、SkyWalking
本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
4、CAT
大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
二、工具对比
对比项 | 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 |
cat
由大众点评开源,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控 。 集成方案是通过
代码埋点的方式来实现监控,比如: 拦截器,注解,过滤器等。 对代码的侵入性很大,集成成本较高。
风险较大。
支持技术栈:
- dubbo
- spring mvc ,spring aop ,springmvc-url
- spring boot
- mybatis
- log4j , logback
- playframework
- http请求
zipkin
由Twitter团队开源, Zipkin是一个分布式的跟踪系统。它有助于收集数据需要解决潜在的问题在市微服架构的时机。它管理数据的收集和查找 .
该产品结合spring-cloud-sleuth使用较为简单, 集成很方便。 但是功能较简单。
支持技术栈:
- spring cloud
以上是结合spring-cloud-sleuth支持的技术栈
pinpoint
由韩国团队naver团队开源,针对大规模分布式系统用链路监控,使用java写的工具。灵感来自短小精悍,帮助分析系统的总
体结构和内部组件如何被调用在分布式应用提供了一个很好的解决方案。
使用java探针字节码增加技术,实现对整个应用的监控 。 对应用零侵入
支持技术栈:
- Tomcat 6+, Jetty 8/9, JBoss 6, Resin 4, Websphere 6+, Vertx 3.3+
- Spring, Spring Boot (Embedded Tomcat, Jetty)
- HTTP Client 3.x/4.x, HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
- Thrift, Dubbo
- mysql, oracle, mssql, cubrid,PostgreSQL, maria
- arcus, memcached, redis, cassandra
- MyBatis
- DBCP, DBCP2, HIKARICP
- gson, Jackson, Json Lib
- log4j, Logback
skywalking
2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。
针对分布式系统的应用性能监控系统,特别针对微服务、cloud native和容器化(Docker, Kubernetes, Mesos)架构, 其核心是个分布式追踪系统。
使用java探针字节码增加技术,实现对整个应用的监控 。 对应用零侵入
支持技术栈
- Tomcat7+ , resin3+, jetty
- spring boot ,spring mvc
- strtuts2
- spring RestTemplete ,spring-cloud-feign
- okhttp , httpClient
- msyql ,oracle , H2 , sharding-jdbc,PostgreSQL
- dubbo,dubbox ,motan, gRpc ,
- rocketMq , kafla
- redis, mongoDB,memcached ,
- elastic-job , Netflix Eureka , Hystric
比较
cat | zipkin | pinpoint | skywalking | |
---|---|---|---|---|
依赖 |
|
|
|
|
实现方式 | 代码埋点(拦截器,注解,过滤器等) | 拦截请求,发送(HTTP,mq)数据至zipkin服务 | java探针,字节码增强 | java探针,字节码增强 |
存储选择 | mysql , hdfs | in-memory , mysql , Cassandra , Elasticsearch | HBase | elasticsearch , H2 |
通信方式 | — | http , MQ | thrift | GRPC |
MQ监控 | 不支持 | 不支持 | 不支持 | 支持(RocketMQ,kafka) |
全局调用统计 | 支持 | 不支持 | 支持 | 支持 |
trace查询 | 不支持 | 支持 | 不支持 | 支持 |
报警 | 支持 | 不支持 | 支持 | 支持 |
JVM监控 | 不支持 | 不支持 | 支持 | 支持 |
star数 | 4.5K | 7.9K | 5.6K | 2.8K |
优点 | 功能完善。 | spring-cloud-sleuth可以很好的集成zipkin , 代码无侵入,集成非常简单 , 社区更加活跃。 | 完全无侵入, 仅需修改启动方式,界面完善,功能细致。 |
完全无侵入,界面完善,支持应用拓扑图及单个调用链查询。 功能比较完善(zipkin + pinpoint) |
缺点 |
|
|
不支持查询单个调用链, 对外表现的是整个应用的调用生态。 |
|
文档 | 网上资料较少,仅官网提供的文档,比较乱 | 文档完善 | 文档完善 | 文档完善 |
开发者 | 大众点评 | naver | 吴晟(华为开发者) ,目前已经加入Apache孵化器 | |
使用公司 | 大众点评, 携程, 陆金所,同程旅游,猎聘网 | naver | 华为软件开发云、天源迪科、当当网、京东金融 | |