尝试一:用zabbix自带的模版net.tcp.listen
直接新建监控项,这种方式是直接去读取/proc/net/tcp,但取不到端口状态
从主机侧查看端口是正常listen
原因是内核会频繁的写/proc/net/tcp这个文件,导致读取不正常
尝试二:通过在本机自定义脚本
#!/bin/sh res=`/bin/netstat -an|grep $1|grep LISTEN|wc -l` if [ "$res" -gt 0 ] then { echo 1 } else { echo 0 } fi
自动以key
UserParameter=jiankong,/etc/zabbix/scripts/netstat.sh 9170
重启agent后,通过在proxy端,用zabbix_get获取数据一直为0
且agent日志总是提示没有该脚本执行权限
脚本已给与755,在zabbix用户下面手动执行结果正常未1,且配置文件中已定义UnsafeUserParameters=1
尝试三:在proxy端自定义脚本
# cd /home/zabbix/zabbix-agent/etc/scripts # cat check_port_status.sh tcping -t 2 $1 $2 | awk '{print $4 }'|awk -F"." '{print $1}'
自定义key值
# cd /home/zabbix/zabbix-agent/etc/zabbix_agentd.conf.d # cat port_check.conf UserParameter=port.check[*],/home/zabbix/zabbix-agent/etc/scripts/check_port_status.sh $1 $2
通过master端的zabbix_get执行获取结果正常
界面新增监控项,带入键值
port.check[192.168.12.12,9170]
监控成功
该方法可以通过一个脚本,监控任何主机的端口信息(只要网络能达)