系列文章
?Notes:
關於 Grafana系列-統一展示-6-Zabbix 資料來源, 其實已經在之前的文章: 使用 Grafana 統一監控展示 - 對接 Zabbix 裡詳細介紹過了, 感興趣的請移步閱讀.
知識儲備
一個圖表上的多個 Items
我們可以在 metric 欄位內使用正規表示式來建立有大量 items 的圖表。Grafana使用JavaScript正規表示式實現。例如,如果你需要顯示CPU時間(user、system、iowait等),你可以在Item欄位中使用這個regex建立圖表:
/CPU (?!idle).* time/
另一種使用regex的情況是比較不同主機的相同指標。使用/.*/
regex來顯示所有的指標或編寫你自己的過濾器。例如,我想顯示所有主機組中名稱以backend
開頭的主機的CPU系統時間。我使用/.*/
表示 Group,/^backend/
表示 Host,CPU system time
表示 Item。
Template Variable
你可以使用模板變數來建立高度可重用和互動的儀表盤。模板化的總體思路是允許Grafana從資料來源獲取不同的指標,並提供一種無需修改儀表盤就能即時改變的方法。對於Zabbix來說,這意味著你可以獲得主機組、主機、應用程式或專案的列表,並將其作為一個變數新增。
建立變數
Type: 預設情況下,Query 型別被選中。這意味著Grafana會向資料來源詢問變數的值。但也有一些其他型別:Interval(只是一個時間間隔),Data source(你可以切換資料來源,例如,如果你有一個以上的Zabbix例項,並且每個例項都作為資料來源新增到Grafana中),Custom(你可以為變數設定任何預定義的值)和Constant。
Query 格式
Zabbix資料來源中的模板變數查詢是一個字串,包含4個用大括號({}
)包裹的部分。
{host group}{host}{application}{item name}
如:
{Zabbix servers}{Zabbix server}{CPU}{*}
{Frontend}{web01.mydomain.com}{*}{*}
每個部分都可以是對應 metric 的名稱或*
(表示所有 metric)。
示例:
{*}
返回所有可用的主機組的列表{*}{*}
Zabbix 中的所有主機{Network}{*}
返回 group: Network 中的所有主機{Linux servers}{*}{*}
返回Linux server group 中主機的所有應用程式{Linux Servers}{backend01}{CPU}{*}
返回backend01中屬於CPU應用的所有 items。
你可以使用另一個變數作為查詢的一部分。例如,你有一個變數group
,它返回主機組的列表,想用它來查詢所選組的主機。下面是這種情況下的查詢:
{$group}{*}
Variables 用法
當你建立一個變數時,你可以把它作為資料來源查詢的一部分。Grafana也支援在不同的地方使用變數,如皮膚和 row 的標題、文字皮膚的內容等。
實戰
這裡以在 Grafana Dashboards - Zabbix DataSource 裡找到的第一個 Dashboard - Zabbix - Full Server Status(ID: 5363) 為例.
Variables
Group Variable
- Name: Group
- Type: Query
- Data source: zabbix
- Query Type: Group
- Group:
/env:[a-z].*/
這裡預設是/.*/
, 即所有的 Group, 但是可以根據實際情況, 編寫正則選擇部分 group, 如/env:[a-z].*/
就是選擇以env:[a-z]
開頭的group.
完整配置示例如下:
Host Variable
- Name: Host
- Type: Query
- Data source: zabbix
- Query Type: Host
- Group:
$Group
即根據 Group Variable 的結果進一步查詢 - Host:
/.*/
即查詢對應 Group 下的所有 Host
Disk Variable
- Name: Disk
- Type: Query
- Data source: zabbix
- Query Type: Application
Panel 查詢
? 對於不同版本的 Zabbix, Item 名字可能不盡相同, 需要按需調整.
如在我這裡, 該 Dashboard 的 Total memory panel 無法正常顯示. 需要將調整, 調整後如下:
- Query Mode: Metrics
- Group:
$Group
- Host:
$Host
- Application: Memory
- Item:
/Memory utilization|Available memory/
如下圖:
另外, 為了 Linux/Windows 指標的相容性, 對於 CPU 總數, Item 可以調整為:
Item: /Number of (CPUs|cores)/
Zabbix Problems
另外, Grafana Zabbix Plugin 還自帶 Zabbix Problems Panel. 可以和 Zabbix 的 Problems 對接, 實現較好的展示效果. 具體效果如下:
其具體的 Query 如下:
- Query Mode: Problems
- 然後:
Group
Host
Application
Problem
Tags
等按需填寫.
具體配置如下:
並且每個 Problem 還可以點選檢視詳情, 並跳轉回 Zabbix 介面處理, 執行指令碼, 認領該問題, 手動關閉... 可以說是非常強大了.
如下圖:
?️參考文件
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.