概述
建立一個簡單的 Grafana 儀表板, 以實現對日誌的快速搜尋.
有經驗的直接用 Grafana 的 Explore 功能就可以了.
但是對於沒有經驗的人, 他們如何能有一個已經預設了簡單的標籤搜尋的儀表板,以幫助一些團隊在排除故障時快速找到他們正在尋找的東西。雖然 Explore 很適合這個用例,但對於第一次使用的人,或者半夜收到告警的人來說,也可能有點令人生畏。
所以, 嘗試透過一些模板變數來建立一個展示日誌的 Grafana 儀表板.
步驟
實現概述
建立個 Logs Panel 的儀表板, 然後新增幾個變數, Logs Panel 的 LogQL 表示式引入這些變數.
建立變數
因為 Loki 和 Prometheus 共享一套 Label, 所以可以透過 Prometheus 的 Label 來作為 Loki 的變數. 如下圖:
這裡建立一個可以透過: namespace
, pod
, 日誌過濾條件
篩選日誌的儀表板:
namespace
變數, 透過該變數獲取所有的namespace
作為變數篩選條件:- Type:
Query
- DataSource: Prometheus
- Query:
label_values(kube_pod_info, namespace)
- Type:
pod
變數, 透過該變數獲取對應namespace
下的pod
作為變數篩選條件以縮小日誌搜尋空間:- Type:
Query
- DataSource: Prometheus
- Query:
label_values(container_network_receive_bytes_total{namespace=~"$namespace"},pod)
- Multi-value: 勾選;
- Include All option: 勾選
- Custom all value:
.*
- ?注意,使用
container_network_receive_bytes_total
作為指標名稱來尋找可用的pod,但你可以使用任何指標來代表你環境中的所有pod。
- Type:
search
變數, 透過該變數作為 LogQL 的管道過濾條件, 它被用來實際執行搜尋:- Type:
Text Box
- Default value:
rror
(命中Error
或error
)
- Type:
執行 LogQL
最後, 把上面的變數串聯起來, 新增 Logs Panel, 使用 Loki 作為資料來源, 並使用{namespace="$namespace", instance=~"$pod"} |~ "$search"
作為 LogQL. 如下:
所有這些加在一起,提供了一個漂亮而簡單的搜尋日誌的介面--不熟悉的人甚至不需要寫一個LogQL查詢!
再做一個檢視 Journal 日誌的
同樣, 再做一個檢視 Journal 日誌的:
建立變數
這裡直接使用 Loki 的 Label.
這裡建立一個可以透過: hostname
, unit
, 日誌過濾條件
篩選日誌的儀表板:
hostname
變數, 透過該變數獲取所有的hostname
作為變數篩選條件:- Type:
Query
- DataSource: Loki
- Query:
label_values(hostname)
- Multi-value: 勾選
- Include All option: 勾選
- Custom all value:
.+
- Type:
unit
變數, 透過該變數獲取對應hostname
下的unit
作為變數篩選條件以縮小日誌搜尋空間:- Type:
Query
- DataSource: Loki
- Query:
label_values({hostname=~"$hostname"}, unit)
- Multi-value: 勾選;
- Include All option: 勾選
- Custom all value:
.+
- ?注意,使用
container_network_receive_bytes_total
作為指標名稱來尋找可用的pod,但你可以使用任何指標來代表你環境中的所有pod。
- Type:
search
變數, 透過該變數作為 LogQL 的管道過濾條件, 它被用來實際執行搜尋:- Type:
Text Box
- Default value:
rror
(命中Error
或error
)
- Type:
執行 LogQL
最後, 把上面的變數串聯起來, 新增 Logs Panel, 使用 Loki 作為資料來源, 並使用{hostname=~"$hostname", unit=~"$unit"} |~ "$search"
作為 LogQL. 如下:
最終效果
最終效果如下:
和如下:
???
Grafana 系列文章
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.