8

Grafana系列-统一展示-6-Zabbix仪表板 - 东风微鸣

 1 year ago
source link: https://www.cnblogs.com/east4ming/p/17390340.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Grafana系列-统一展示-6-Zabbix仪表板

📝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 编写.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK