Grafana系列-統一展示-6-Zabbix儀表板

東風微鳴發表於2023-05-11

系列文章

?Notes:

關於 Grafana系列-統一展示-6-Zabbix 資料來源, 其實已經在之前的文章: 使用 Grafana 統一監控展示 - 對接 Zabbix 裡詳細介紹過了, 感興趣的請移步閱讀.

知識儲備

一個圖表上的多個 Items

我們可以在 metric 欄位內使用正規表示式來建立有大量 items 的圖表。Grafana使用JavaScript正規表示式實現。例如,如果你需要顯示CPU時間(user、system、iowait等),你可以在Item欄位中使用這個regex建立圖表:

/CPU (?!idle).* time/

Zabbix multi items with regex

另一種使用regex的情況是比較不同主機的相同指標。使用/.*/ regex來顯示所有的指標或編寫你自己的過濾器。例如,我想顯示所有主機組中名稱以backend 開頭的主機的CPU系統時間。我使用/.*/表示 Group,/^backend/表示 Host,CPU system time 表示 Item。

Backend system time

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 的標題、文字皮膚的內容等。

Query with variables

實戰

這裡以在 Grafana Dashboards - Zabbix DataSource 裡找到的第一個 Dashboard - Zabbix - Full Server Status(ID: 5363) 為例.

Zabbix - Full Server Status

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.

完整配置示例如下:

Zabbix Group Variable

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/

如下圖:

Zabbix Panel Query

另外, 為了 Linux/Windows 指標的相容性, 對於 CPU 總數, Item 可以調整為:

Item: /Number of (CPUs|cores)/

Zabbix Problems

另外, Grafana Zabbix Plugin 還自帶 Zabbix Problems Panel. 可以和 Zabbix 的 Problems 對接, 實現較好的展示效果. 具體效果如下:

Problems Panel

其具體的 Query 如下:

  • Query Mode: Problems
  • 然後: Group Host Application Problem Tags 等按需填寫.

具體配置如下:

Zabbix Problems Pannel Config

並且每個 Problem 還可以點選檢視詳情, 並跳轉回 Zabbix 介面處理, 執行指令碼, 認領該問題, 手動關閉... 可以說是非常強大了.

如下圖:

Zabbix Problems Detail

?️參考文件

三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.

相關文章