文章目錄
使用 Docker Compose 啟動 Grafana Tempo
過去筆記紀錄到團隊由 OpenTracing 轉換到 OpenTelemetry,其中一個原因是 OpenTracing 的專案已經不再維護,另一個原因是 OpenTelemetry 有提供更多的功能,其中一個就是 OpenTelemetry 有提供一個分散式追蹤系統:Tempo,過去只有紀錄 Zipkin 與 Jaeger 的使用,今天就來紀錄一下如何使用 Docker Compose 建立 Grafana Tempo 測試環境
過去 trace 相關筆記如下:
- OpenTracing
- OpenTelemetry
最近正在評估團隊下一代產品的 technical stack,所以將 Tempo 納入評估的一部份,其中包含三個組件:
- Grafana 用來查詢與顯示 trace 資料
- Tempo 負責 trace 資料的儲存與處理查詢
- Prometheus 用來紀錄 Service Graph 資料
基本環境說明
- macOS Sonoma 14.1.1 (Apple M2 Pro)
- OrbStack Version 1.1.0 (16370)
- container images
- grafana/tempo:r124-c00e7ef
- grafana/grafana:10.2.2
- prom/prometheus:v2.48.0
設定方式
設定方式是參考 Grafana Tempo 的 Github 範例 而來的,可以參考原始內容,我個人拿掉了 k6-tracing
與 tempo 的 jaeger 跟 zipkin 的相容設定
admin_password
(選擇性)這是個人偏好:透過 admin 與 admin_password 來登入 Grafana,所以在 docker-compose.yml 中加上了 admin_password 的設定,如果不想設定 admin 密碼,後面的參數會有些不同會額外說明
pass.123
prometheus.yaml
tempo.yaml
grafana-datasources.yaml
docker-compose-tempo.yaml
實際使用
trace 資料來源來使用 Github Grafana Tempo 範例 中的 k6-tracing
,這個範例是使用 k6 來模擬一個簡單的 web server,這個範例會產生一些 trace 資料,我們可以透過 Grafana 來查詢這些 trace 資料
Home –> Explore
Outline 選
Tempo
& Query tpye 選Search
列出 trace 內容
Outline 選
Tempo
& Query tpye 選Service Graph
列出 trace 的服務關係
心得
官網文件 Quick start for Tempo 很直覺,原則上照著文件做就可以了,不過有幾點是我做這份筆記的原因:
- 官網文件 Quick start for Tempo與官方 Github Grafana Tempo 範例 比較偏像是 demo 用的,不適合用來進行其他整合應用的基礎環境
- 官方文件中的
k6-tracing
會產生一些 trace 資料,但是沒有提供任何的說明,所以我們只能透過 Grafana 來查詢這些 trace 資料 - 官方 Github Grafana Tempo 範例 是多個環境的結構,單純 local 開發,就不需要下載整個 repo ,直接參考上面的設定方式就可以了
完整程式碼請參考:Github:yowko/docker-compose-grafana-tempo
參考資訊
- Tempo
- Quick start for Tempo
- .NET Core 上使用 Jaeger 追蹤 gRPC 呼叫
- 使用 Jaeger 追蹤 ASP.NET Core 呼叫
- 使用 Jaeger 追蹤 ASP.NET Core 中的 class 呼叫
- [Jaeger] 使用 OpenTelemetry 來追蹤 ASP.NET Core
- [Zipkin] 使用 OpenTelemetry 來追蹤 ASP.NET Core
- [Jaeger] 使用 OpenTelemetry 來追蹤 ASP.NET Core 上的 gRPC 呼叫
- [Zipkin] 使用 OpenTelemetry 來追蹤 ASP.NET Core 上的 gRPC 呼叫
- Github Grafana Tempo 範例
- Github:yowko/docker-compose-grafana-tempo
文章作者 Yowko Tsai
上次更新 2023-11-28
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。