grafana tempo結合loki實現分布式追蹤


Tempo簡介

https://grafana.com/docs/tempo/latest/getting-started/

Grafana Tempo是一個開源、易於使用的大規模分布式跟蹤后端.Tempo具有成本效益,僅需要對象存儲即可運行,並且與Grafana,Prometheus和Loki深度集成.Tempo可以與任何開源跟蹤協議一起使用,包括Jaeger、Zipkin和OpenTelemetry。它僅支持鍵/值查找,並且旨在與用於發現的日志和度量標准(示例性)協同工作.Tempo與Jaeger,Zipkin,OpenCensus和OpenTelemetry兼容.它以任何上述格式提取批處理,對其進行緩沖,然后將其寫入GCS,S3或本地磁盤.因此,它強大、便宜且易於操作!

Tempo的架構

https://grafana.com/docs/tempo/latest/architecture/architecture/

 

 

可以看到Tempo的架構仍然分為distributoringesterqueriertempo-querycompactor這幾個架構,熟悉Loki和Cortex的朋友可能光看名字就知道他們大概是做什么的。不熟悉的同學也沒關系,下面簡單說下各模塊的作用:

distributor

啟動多個端口,分別接受來自Jaeger、Zipkin和OpenCensus協議的數據,按照TraceID進行哈希並映射到哈希環上,並交由ingester進行存儲處理。當前distributor支持的trace協議如下:

ingester
具體負責trace數據的塊存儲(memcache、GCS、S3)、緩存(Memcache)和索引的處理

querier
負責從ingester和后端存儲里面撈取trace數據,並提供api給查詢者

compactor
負責后端存儲塊的壓縮,減少數據塊數量

tempo-query
tempo的一個可視化界面,用的jaeger query,可以在上面查詢tempo的trace數據。

 

tempo 的部署

前提條件是安裝好loki 相關的日志系統,具體安裝不詳細介紹了可以查看官方文檔

https://grafana.com/docs/loki/latest/installation/

部署Tempo 

https://github.com/grafana/tempo/

這里推薦用Helm 安裝

https://github.com/grafana/tempo/tree/main/example/helm

線上環境還是推薦使用微服務模式

這邊測試選擇Single Binary

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm upgrade --install tempo grafana/tempo

kubectl create -f microservices-extras.yaml  測試用的一個實例,不安裝也可以,一會我們用loki 測試追蹤也是可以的

安裝好以后終端就可以測試

在grafana 配置tempo數據源

 

 

我們選一個追蹤ID 測試

 

因為測試實例安裝了ingress 所以我們也可以在節點用curl 測試

 

 

 

 

 

 

 

 

接下來配合loki來實現跟蹤traceid  

創建派生字段,派生字段可用於從日志消息中提取新字段並根據其值創建鏈接

https://grafana.com/docs/grafana/next/datasources/loki/

 

 

 

 為了后續能夠使用loki產生traceid,需要設置為loki的環境變量

 https://github.com/grafana/tempo/blob/main/example/docker-compose/docker-compose.loki.yaml 相關的參考文檔,環境變量可以看這個文檔

 

 

先隨便查詢幾次以讓loki產生數據,輸入以下內容查詢loki服務產生的包含traceID的數據。

接下來讓我們來執行一個專門查詢一些 trace ids 的查詢,在操作的時候通常會使用 Loki 來搜索類似於查詢路徑或狀態碼之類的數據,這里我們只是簡單演示,使用命令

{app="loki"}|="traceID"

 

 

 

 

 

 

可以看到TraceID字段后面的Tempo按鈕,點擊可以看到對應的trace信息

 

 

 

總結:

grafana tempo的誕生完善了grafana traceing體系,實現了grafana apm logging、tracing、metrics最后的一環,相對來說較便捷的集成到了grafana ui中,有點對標elk stack的意思,不過elk stack的鏈路追蹤好像是付費功能。tempo其鍵值存儲實現也決定了其功能的局限性,還不支持鏈路的完整展示,在查詢時必須要先獲得traceid才能進行查詢,所以只能通過日志打印traceid,然后再根據traceid進行查詢從而進行展示。

 

 

 

 

參考文檔:

https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247486887&idx=1&sn=c4fc2e2fca7fd728396da157a2685082&chksm=fdb902bacace8bac7bb1dfd30a6daa5f0e966f75fcfd803b6aa19ea0d3ed827782008d240088&scene=126&sessionid=1603851143&key=0a19845a51c58415cd240b232fdd04332e6b87d96080be3650d92b518db23b3c47396e1de2245acef75ea5350895eaa122801b75d8e45b3db06b12a4b59f1fd354703244fcb1e5cfa3b11f0e145edff89ab42289dad17c25915fad5b217cb5258cae4219ef149043b1f793a3b8ab8b19948c4bf5853b8d90ee7b74abea6fe3c7&ascene=1&uin=NjkxMzI3MDAw&devicetype=Windows+10+x64&version=63000039&lang=zh_CN&exportkey=A9EggG6JhOqvjsTz5omWxTI%3D&pass_ticket=mKBweVAFm3VIfjfW3vHGx99RSQ9z40gM4aXAC0uZdJgZgnCScBVtKpE2565trYIK&wx_header=0

https://blog.csdn.net/weixin_49366475/article/details/109462989

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM