Grafana 系列 - 统一展示 -6-Zabbix 仪表板
本文最后更新于:2024年7月24日 晚上
系列文章
📝Notes:
关于 Grafana 系列 - 统一展示 -6-Zabbix 数据源, 其实已经在之前的文章: 使用 Grafana 统一监控展示 - 对接 Zabbix 里详细介绍过了, 感兴趣的请移步阅读.
知识储备
一个图表上的多个 Items
我们可以在 metric 字段内使用正则表达式来建立有大量 items 的图表。Grafana 使用 JavaScript 正则表达式实现。例如,如果你需要显示 CPU 时间(user、system、iowait 等),你可以在 Item 字段中使用这个 regex 创建图表:
1 |
|
另一种使用 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 个用大括号({}
)包裹的部分。
1 |
|
如:
1 |
|
每个部分都可以是对应 metric 的名称或*
(表示所有 metric)。
示例:
{*}
返回所有可用的主机组的列表{*}{*}
Zabbix 中的所有主机{Network}{*}
返回 group: Network 中的所有主机{Linux servers}{*}{*}
返回 Linux server group 中主机的所有应用程序{Linux Servers}{backend01}{CPU}{*}
返回 backend01 中属于 CPU 应用的所有 items。
你可以使用另一个变量作为查询的一部分。例如,你有一个变量group
,它返回主机组的列表,想用它来查询所选组的主机。下面是这种情况下的查询:
1 |
|
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 界面处理, 执行脚本, 认领该问题, 手动关闭… 可以说是非常强大了.
如下图: