zabbix 1.6.5:
在zabbix_agentd.conf里添加了一条监控项:
UserParameter=router_est,netstat -lantup|grep router|grep -c EST
重启代理进程后,发现监控里的值为0,看了下日志发现不停地输出如下的log:
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
一直没找到问题所在,开始以为是版本过低,对某些符号的组合不支持.但是添加item的时候既然是active的,那说明是支持的,否则会显示not support了.
用最新版1.8.2的agentd进程试了下也不行,后来su到zabbix用户执行了一下该命令,才发现了问题所在. 原来是netstat -lantup里的-p参数需要root用户才能使用,所以结果值总是为0.
修改如下:
UserParameter=router_est,netstat -an|awk '$4~/:5102[1-4]/&&/EST/{t++}'END'{print t}'
重启后正常了.
(其实前面的统计方法"netstat -lantup|grep router|grep -c EST"也不十分精确,所以后面统计命令也有改动)
不能使用root,有时候执行一些命令还确实不方便.为了能让zabbix执行一些需要root才能支持的命令、参数等,只有使用sudo,解决步骤如下:
# groupadd monitor
# usermod -G zabbix
# visudo -f /etc/sudoers #增加最后两行,并且注释掉Defaults requiretty
#Defaults requiretty #一定要注释掉
Cmnd_Alias MONITORING = /bin/netstat,/sbin/sudo #以后还需要添加什么命令添加到后面即可
%monitor ALL=(root) NOPASSWD:MONITORING
这样就可以以root的身份来使用netstat中的-p参数了,不会再有提示. zabbix_agentd.conf中内容:
UserParameter=router_est,netstat -an|awk '$4~/:5102[1-4]/&&/EST/{t++}'END'{print t}'
UserParameter=router_est_test,sudo netstat -lantup|awk '$4~/:5102[1-4]/&&/EST/&&/router/{t++}'END'{print t}'
阅读(9883) | 评论(0) | 转发(0) |