OpenTelemetry 不僅是一個遙測框架,它還是一個強大的工具,可以幫助開發者深入了解他們的應用程序和系統的運行情況。通過 OpenTelemetry,我們可以蒐集日誌、指標和跟踪數據,這三者是任何現代監控解決方案的核心。
在 Loki 中探索 OpenTelemetry 日誌:
Loki 是一個高效的日誌聚合系統,專為使用和存儲大量日誌而設計。當你蒐集 OpenTelemetry 日誌時,Loki 提供了一個方便的界面,可以方便地搜尋和分析這些日誌。
在 Prometheus 中探索 OpenTelemetry 指標:
Prometheus 是開源的監控解決方案和時序數據庫。當使用 OpenTelemetry 蒐集指標時,Prometheus 提供了一個強大的查詢語言和界面來深入瞭解這些指標。
在 Tempo 中探索 OpenTelemetry 跟踪:
Tempo是一個高度可擴展的跟踪後端。它專為OpenTelemetry設計,讓開發者能夠查看他們的應用程序的完整跟踪,瞭解請求在整個系統中是如何流動的。
OpenTelemetry Grafana 儀表板:
Grafana 是一個開源的平台,用於監控和觀察。當你蒐集 OpenTelemetry 數據時,Grafana 儀表板提供了一個直觀的界面,可以將這些數據整合和可視化,從而獲得全面的系統概覽。
這些工具和技術共同構成了一個強大的數據可視化生態系統,讓開發者和運營團隊能夠更好地理解和優化他們的應用程序和服務。
一旦您將數據發送到 Grafana Cloud 或 OSS 堆棧,您就可以通過 Grafana 的 Explore UI 查看日誌數據。本文主要介紹從 Grafana Cloud 堆棧啟動 Explore,但 OSS 堆棧的導航應該相似。
要探索 OpenTelemetry 數據,請前往您的 Grafana Cloud 控制台,選擇您的 Grafana 實例,然後點擊啟動。
然後從左側菜單中選擇 Explore。
一旦打開 Explore,從下拉菜單中選擇您的 Loki 實例。使用 GrafanaCloud 時,命名規則是 grafanacloud-<STACK_NAME>-log
。
要在 Loki 中查看 OpenTelemetry 日誌,您可以使用 Builder
或 Code
工具來構建查詢。
每個查詢都必須從stream selector
開始。選擇一個或多個標籤來創建stream selector
。以下是一個簡單的範例:
{exporter="OTLP"}
如果您在適當的時間窗口中運行上述查詢,您將看到所有通過 OTLP exporter 發送的日誌。
在 Loki 中查看 OpenTelemetry 日誌條目時,可以切換 Prettify Json
選項,以幫助讀取大型語句;但是,您還可以撰寫查詢,使得只包含感興趣的字段。要做到這一點,請在查詢中添加一個 json
階段,將日誌語句轉換為鍵值對。
{exporter="OTLP"} | json
運行上述查詢,然後向下滾動到結果集。點擊一條記錄以展開並查看鍵值對。
接下來,您可以使用只包含感興趣字段的 line_format
表達式自定義 Loki 日誌格式。
{exporter="OTLP"} | json | line_format "[{{ .attributes_thread_name }}] {{ .body}}"
上述查詢將創建一個結果集,其中只包括時間、線程名稱和消息正文。
撰寫此文時,線程名稱仍然是一個實驗性特性,必須明確啟用(例如,對於 Java Agent 或 Spring Starter)。
logger 名稱也是一個非常常見的屬性({{.instrumentation_scope_name}}
)- 但在撰寫此文時,不能與 Grafana Agent 一起使用。
下表提供了 line_format
表達式,試圖與給定框架的默認日誌格式保持一致。
我們建議用 service.instance.id
替換進程 ID (resources_process_pid
),這樣可以輕鬆識別出有問題的節點。
框架 | 框架中的格式模式 | Grafana 中的格式模式 | LogQL 表達式 |
---|---|---|---|
Java - Spring Boot | TIMESTAMP SEVERITY PROCESS_PID --- [THREAD] LOGGING CLASS : MESSAGE |
TIMESTAMP SEVERITY [SERVICE_INSTANCE_ID/THREAD NAME] - LOGGER NAME: MESSAGE |
```{exporter="OTLP"} |
注意:如果時間戳未顯示,請確保將 Time 屬性切換為開。
一旦您已將數據發送到您的 Grafana Cloud 或 OSS 堆棧,您可以通過 Grafana 的 Explore UI 查看跟踪數據。本文重點介紹從 Grafana Cloud 堆棧啟動 Explore 的方法,但 OSS 堆棧的導航應該相似。
要探索 OpenTelemetry 數據,請轉到您的 Grafana Cloud 控制台,選擇您的 Grafana 實例,然後單擊啟動。
然後從左側菜單中選擇探索。
一旦 Explore 打開,從下拉菜單中選擇您的 Prometheus 實例。使用 GrafanaCloud 時,命名慣例是 grafanacloud-<STACK_NAME>-prom
。
要在 Prometheus 中查看 OpenTelemetry 指標,從下拉菜單中選擇一個指標,然後添加帶有 “工作” 作為標籤名稱和您的應用名稱作為標籤值的標籤過濾器。
點擊 “運行查詢” 以查看數據:
一旦您已將數據發送到您的 Grafana Cloud 或 OSS 堆棧,您可以通過 Grafana 的 Explore UI 查看跟踪數據。本文重點介紹從 Grafana Cloud 堆棧啟動 Explore 的方法,但 OSS 堆棧的導航應該相似。
要探索 OpenTelemetry 數據,請轉到您的 Grafana Cloud 控制台,選擇您的 Grafana 實例,然後單擊啟動。
然後從左側菜單中選擇探索。
一旦 Explore 打開,從下拉菜單中選擇您的 Tempo 實例。使用 GrafanaCloud 時,命名慣例是 grafanacloud-<STACK_NAME>-traces。
要在 Tempo 中查看 OpenTelemetry 的跟踪,請在第一行中選擇您的應用程序(“Resource Service Name”):
點擊跟踪 ID 會在右側打開一個視圖,該視圖顯示了跟踪中跨度的詳細信息,例如 HTTP 狀態碼:
數據可視化摘要:
總之,這些工具為用戶提供了靈活的數據可視化選項,使他們能夠更好地理解和解析他們的 OpenTelemetry 數據。