zabbix agent 自定义KEY时,报错“Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all”
环境:Centos 6.4 X64 ,zabbix agent 2.4.2,YUM方式安装
在zabbix_agentd.conf里添加了一条监控项,用于统计系统当前各类TCP的连接数
UserParameter=custom.tcp.count[*],netstat -antpl | grep -i $1 | wc -l
重启代理进程后,发现监控里的值为0,使用命令验证KEY定义是否正确:
./zabbix_get -s 10.21.1.88 -p 10050 -k custom.tcp.count[TIME_WAIT]
返回错误信息如下:[日志里也能看到此信息]
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
zabbix agent是yum安装,该服务以zabbix用户启动的,初步怀疑应该是zabbix用户权限无法正常执行配置文件中自定义KEY里的命令。验证后发现, 原来是netstat -lantup里的-p参数需要root用户才能使用。
解决方法1:
取消netstat中的“-p”参数,重启agent后,数据正常
解决方法2:提升zabbix用户权限
考虑到监控系统中,可能还会遇到类似需要提升权限执行的操作,所以还是采取使用sudo提升用户权限。
*注意*:
1. 最好使用visudo -f /etc/sudoers 命令去配置。虽然visudo也是调用vi去编辑,但是保存时会进行语法检查,有错会有提示。 2./etc/sudoers文件是440只读权限,修改前先改权限为640,修改完成,再把权限恢复为440
编辑/etc/sudoers文件
#注释掉此行 Defaults requiretty #在最后加入如下行: zabbix ALL=(ALL) NOPASSWD: /bin/netstat #“NOPASSWD”表示zabbix用户在执行命令时,无需输入密码; # “/bin/netstat”,是zabbix用户可以root身份执行的命令,如果有多个,请用逗号分隔,这样的好处是做到权限的精细控制
sudo命令的具体使用参考:http://www.centoscn.com/CentOS/help/2014/0408/2741.html
转载于:https://blog.51cto.com/holiday98/1586566