首页 > 代码库 > zabbix agent 自定义KEY执行报错

zabbix agent 自定义KEY执行报错


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


本文出自 “生命不息” 博客,请务必保留此出处http://holiday98.blog.51cto.com/2088075/1586566

zabbix agent 自定义KEY执行报错