Loading

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

 

posted @ 2020-11-10 11:14  無奈de土豆  阅读(302)  评论(0)    收藏  举报