关于在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吧。

原文地址:http://blog.51cto.com/kotori/2122511

时间: 2024-10-01 03:18:39

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

Android中使用ps命令查看进程PID

adb shell "ps | grep com.sina.weibo" 这个命令可以看到微博的应用线程信息. PID:进程号 PPID:父进程号 VSIZE:进程的虚拟内存大小 RSS:进程分配到的物理内存大小 WCHAN:进程正在睡眠的内核函数名称,干函数的名称是从/root/system.map文件中获得的. NAME:进程名 原文地址:https://www.cnblogs.com/LoganChen/p/11579375.html

Zabbix在Docker中的应用和监控

目录 Zabbix在Docker中的应用和监控 一.如何使Zabbix跑在Docker里 1.Docker基础环境配置 2.Docker-compose安装配置 3.启动zabbix server 4.基本配置 二.使用Zabbix监控Docker 1.部署方式 2.模块方式 3.使用Docker Agent方式 4.关联模版 转载文档 Zabbix在Docker中的应用和监控 一.如何使Zabbix跑在Docker里 Zabbix官方很早之前就提供里Zabbix的Docker镜像,而且提供里具

详解linux中的ps命令

Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令. 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵死.哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执

shell脚本中常用的命令:wget、curl、ss、lsof、nmap、nc、netstat、telnet

shell脚本中常用的命令:wget.curl.ss.lsof.nmap.nc.netstat.telnet 实验环境说明: (1)远程nginx服务器IP:192.169.5.136,nginx服务使用的端口是80: (2)本地ceshiji的IP: 192.169.5.121 在服务器本地监控服务端口常见命令:netstat.ss.lsof(简称三'S') 举例说明常用命令的选项: (1)[[email protected] ~]# netstat -lnp |grep nginx tcp

linux中的ps命令用法。

在linux中使用ps命令可以查看有哪些进程在运行和运行的状态.进程是否结束.进程有没有僵尸.哪些进程占用了过多的资源等等. ps命令最常用的是用于监控后台进程的工作情况. 名称:ps 使用权限:所有使用者 使用方式:ps [options] [--help] 说明:显示瞬间行程 (process) 的动态 参数: ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 -A 列出所有的行程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程

大开测试:性能- 如何在脚本中加入DOS命令(连载17)

7.17  如何在脚本中加入DOS命令 1.问题提出 在没有Windows操作系统之前,人们应用的是DOS操作系统,那么也可以在LoadRunner的VuGen脚本中加入DOS命令,方便脚本对业务的灵活处理. 2.问题解答 DOS是磁盘操作系统(Disk Operation System)的简称.在大量的应用领域中,DOS仍有相当的市场.尤其值得初学者重视的是,DOS中关于文件的目录路径.文件的处理.系统的配置等许多概念,仍然在Windows中沿袭使用,甚至在Windows出现故障时,还会用到基

[转帖]Linux ps 命令查看进程启动及运行时间

ps -eo pid,lstart,etime,cmd |grep dotnet |grep -v grep https://www.cnblogs.com/weifeng1463/p/8807849.html 都是脚本呢. 需要学习. 引言 同事问我怎样看一个进程的启动时间和运行时间,我第一反应当然是说用 ps 命令啦.ps aux或ps -ef不就可以看时间吗? ps aux选项及输出说明 我们来重新复习下ps aux的选项,这是类 BSD 风格的命令选项,因为不带“-”. 通过 man 可

Crontab执行脚本中的ssh命令访问被拒绝

我们经常会通过crontab来执行定时任务,通常生产环境中在不同主机直接进行登录是通过ssh来连接的.比如我们通过在备份服务器上设定定时任务,定期通过scp(使用SSH的远程拷贝命令)来拷贝远程服务器的数据到备份服务器上,这也是我遇到的一个事情. 环境描述: 脚本与定时任务: 定时任务设置如下: 无论是否执行成功,都把信息输出到2222.txt中 脚本内容如下: 我这里仅用ssh命令来测试,实际上这个命令如果可以正常执行的话,你执行scp命令也一样 #!/bin/bash ssh -v 192.

脚本中调用top命令

Linux系统中top命令是交互式命令,故脚本中执行时会卡住,不再执行下一个命令. 解决办法是:top -n 1. 命令使用详解: 1.简介 显示系统当前的进程和其他状况: top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间 对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. 2.用法 2.1使用格式 n][n 设置退出前屏幕刷新的次数 top输出编排成适合输出到文件的格式,可以使