追踪系统
概述
参考:
Jaeger
Tempo
Skywalking
Zipkin
链路追踪需要在程序码中嵌入追踪库?那如何配置程序自己的调用栈数据推送到哪里,推送间隔,推送量之类的信息?
Application Performance Management(简称 APM) 是链路追踪程序可以实现的一种能力。
产品对比
产品名称 | 厂商 | 开源 | OpenTracing标准 | 侵入性 | 应用策略 | 时效性 | 决策支持 | 可视化 | 低消耗 | 延展性 |
---|---|---|---|---|---|---|---|---|---|---|
Jaeger | uber | 开源 | 完全支持 | 部分侵入 | 策略灵活 | 时效性高, UDP协议传输数据(在Uber任意给定的一个Jaeger安装可以很容易地每天处理几十亿spans) | 决策支持较好,并且底层支持metrics指标 | 报表不丰富,UI比较简单 | 消耗低 | jaeger比较复杂,使用框架较多,比如:rpc框架采用thrift协议,不支持pb协议之类。后端存储比较复杂。但经过uber大规模使用,延展性好 |
zipkin | 开源 | 部分支持 | 侵入性强 | 策略灵活 | 时效性好 | 决策一般(功能单一,监控维度和监控信息不够丰富。没有告警功能) | 丰富的数据报表 | 系统开销小 | 延展性好 | |
CAT | 大众点评 吴其敏 | 开源 | - | 侵入性强 | 策略灵活 | 时效性较好,rpc框架采用tcp传输数据 | 决策好 | 报表丰富,满足各种需求 | 消耗较低 , 国内很多大厂都在使用 | - |
Appdash | sourcegraph | 开源 | 完全支持 | 侵入性较弱 | 采样率支持(粒度:不能根据流量采样,只能依赖于请求数量);没有trace开关 | 时效性高 | 决策支持低 | 可视化太弱,无报表分析 | 消耗方面。不支持大规模部署, 因为appdash主要依赖于memory,虽然可以持久化到磁盘,以及内存存储支持hash存储、带有效期的map存储、以及不加限制的内存存储,前者存储量过小、后者单机内存存储无法满足 | 延展性差 |
MTrace | 美团 | 不开源 | - | - | - | - | ||||
CallGraph | 京东 | 不开源 | - | |||||||
Watchman | sina微博 | 不开源 | - | |||||||
EagleEye | 淘宝 | 不开源 | - | |||||||
skywalking | 华为 吴晟 | 开源 | 完全支持 | 侵入性很低 | 策略灵活 | 时效性较好 | 由于调用链路的更细化, 但是作者在性能和追踪细粒度之间保持了比较好的平衡。决策好 | 丰富的数据报表 | 消耗较低 | 延展性非常好,水平理论上无限扩展 |
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.