zabbix 获取不得自定义监控项目的值的解决方法
一、问题描述:
自定义监控脚本在 agent服务器上执行是正常的

但是通过zabbix server服务器上的zabbix_get 命令获取的都是为0。

脚本内容如下:
item=$1
port=$2
case "$item" in
redis_mem)
ps aux | grep "redis" | grep -v "grep" | grep -v "redis_loadbalance.sh" | awk '{sum+=$6}; END{print sum}';;
redis_cpu)
ps aux | grep "redis" | grep -v "grep" | grep -v "redis_loadbalance.sh" | awk '{sum+=$3}; END{print sum}';;
estab_conn)
ss -lantup | grep "redis" | grep ":${port} " | grep "ESTA" | wc -l;;
timewait_num)
ss -antup | grep "redis" | grep ":${port} " | grep "TIME-WAIT" | wc -l;;
redis_process)
ps aux | grep "redis" | grep ":${port}" | grep -v "grep" | grep -v "redisStatus.sh" | wc -l;;
*)
echo "error param";;
esac
二、 原因解释:
安装zabbix前需要创建zabbix账户,用来运行zabbix进程,如下图

zabbix_server 端要去获取 agent端的监控数据,也是通 zabbix这个账户远程获取的,zabbix这个账户对一些系统命令如ss、netstat等,不一定有执行权限。
三、解决办法
根据原因,就要修改这些系统命令的执行权限,可以通过 chmod +s 命令,修改系统命令ss、netstat等 在被其他用户调用时能以这个文件原来所属的用户级、用户的身份执行这个文件。
chmod +s /bin/netstat /usr/sbin/ss


浙公网安备 33010602011771号