目錄
概況
産生背景
APM
OpenTracing
主流元件
概況
分布式鍊路追蹤(Distributed Tracing),也叫 分布式鍊路跟蹤,分布式跟蹤,分布式追蹤
産生背景
随着微服務架構和容器技術的興起,一個看似簡單的應用,背景可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務調用最後才能完成;當請求變慢或者不可用時,我們無法得知是哪個背景服務引起的,這時就需要解決如何快速定位服務故障點,分布式跟蹤系統就能很好的解決這樣的問題,幫助我們快速發現錯誤以及監控分析每條鍊路上的性能瓶頸。
APM
APM全稱Application Performance Management應用性能管理,目的是通過各種探針采集資料,收集關鍵名額,同時搭配資料呈現以實作對應用程式性能管理和故障管理的系統化解決方案。Zabbix、Premetheus、open-falcon等監控系統主要關注伺服器硬體名額與系統服務運作狀态等,而APM系統則更重視程式内部執行過程名額和服務之間鍊路調用情況的監控,APM更有利于深入代碼找到請求響應“慢”的根本問題,與Zabbix之類的監控是互補關系。
OpenTracing
OpenTracing組織,旨在推進調用鍊監控的規範和标準工作,統一規範化鍊路監控産呂,為了避免碎片化,促進互操作性。
OpenTraceing API參考:https://github.com/opentracing/opentracing-java
主流元件
類型 | zipkin | SkyWalking(推薦) | 美團CAT | 阿裡鷹眼(Eagleeye) |
開源性 | Twitter開源 | 國産開源,Apache | 國産開源 | 不開源 |
基本原理 | 攔截請求,發送(HTTP,mq)資料至zipkin服務 | java探針,位元組碼增強 | 代碼埋點(攔截器,注解,過濾器等) | 代碼埋點(攔截器,注解,過濾器等) |
接入方式 | 基于linkerd或者spring cloud sleuth方式,引入配置即可 | avaagent位元組碼,無代碼入侵 | 多種方式,java可直接引入jar | 多種方式,java可直接引入jar |
支援OpenTracing | 是 | 是 | 否 | 否 |
顆粒度 | 接口級(類級别) | 方法級 | 代碼級 | 代碼級 |
存儲 | ES,mysql,Cassandra,記憶體 | ES,H2,TIDB | mysql,hdfs | hdfs |
agent到collector的協定 | http,MQ | http,gRPC | http/tcp | http/tcp |
官網 | https://zipkin.io/pages/quickstart.html | http://skywalking.apache.org/ | https://github.com/dianping/cat | https://www.cnblogs.com/gzxbkk/p/9600263.html |
全局調用統計 | 不支援 | 支援 | 支援 | 支援 |
trace查詢 | 支援 | 支援 | 不支援 | 支援 |
報警 | 不支援 | 支援 | 支援 | 支援 |
JVM監控 | 不支援 | 支援 | 不支援 | 不支援 |