iT邦幫忙

2024 iThome 鐵人賽

DAY 13
1
DevOps

Grafana Zero to Hero系列 第 13

Grafana Zero to Hero - Data Source:資料多樣性

  • 分享至 

  • xImage
  •  

前面介紹了各種跟數值有關或是 Database 的常見 Data Source,但 Grafana 也能夠查詢例如 Logs、Traces、Profiling 等資訊,為更深入的系統監控與診斷提供了統一的平台。

Logs

Loki

Loki 是由 Grafana Labs 於 2018 年開源的 Log 收集系統,特點是輕量、易用、成本低、高可用且易於擴展。Loki 借鑑了 Prometheus 的設計,對時間和 Label 進行索引以提高查詢效率,並參考 PromQL 設計了 Loki 專屬的 LogQL。

loki label
loki value
Loki 查詢主要透過 Label 與 Label 值進行初步篩選

loki query
Loki 的查詢介面,展開可以查看每筆 Log 的 Label 與其值

範例 Lab 可以參考 https://github.com/blueswen/observability-ironman30-lab/tree/main/14-loki

Traces

在現代分散式系統中,追蹤和排查效能瓶頸是一項艱鉅的挑戰,然而透過分散式追蹤 (Distributed Tracing) 技術,可以快速有效地定位問題。分散式追蹤允許我們追蹤請求流經的多個系統,並了解在哪個環節發生延遲或失敗。例如,當使用者執行 Single Sign-On(SSO)時,後續可能涉及多個系統與服務,如 Redis、Google SSO Service 和 PostgreSQL。如果出現登入延遲或失敗,分散式追蹤能幫助我們迅速找出是 Redis 連線逾時、Google SSO 回應過慢,還是資料庫壅塞的原因,從而提升故障排除的效率。

Trace Flow
一個 SSO 會涉及多個服務

Trace and span
Trace 由多個 Span 組成,每個 Span 代表一個操作,紀錄開始時間、結束時間、耗時、操作名稱、Tag 等資訊

目前主流的 Trace 規範是 OpenTelemetry,他是在 2019 年由兩個同樣是專注於 Trace 的專案 OpenCensusOpenTracing 合併而成。OpenTelemetry 除了訂定統一的 API 外,也提供各種語言的 SDK 用於產生 Trace 資料送至儲存 Trace 的後端服務。

Trace
在 Grafana 中查看 Trace 資訊

Jaeger

Jaeger 是 Uber 由開源的分散式追蹤工具,支援 OpenTelemetry 的資料格式,有完整的收集機制與查詢介面,但也可以單純作為儲存 Trace 的後端服務。

Jaeger Query
Jaeger Trace
Jaeger 的查詢介面

Grafana 支援 Jaeger Data Source,只要連接到 Jaeger Collector 即可查詢,無需切換到 Jaeger 的查詢介面。

Jaeger Data Source

範例 Lab 可以參考 https://github.com/blueswen/observability-ironman30-lab/tree/main/21-jaeger

Tempo

Grafana Labs 於 2020 年的 ObservabilityCON 釋出了 Tempo,它是一個開源的 Trace 儲存服務,能夠使用 Object Storage 作為儲存媒介,降低儲存成本。Tempo 提供了專屬的 TraceQL 查詢介面,並支援 Service Graph 功能,還可根據 Trace 資料計算 RED Metrics。

TraceQL

Tempo
Tempo 提供的 Service Graph 與 RED Metrics 功能

範例 Lab 可以參考 https://github.com/blueswen/observability-ironman30-lab/tree/main/20-tempo

Profiling

若要深入了解是哪一行程式碼、函數或物件導致效能瓶頸,Profiling 是很有效的方式。傳統上,Profiling 主要用於開發階段,但隨著技術進步,例如 eBPF 的發展,使得 Profiling 能夠應用於生產環境,並減少資源消耗的影響。

2023 年 3 月,Grafana Labs 收購了 Pyroscope,這是一個能持續監控程式片段 CPU 和記憶體使用狀況的工具。透過火焰圖 Flame Graph 進行視覺化,開發者可以輕鬆了解系統效能瓶頸。

Pyroscope
Pyroscope 收集的 Profiling 資訊

範例 Lab 可以參考 https://github.com/blueswen/observability-ironman30-lab/tree/main/25-profiles-and-ebpf#pyroscope


上一篇
Grafana Zero to Hero - Data Source:Relational Database
下一篇
Grafana Zero to Hero - Data Source:Observability Platform
系列文
Grafana Zero to Hero30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言