关于在zabbix监测脚本中使用ps命令监控进程CPU使用率和内存使用率,获得数据为0的情况描述

前提:想自己编写zabbix监测脚本,然后通过配置模板的方式,实现对资源(cpu和内存)使用率高的进程进行监控。

过程描述:
zabbix版本为2.21,被监控主机操作系统为CentOS 6.4。
脚本中主要命令如下:
percent=0;

#通过脚本输入参数
process=$1;

#通过ps aux参数,获取CPU%和MEM%值,使用awk将第四行的MEM%值筛选出来
percent=ps aux | grep $process | grep -v grep | head -1 | awk '{print $4}';

echo $percent

问题描述:
发现在cli中运行上述脚本命令可以获取到进程资源使用率对应的数值。
但是脚本中包含相同命令条件下,执行脚本,却经常获得的数值为0.0,而仅仅只更改了脚本输入的$1,也就是输入进程名,脚本执行后,获得的数值往往不为0.0,而为正常数据。

影响:
由于在zabbix的web页面中,配置了关于该项数据的dataview,直接导致了dataview的数据展示不准确。

解决方法(待验证):
1.使用内置的zabbix变量proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>] 和proc.mem.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>]。

2.修改脚本中的命令,改用如下方法:
首先获取进程名对应的pid,再结合top运行如下命令:
top -b -n 1 -p $pid 2>&1 | awk -v pid=$pid '{if ($1 == pid)print $9}'

3.修改脚本中的命令,改用如下方法:
首先获取进程名对应的pid,再从/proc/$pid/目录下读取相关数据,进行计算获得。

后记:没有对以上三种解决方法进行验证,但是个人觉得还是使用zabbix内置变量配置模板为比较好的解决办法,毕竟个人能力有限,还是选择相信专业的zabbix吧。

猜你喜欢

转载自blog.51cto.com/kotori/2122511
今日推荐