Zabbix 4.2开始支持通过对PromQL语言原生的支持来实现对Prometheus导出工具的集成。此外,依赖性指标的引入,使得Zabbix能够以高效方式收集大量Prometheus指标:使用单一HTTP调用获取所有数据,而后将其作为主依赖监控项获取对应的相关指标。
Zabbix Prometheus 预处理选项
Zabbix 官方手册
https://www.zabbix.com/documentation/6.0/en/manual/config/items/itemtypes/prometheus
Prometheus node_exporter 二进制部署
1, 下载&部署
wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
tar -zvxf node_exporter-1.4.0.linux-amd64.tar.gz -C /usr/local/
mv node_exporter-1.4.0.linux-amd64 node_exporter
2,添加prometheus用户
groupadd prometheus
useradd -g prometheus -s /sbin/nologin prometheus
3,修改文件的属主属组
chown -R prometheus:prometheus /usr/local/ node_exporter/
4,systemctl 管理node_exporter
vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
5, 启动开机启动服务
systemctl enable node_exporter
systemctl start node_exporter
6,Web 访问 node_exporter指标数据
http://192.168.120.129:9100/metrics
Prometheus pattern 采集node_exporter内存指标
Zabbix上新增一个类型为HTTP代理的主监控项
1,配置HTTP Agent
名称 prometheus node_exporter{$PROME_URL}
键值 node.exporter[{$PROME_URL}]
主机宏变量
2,创建内存空余监控项
监控项名称 node_memory_MemFree_bytes
3,监控项预处理
node_memory_MemTotal_bytes 内存总量
node_memory_MemFree_bytes 内存空余
4,内存最新数据
Zabbix LLD(低级别发现)
利用Zabbix低级别自动发现规则自动发现文件系统和网卡监控项
文件系统监控LLD自动发现
1,创建主监控项,LLD自动发现依赖于主监控项
名称 prometheus node_exporter{$PROME_URL}
键值 node.exporter[{$PROME_URL}]
主机宏变量
2,创建文件系统LLD自动发现,依赖于上一步创建的主监控项
名称 prometheus disk discovery
键值 prometheus.disk.discovery
3,配置LLD自动发现数据预处理,监控类型为fstype="xfs"文件系统
node_filesystem_files{fstype="xfs",device=~".*"}
node_exporter filesystem 指标数据
node_filesystem_free_bytes{device="/dev/mapper/klas-root",fstype="xfs",mountpoint="/"} 2.17331712e+10
node_filesystem_free_bytes{device="/dev/vda1",fstype="xfs",mountpoint="/boot"} 8.48093184e+08
node_filesystem_free_bytes{device="tmpfs",fstype="tmpfs",mountpoint="/run"} 1.510940672e+09
node_filesystem_free_bytes{device="tmpfs",fstype="tmpfs",mountpoint="/run/user/0"} 3.05668096e+08
node_filesystem_free_bytes{device="tmpfs",fstype="tmpfs",mountpoint="/tmp"} 1.528344576e+09
4,LLD自动发现宏变量
{#FSNAME} $.labels["mountpoint"]
5,创建文件系统空余监控项原型
监控项原型名称 node_filesystem_free_bytes on {#FSNAME}
监控项原型键值 node_filesystem_free_bytes[{#FSNAME}]
6,创建文件系统空余空间监控项原型预处理
node_filesystem_free_bytes {mountpoint="{#FSNAME}"}
7,创建文件系统总量监控项原型
监控项原型名称 node_filesystem_size_bytes on {#FSNAME}
监控项原型键值 node_filesystem_size_bytes[{#FSNAME}]
8,创建文件系统总量空间监控项原型预处理
node_filesystem_size_bytes {mountpoint="{#FSNAME}"}
9,文件系统最新数据
网络监控LLD自动发现
1,创建网络LLD自动发现,依赖于主监控项
名称 prometheus network discovery
键值 prometheus.network.discovery
2,配置LLD自动发现数据预处理
node_network_device_id{device=~".*"}
node_exporter network指标数据
# HELP node_network_device_id device_id value of /sys/class/net/.
# TYPE node_network_device_id gauge
node_network_device_id{device="br0"} 0
node_network_device_id{device="ens192"} 0
node_network_device_id{device="lo"} 0
node_network_device_id{device="virbr0"} 0
node_network_device_id{device="virbr0-nic"} 0
node_network_device_id{device="vnet0"} 0
3,LLD自动发现宏变量
#INTERFACE} $.labels["device"]
4,过滤不需要监控网卡
5,创建网络receive监控项原型
监控项原型名称 node_network_receive_bytes_total on {#INTERFACE}
监控项原型键值 node_network_receive_bytes_total[{#INTERFACE}]
6,创建网络receive监控项原型预处理
node_network_receive_bytes_total {device="{#INTERFACE}"}
7,创建网络transmit监控项原型
监控项原型名称
node_network_transmit_bytes_total on {#INTERFACE}
监控项原型键值
node_network_transmit_bytes_total[{#INTERFACE}]
8,创建网络transmit监控项原型预处理
node_network_transmit_bytes_total {device="{#INTERFACE}"}
9,创建网络图形原型
10,网卡最新数据