自架 Grafana Tempo (2) 配置 Agent, Tempo, Grafana
上一篇已經簡單介紹了這幾個服務的功能,這篇就使用 docker compose 來架設這幾個服務,並且修改一些小地方以符合我們想要的設定。
接下來的內容各服務會用以下版本作為範例:
- Grafana Agent: 0.29.0
- Grafana Tempo: 1.5.x
- Grafana: 9.3.2
- Grafana Prometheus: 2.40.7
官方 GitHub 上的範例會比較新,會跟我的範例可能會有所很大的差異,畢竟 Grafana 的更新速度很快,一不留神就不知道該了什麼東東…
安裝
以 Grafana Tempo 官方 GitHub 上 docker compose local 版為範例 (記得要選 local 資料夾內的 docker compose)。版本我提供 1.5.0 版,如果覺得差異太多,可自行修改分支。
Grafana Tempo (v1.5.0) docker-compose - GitHub
修改設定
由於官方範例只是 demo,有很多設定被改成暫時性而已,資料來源也是從範例傳入,而不是由自己的服務傳入,所以我們來改造一下成可以作為服務的設定。我會這麼說是因為裡面的設定非常多,需要再詳細規畫和設定過才會比較合適。
Agent
這裡我們加一些特殊功能,開啟 Grafana 的 service graph 和過濾一些經常被作為 health check 網址,例如 metrics。過濾的寫法可能需要注意,在搜尋寫法的時候可能會搜到官方部落格裡面的介紹,但實際經過測試後,還是要依照 OpenTelemetry tail sampling processor 的寫法才行。
agent.yaml
1 | # ...略... |
Tempo
Tempo 的設定我們也要稍微修改一下,我們只要接收 otlp 的資料、設定資料保留的時間還有資料可以查詢的時間。範例內的資料是儲存在本地端,就是這個 yaml 檔的位置,我們先維持不動,當然也支援儲存到其他地方,例如 S3。
tempo.yaml
1 | # 只接收otlp的資料 |
Grafana
Grafana 我們可以加入一些圖表功能 (Tempo APM Table, Service Graph),讓 Tempo 的 Exporter 不只有看追蹤資料而已。不過這個功能在 Grafana 9.3.2 版本還是在測試版,需要手動把功能打開。
Grafana Feature Toggles
因為這個功能還在測試階段,需要手動把功能性的開關打開。這項操作需要修改 docker-compose.yaml,後面會在說明修改的位置。
Service Graph
這個功能在上面 agent 的設定裡就先設定好了,不用再改。
agent.yaml
1 | service_graphs: # 啟用 service graph |
docker compose
接下來修改 docker compose 的設定,列出來的建議修改,其他的可以維持不動。
k6-tracing
這裡面就是透過 docker compose 來設定自動餵入資料,我們需要把它刪除(當然不刪也是可以,但是會看到一堆那些資料)。
1 | # 刪除開始 |
agent
將資料全部導到 agent 再傳到 Tempo,所以我們把 agent 的 port 打開並且對應到外部。
1 | agent: |
Tempo
Tempo 我們只要開 Tempo(建議對外)和 otlp 的 port。之前我們設定agent.yaml
裡,會把資料送到這裡的 4317 port。
1 | tempo: |
Grafana
我們只要加入這個參數 GF_FEATURE_TOGGLES_ENABLE
就能修改要啟用實驗性或測試中的功能,後面有多個的話,用 ,
隔開即可。其餘的設定不變。
1 | grafana: |
啟動
大功告成,最後就到 docker-compose.yaml
路徑底下,輸入指令 docker-compose up -d
就 OK 啦。
好啦,休息一下,待會再戰,接下來就準備把追蹤資料送進去。
懶得看我的文章
那就直接去看我 GitHub 的 Repository 吧:zamhsu/GrafanaTempo