现象:zabbix添加自动发现端口,提示Value should be a JSON object.
用zabbix_get提示: (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_get -s 127.0.0.1 -k tcp_port_listen
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
{
"data": [
{
"{#TCP_PORT}": "3306"
},
{
"{#TCP_PORT}": "80"
},
{
"{#TCP_PORT}": "10051"
},
{
"{#TCP_PORT}": "22"
},
{
"{#TCP_PORT}": "10050"
}
]
}
原因为python脚本中使用了netstat -p参数,权限问题,zabbix_agentd是zabbix用户启动的,默认不能执行netstat -p等命令,导致从服务器取到的自动发现脚本为空。
解决办法: chmod +s /bin/netstat
为了方便普通用户执行一些特权命令,SUID/SGID程序允许普通用户以root身份暂时执行该程序,并在执行结束后再恢复身份。chmod +s 就是给某个程序或者教本以suid权限。