使用 Jaeger 完成服務間的鏈路追蹤
jaeger-client (OpenTracing API 各語言的實現,用於在應用中塞入資訊採集點) jaeger-agent (負責傳送的程序,對 spans 進行處理併發送給 collector,監聽 spans 的 UDP 傳送。設計這層是為了作為基礎元件部署到主機上,從 client 中抽象出了 collector 的發現和路由。注意:1.這層應該是部署在應用本地;2.如果配置報告的 endpoint,則直接將 spans 傳送到 collector,不需要 agent。) jaeger-collector (收集追蹤 spans,並通過管道對追蹤資料進行處理。當前的管道支援追蹤的驗證、索引、轉換,最後儲存資料) data store (追蹤資訊的儲存) jaeger-query (從儲存中檢索追蹤資訊並通過 UI 展示) jaeger-ui (UI 展示層,基於 React)
注意:jaeger 的儲存是可插拔元件,目前支援 Cassandra、ElasticSearch 和 Kafka。
基於以上的體系結構,本文關將注點放在 jaeger-client 部分,考慮怎麼實現服務之間和服務內部的 tracing。