Python脚本自定义zabbix agent监控项

在需要监控的机器上安装基本软件包

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel libffi-devel gcc gcc-c++ make cmake lrzsz -y

下载python

官网Download Python | Python.org

选择对应的版本进行下载

解压Python包

tar zxvf Python-3.12.5.tgz

.把 python 移动到/usr/local/目录下

mv Python-3.12.5 /usr/local/

.进入到python目录,编译安装:

cd /usr/local/Python-3.12.5/

./configure

make && make install

持久化PATH配置:

echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc

更新当前会话的环境配置

source ~/.bashrc

设置软链

ln -s /usr/local/bin/python3.12 /usr/bin/python3

.验证python 版本

python3 -V

升级pip

pip3 install --upgrade pip

.安装模块

pip3 install psutil

编写 Python 脚本

vim /usr/local/bin/zabbix_disk_net.py

完整 Python 脚本

#!/usr/bin/env python3

import psutil

import time

def get_disk_usage():

"""获取根分区磁盘使用率"""

disk_usage = psutil.disk_usage('/')

return disk_usage.percent # 返回磁盘使用百分比

def get_network_bandwidth():

"""计算 1 秒内的网络流量"""

net1 = psutil.net_io_counters()

time.sleep(1) # 休眠 1 秒

net2 = psutil.net_io_counters() #1s 内的接收流量,# KB/s

rx_speed = (net2.bytes_recv - net1.bytes_recv) / 1024 # KB/s

return f"{rx_speed:.2f}"

if name == "main":

import sys

if len(sys.argv) > 1:

if sys.argv1 == "disk":

print(get_disk_usage()) # 输出磁盘使用率

elif sys.argv1 == "net":

print(get_network_bandwidth()) # 输出网络带宽

chmod +x /usr/local/bin/zabbix_disk_net.py

配置 Zabbix Agent

vim /etc/zabbix/zabbix_agentd.conf

添加自定义 UserParameter:

UserParameter=disk.usage,/usr/local/bin/zabbix_disk_net.py disk UserParameter=net.bandwidth,/usr/local/bin/zabbix_disk_net.py net

重启 Zabbix Agent 使其生效

systemctl restart zabbix-agent

在zabbix web前端配置监控项即可