当前位置:   article > 正文

监控软件选型Zipkin jaeger elastic apm SkyWalking Pinpoint_jaeger skywalking对比

jaeger skywalking对比
Zipkinjaegerelastic apmSkyWalkingPinpoint
简介Zipkin早于Jaeger,是Google Dapper的开源版本,由Twitter进一步开发。Zipkin基于Java语言的应用程序,其中包含很多服务,每个服务都实现Zipkin具体的某一个功能,并包括一个用户界面和用于跟踪软件系统框架的界面。每个服务还提供了一系列存储引擎来持久存储数据,例如内存数据库,MySQL,Cassandra和Elasticsearch。Jaeger由Uber创建,并用Go语言编写。它除了Zipkin的功能集外,Jaeger还提供了动态采样,REST API,基于ReactJS的UI界面,以及对Cassandra和Elasticsearch内存数据存储的支持。为了实现这些功能,Jaeger相比Zipkin采取了一种不同的,更分散的方法。 Jaeger的体系结构包括一个客户端,该客户端向代理发出跟踪,代理监听入站跨度(spans)并将其路由到收集器。然后,收集器将验证,转换并保留跨度(spans)。 Jaeger的分布式体系结构使其具有高度可扩展性。Jaeger还具有独特的数据收集方式:与其他尝试收集轨迹和跨度(spans)的系统不同,Jaeger会对监视的数据进行动态采样。这种方法不仅可以处理突然的流量激增,而且可以提高Jaeger的整体性能。Elastic stack在6.3版本开始推出了APM功能。ElasticAPM是基于Elastic Stack构建的应用程序性能监视系统,它可以嵌入应用进程内部,实时采集各种运行指标并传输到elasticsearch平台进行聚合统计,通过kibana界面端展示应用系统性能处理能力。SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
OpenTracing兼容
server端语言javagogojava
客户端支持语言java,c#,go,php,js等java/c++/go/node/php/pythonjava/go/node/php/python等java, .net core,nodejs,php
传输协议支持http/AMQP/Kafka/Scribeudp/httphttp/AMQP/KafkagRPC,httpthrift
实现方式拦截请求,发送(HTTP,mq)数据至zipkin服务、侵入性强拦截请求,侵入java探针,字节码增强,无侵入性java探针,字节码增强,无侵入性java探针,字节码增强、无侵入性
接入方式基于linkerd或者sleuth方式,引入配置即可java agent字节码java agent字节码java agent字节码
全局调用统计×××
trace查询支持支持支持支持不支持
告警支持不支持不支持支持支持
jvm监控不支持不支持支持支持支持
页面ui丰富度
存储方式ES,mysql,Cassandra,内存ES,kafka,Cassandra,内存ESES,H2,mysql,TIDB,sharding sphereHbase
性能损耗中等中等
社区活跃度github15.3kgithub15.6kgithub apm server 987github19.2kgithub12.1k
界面功能较为简单,本身无告警功能,可能需要二次开发。有代码入侵性在界面上较为完善(对比zipkin),但是也无告警功能。有代码入侵性。dubbo目前无插件支持,可二次开发。字节码增强,性能损耗低,无代码入侵性,集成容易,与logging能统一在kibana中展示完全无侵入,性能损耗低,界面完善,支持应用拓扑图及单个调用链查询,功能比较完善(zipkin + pinpoint)完全无侵入, 仅需修改启动方式,界面完善,功能细致。不支持查询单个调用链, 对外表现的是整个应用的调用生态,收集性能的损耗比较多,支持的存储比较少。

结论:

zipkin框架:仅支持spring cloud,不支持dubbo,功能及其简单,集成容易,与jaeger一样但也有较强的侵入性;
zipkin、jaeger就被排除了,接下来重点看pinpoint和skywalking、elastic apm的对比:
三者对代码都没有侵入性,使用java探针字节码增加技术,监控能力相当,最主要的一个区别在于底层数据库
1、Pinpoint只支持HBase,且扩展代价较大,其支持的查询一定是在时间的基础上(Pinpoint通过鼠标圈定一个时间范围后查看这个范围内的Trace信息),且pinpoint收集链路信息的性能损耗比skywalking高得多,尚未支持pinpoint不支持sharding-jdbc;
2、skywalking和elastic apm底层使用的是elasticSearch数据库,skywalking可以多个维度任意组合查询,例如:时间范围,服务名,Trace状态,请求路径,TraceId等;elastic apm支持使用sql的方式查询,不相上下。elastic apm在kibana中有界面直接展示,如果项目中已经用了elk的话会比较合适。skywalking则是有自己的ui界面展示。

总的来说:skywalking和elastic apm区别不大,活跃度方面elastic apm不及skywalking,但是官方的支持和文档资料也挺齐全的,也不会有啥障碍。建议如果上了elk的话选择elastic apm,否则上skywalking

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/380793
推荐阅读
相关标签
  

闽ICP备14008679号