在客户机上,当zabbix-server指示zabbix-agent执行命令的时候,不管是监控项里面的shell命令,还是报警之后执行的远程命令,往往都会执行不成功,主要原因就是被linux各种安全措施给拦截了。在redhat和centos中尤其明显。
一、程序,网络权限
比如下面是一个基于ncat(nc)命令的监控项,用来监控客户机能否连通某个TCP端口,探测远程端口是否开启。
该文件放置在/etc/zabbix/zabbix_agentd.d/ 下面
UserParameter=custom.ncat[*],nc -w 1 -z $1 $2 < /dev/null && echo "success"
然后当我使用zabbix-server远程执行这个命令的时候,就会被selinux拦住,报错如下
zabbix_get -s 192.168.2.169 -k "custom.ncat[172.17.0.2,3306]"
Ncat: Permission denied.
只有当我们在客户机上设置
setenforce 0
暂时停止掉selinux的拦截行为,才能得到正常的结果,但是关闭selinux会增加操作系统被入侵的风险,那么应该怎么办呢。
报错的意思说,zabbix-agent没有权限去调用ncat命令。但是注意