iT邦幫忙

2025 iThome 鐵人賽

DAY 25
1
DevOps

Vibe Coding 後的挑戰:Locust x Loki 負載及監控系列 第 25

Day25 - 從追蹤到日誌:實現 Tempo 與 Loki 的無縫整合

  • 分享至 

  • xImage
  •  

昨天我們已經入門了 Grafana Tempo,學會了如何將應用程式的追蹤數據發送到 Tempo 並在 Grafana 中進行視覺化。我們現在可以看到一個請求的完整生命週期,但如果想深入了解某個特定環節 (Span) 到底發生了什麼事,我們仍然需要日誌提供更詳細的上下文。

今天,我們將打通任督二脈,實現 Grafana 可觀測性堆疊 (Loki, Grafana, Tempo) 的核心價值:在追蹤和日誌之間建立無縫連結。這將徹底改變我們排查問題的體驗。


1. 從追蹤到日誌 (Trace to Logs)

這個功能讓我們在 Grafana 的 Explore 頁面檢視 Tempo 追蹤數據時,可以直接從任何一個 Span 跳轉到 Loki 中相關的日誌。

設定方法

關鍵在於設定 Grafana 的 Tempo 資料來源,告訴它如何找到對應的 Loki 日誌。

  1. 進入 Grafana 設定

    • 點擊左側選單的齒輪圖示 (Configuration) -> Data Sources
    • 選擇你設定的 Tempo 資料來源。
  2. 新增 Trace to logs 設定

    • 找到 Trace to logs 區塊並點擊 Add
    • Target data source: 選擇你的 Loki 資料來源。
    • Tags: 這一步是關鍵。我們需要告訴 Grafana,用 Span 的哪些標籤 (Tag) 來對應 Loki 的標籤。常用的設定是 job, namespace, pod, container 等,這取決於你的日誌和追蹤是如何標記的。
      • 例如,你可以設定 job, service.name
    • Filter by Trace ID & Span ID: 保持預設開啟狀態。
    • Time shift: 保持預設,Grafana 會自動搜尋 Span 時間範圍附近的日誌。
  3. 儲存設定:點擊 Save & test

Trace to Logs Setting
(圖片來源: Grafana 官方文件)

如何使用

設定完成後,回到 Explore 頁面查看一個追蹤。點擊任何一個 Span,你都會在右側面板看到一個藍色的 Logs 按鈕。點擊它,Grafana 就會自動開啟一個分割視窗,並執行一個 Loki 查詢,篩選出與這個 Span 在同一時間、具有相同標籤 (如 job, pod) 的日誌!


2. 從日誌到追蹤 (Logs to Trace)

反過來,當我們在 Loki 中查看日誌時,如果日誌中包含了 TraceID,我們也希望能一鍵跳轉到 Tempo 中對應的完整追蹤鏈路。

設定方法

這個設定是在 Loki 的資料來源中完成的。

  1. 進入 Grafana 設定

    • 點擊左側選單的齒輪圖示 (Configuration) -> Data Sources
    • 選擇你的 Loki 資料來源。
  2. 新增 Derived fields 設定

    • 找到 Derived fields 區塊並點擊 Add
    • Name: 給這個欄位取個名字,例如 TraceID
    • Regex: 填寫一個正規表示式,用來從日誌行中提取 TraceID。如果你的日誌是 JSON 格式且有一個 trace_id 欄位,可以直接使用 "trace_id":"(.*?)"。如果是 Key-Value 格式,可能是 trace_id=([a-f0-9]{32})
    • URL: 這是最關鍵的一步。我們要設定點擊後跳轉的目標。填寫 ${__data.fields.TraceID} 即可,但更重要的是設定 Internal link
    • Internal Link: 點擊 Internal Link 切換按鈕。
      • Data source: 選擇你的 Tempo 資料來源。
      • Query: 填寫 ${__value.raw},這會將提取出的 TraceID 作為查詢內容。
  3. 儲存設定:點擊 Save & test

如何使用

設定完成後,當你在 Loki 中查詢到的日誌行包含 TraceID 時,Grafana 會自動辨識它,並在日誌旁邊顯示一個藍色的按鈕。點擊它,你就會立刻跳轉到 Tempo,看到這個 TraceID 對應的完整分散式追蹤圖!


總結

今天我們打通了 Loki 和 Tempo 之間的連結,實現了日誌與追蹤的雙向無縫跳轉。這個功能是 Grafana 可觀測性平台的核心優勢,它將日誌的「深度」與追蹤的「廣度」完美結合,讓我們在面對複雜問題時,能夠以前所未有的效率進行定位和分析。熟練運用這個功能,將使你的故障排除能力提升一個檔次。


上一篇
Day24 - Grafana Tempo 分散式追蹤入門
下一篇
Day26 - Grafana Mimir 指標系統入門
系列文
Vibe Coding 後的挑戰:Locust x Loki 負載及監控27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言