使用Zabbix监控Node Exporter(Prometheus)的数值

这是Zabbix AdcentCalendar 2019的第15篇文章。

即使无需使用Zabbix代理,只要在安装了Prometheus的Node Exporter的服务器上,就可以在Zabbix中进行监视。

新增的功能

在Zabbix 4.0以后,添加了一些功能,使得可以通过Zabbix的标准功能进行更多样化的监控。

通过使用类型为”HTTP代理”的项目(监视设置),可以发送HTTP请求,并将其结果作为项目的值。这样一来,就可以调用Web服务等,从结果中提取字符串和值,以确定是否正常以及获取度量标准。

此外,由于Web服务中的响应采用JSON格式,因此还加强了从中提取值的灵活性。这称为保存前处理,它是一种从获取的值中进行处理,然后将其保存为项目值的功能。保存前处理功能支持数值计算、字符串转换以及处理JSON的JSONPath功能。因此,我们可以从Web服务接收到的值中灵活地提取所需的值,这些值可能是数值,也可能是特定属性的字符串值,我们可以对其进行监视。

除此之外,在Zabbix 4.4中还可以使用JavaScript进行保存前处理,并对Prometheus进行功能扩展。

通过利用它们,可以从Prometheus的Node Exporter接收信息,并像普通的Zabbix代理一样使用它来监控服务器的状态。

让我们尝试进行监视设置。

在Zabbix 4.4中,已经提供了与Prometheus的Node Exporter兼容的监控模板,因此我们可以使用它来进行监控。

引入环境

这次我们将在CentOS 8上安装Node Exporter。
为了简化说明,我们将禁用SELinux,但请考虑设置适当的策略。

安装Node Exporter

下载Node Exporter的可执行文件,并将其放置在/opt/node_exporter目录下。

# wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
# tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz
# mv node_exporter-0.18.1.linux-amd64/ /opt/node_exporter
# ls /opt/node_exporter/
LICENSE  NOTICE  node_exporter
#

为了将启动用户设置为“prometheus”用户,我们将创建一个用户。

# useradd prometheus

创建用户后,将Node Exporter执行文件的所有者设为prometheus。

# chown -R prometheus:prometheus /opt/node_exporter/

我們還將執行自動啟動的設定。

# vi /usr/lib/systemd/system/node_exporter.service
# systemctl daemon-reload
# systemctl start node_exporter

我已经将/usr/lib/systemd/system/node_exporter.service的内容修改如下。

[Unit]
Description=Node Exporter for Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/opt/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

默认情况下,node_exporter会在9100端口上接受请求,因此在firewalld的设置中将其配置为可访问。

# firewall-cmd --add-port=9100/tcp --zone=public --permanent
# firewall-cmd --reload

注册主机和监控模板的链接

在Zabbix中注册主机。

add-host.png

在主机注册时,我还会附加一个指向模板的链接。
可链接的模板是「Template OS Linux by Prom」。

add-host-temp.png

由于Node Exporter的端口号等信息是在模板宏中设置的,因此如果根据主机而更改端口号的话,可以通过在主机宏中进行覆写来进行监控,并且能够根据各个主机的信息来进行监视。

过一段时间,选择注册的主机并在「最新数据」中显示,监视项目的值开始获取。

item-data.png

最后

尽管本次只介绍了Node Exporter,但将来可能会创建其他Exporter的监控模板。
可能已经有其他人创建了这样的模板,但我也希望自己能研究并创建出来。

明天会是谁呢?
请多多关照。

bannerAds