设为首页 收藏本站
查看: 1603|回复: 0

nagios进程监控check_ps.sh

[复制链接]
累计签到:77 天
连续签到:1 天
发表于 2015-8-4 15:58:39 | 显示全部楼层 |阅读模式
nagios-plugins自带的有一个check_procs插件。用来做进程监控,不过该插件只能做已存在的进程fork超出多少个子进程的监控告警。而对进程是否存在不能做监控。对进程的监控可以借助check_ps.sh这个脚本去实现,而且其还可以配合pnp4nagios方便的出图。

使用方法是,打开check_ps.sh在nagios上的项目页 ,下载check_ps.sh。将其放到/usr/local/nagios/libexec目录。将check_ps.php放到/usr/local/pnp4nagios/share/templates目录。具体用法如下:

[iyunv@jjh-cc libexec]# ./check_ps.sh -h
check_ps.sh -p firefox [-w 10] [-c 20] [-t cpu]
Options:
  -p/--process)
     You need to provide a string for which the ps output is then
     then "greped".
  -w/--warning)
     Defines a warning level for a target which is explained
     below. Default is: off
  -c/--critical)
     Defines a critical level for a target which is explained
     below. Default is: off
  -t/--target)
     A target can be defined via -t. Choose between cpu and mem.
     Default is: mem

默认告警阀值是对内存的,可以通过-t参数设置为对cpu告警。也可以只对输出值做监控,不做告警。如下:

[iyunv@cc libexec]# /usr/local/nagios/libexec/check_ps.sh -p 'JjhControlServerMain'
OK - Process: JjhControlServerMain, User: www, CPU: 1.0%, RAM: 31.2%, Start: Nov30, CPU Time: 8049 min | 'cpu'=1.0 'memory'=31.2 'cputime'=8049

上面是监控的一个java程序及其输出。配合check_ps.php模板,输出的图样如下:
281.png
不过官方上传的模板写的有一个小错误,多了一个连接符。导致模板使用时会报错:Notice: Undefined offset: 2  。正确的模板代码如下:

<?php
$opt[1] = "--vertical-label "percent" -u 100 -l 0 -r --title "CPU/Memory Usage for $hostname / $servicedesc" ";
$opt[2] = "--vertical-label "minutes" -u 100 -l 0 -r --title "cputime for $hostname / $servicedesc" ";
$def[1] =  "DEF:cpu=$rrdfile:$DS[1]:AVERAGE " ;
$def[1] .=  "DEF:memory=$rrdfile:$DS[2]:AVERAGE " ;
$def[2] =  "DEF:cputime=$rrdfile:$DS[3]:AVERAGE " ;      #该句前面没有'.'连接符,官方上传的有,会报错
$def[1] .= "COMMENT:"\t\t\tLAST\t\t\tAVERAGE\t\t\tMAX\n" " ;
$def[2] .= "COMMENT:"\t\t\tLAST\t\t\tAVERAGE\t\t\tMAX\n" " ;
$def[1] .= "LINE2:cpu#E80C3E:"CPU\t\t" " ;
$def[1] .= "GPRINT:cpu:LAST:"%6.2lf %%\t\t" " ;
$def[1] .= "GPRINT:cpu:AVERAGE:"%6.2lf \t\t" " ;
$def[1] .= "GPRINT:cpu:MAX:"%6.2lf \n" " ;
$def[1] .= "LINE2:memory#008000:"Memory\t" " ;
$def[1] .= "GPRINT:memory:LAST:"%6.2lf %%\t\t" " ;
$def[1] .= "GPRINT:memory:AVERAGE:"%6.2lf \t\t" " ;
$def[1] .= "GPRINT:memory:MAX:"%6.2lf \n" " ;
$def[2] .= "AREA:cputime#E80C3E:"CPUTime\t" " ;
$def[2] .= "GPRINT:cputime:LAST:"%6.2lf min\t\t" " ;
$def[2] .= "GPRINT:cputime:AVERAGE:"%6.2lf min\t\t" " ;
$def[2] .= "GPRINT:cputime:MAX:"%6.2lf min\n" " ;
?>

该脚本有一个缺点:对于多进程的进程名的监控输出结果不准确。如nginx进程,其可能有多个子进程,我们想要输出所有nginx进程一共使用的CPU和MEM的多少,该脚本就不对了。具体如下:

root@test:#./check_ps.sh -p nginx
OK - Process: nginx, User: root, CPU: 0.0%, RAM: 0.7%, Start: Oct17, CPU Time: 7 min | 'cpu'=0.0 'memory'=0.7 'cputime'=7
root@test:#ps auxf|grep nginx
root     12732  0.0  0.0 103244   796 pts/1    S+   10:30   0:00                      _ grep nginx
root     31302  0.0  0.7  70836 27992 ?        Ss   Oct17   0:07 nginx: master process /App/nginx/sbin/nginx -c /App/nginx/conf/nginx.conf
www      32610  2.6  1.4  96804 55452 ?        S    Dec07  88:56  _ nginx: worker process
www      32611  2.5  1.4  96804 55508 ?        S    Dec07  87:17  _ nginx: worker process
www      32612  2.8  1.4  96276 55108 ?        S    Dec07  96:41  _ nginx: worker process
www      32613  2.7  1.4  96980 55800 ?        S    Dec07  92:02  _ nginx: worker process
root@test:#./check_ps.sh -p 'nginx: worker process'
OK - Process: nginx: worker process, User: www, CPU: 2.6%, RAM: 1.4%, Start: Dec07, CPU Time: 5338 min | 'cpu'=2.6 'memory'=1.4 'cputime'=5338

不过既然是一个shell脚本,想要实现上面对类nginx这样的情况的监控,稍加修改脚本即可实现。只不过多一个sum求和操作,在此不再赘述。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-94136-1-1.html 上篇帖子: nagios 监控关键进程 下篇帖子: CentOS6.6 Install Nagios
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表