fumingxia 发表于 2015-9-8 08:51:15

nagios监控特定进程,check_nrpe

  在Nagios服务端:
  /usr/local/nagios/libexec
  执行
  # ./check_nrpe -H 192.168.1.***(被监控主机内网IP)
  返回:
  Connection refused by host
  =========================
  http://www.zhouwenyi.com/node/11358
  今天公司需要监控淘客宝手机短信进程,写了个小脚本可以利用Nagios来进行监控:
0:OK
2: Critical
# cat check_php
#!/bin/sh
phpcount=$(ps aux | grep '/usr/local/php/bin/php'| grep -v 'grep' | wc -l)
if [ $phpcount != 2 ]; then
      echo "Critical! Taokebao_sms IS died"
      exit 2
else
      echo "OK! Taokebao_sms IS alive"
      exit 0
fi
  
  
  
  
  http://pesen.blog.iyunv.com/4575807/812635
  
  nagios监控应用的进程。为什么要监控进程呢?这是因为对于一些应用,它通过程序本身来进行通讯,既不开启端口也没有输出,这让我们熟悉了nagios监控端口和输出的人无从下手,只好监控应用的进程了。在这儿我以keepalived为例,整理一下监控进程的方法。
  我采用的是nrpe的方法进行的监控。当然,也可以采用nagios自己定义的command来进行监控。不过自定义command监控就涉及到了监控机与被控机连接信任的问题。多了几个配置步骤,而且使用自定义command的时候还要传递参数,稍微反锁了一点。有现成的nrpe简单的多。做法如下:
  1、被监控机
  编辑nrpe配置文件:
  


[*]vi /usr/local/nagios/etc/nrpe.cfg
  在文件末尾添加:
  


[*]command=/usr/local/nagios/libexec/check_keepalived
  在nagios插件目录下创建脚本文件:
  


[*]vi /usr/local/nagios/libexec/check_keepalived
  添加如下内容:
  


[*]#!/bin/sh
[*]KPD=`ps aux | grep 'keepalived -D' |grep -v grep |wc -l`
[*]if [ $KPD != 2 ] //进程数的设定以自己系统当中的数量为准
[*]then
[*]echo "Critical!Keepalived process count is $KPD"
[*]exit 2
[*]fi
[*]echo "OK . Keepalived process count is $KPD"
[*]exit 0
  保存退出。
  更改属主和属组,增加可执行权限:
  


[*]chown nagios:nagios /usr/local/nagios/libexec/check_keepalived
[*]chmod +x /usr/local/nagios/libexec/check_keepalived
  重启nrpe:
  


[*]killall -9 nrpe
[*]ps -ef | grep nrpe
[*]/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
[*]ps -ef | grep nrpe
  2、nagios监控机设置
  
  定义主机组---根据个人需求定义
  


[*]vi /usr/local/nagios/etc/objects/yidongIDC/hosts.cfg //这是我自己定义的配置文件,刚安装的nagios没有这个文件。需要自己创建,并且将配置文件添加到nagios.cfg主配置文件中。具体写法为:cfg_file=[配置文件全路径]。
  添加如下内容(members中涉及到的主机已经在上面定义了):
  


[*]define hostgroup{
[*]hostgroup_name keepalived-servers
[*]alias The servers who have keepalived service
[*]members web110,web111,localhost,web115
[*]}
  创建监控keepalived服务的配置文件
  


[*]vi /usr/local/nagios/etc/objects/yidongIDC/keepalived_monitor.cfg
  添加如下内容:



[*]define service{
[*]use generic-service
[*]hostgroup_name keepalived-servers
[*]service_description CHECK_KEEPALIVED
[*]is_volatile 0
[*]max_check_attempts 2
[*]normal_check_interval 2
[*]retry_check_interval 1
[*]check_command check_nrpe!check_keepalived
[*]}
  更该文件属主属组,更改权限
  


[*]chown nagios:nagios /usr/local/nagios/etc/objects/yidongIDC/keepalived_monitor.cfg
[*]chmod 755 /usr/local/nagios/etc/objects/yidongIDC/keepalived_monitor.cfg
  重置nagios



[*]/etc/init.d/nagios reload
  至此配置完成。监控效果如下图:


  本文出自 “运维之道” 博客,请务必保留此出处http://pesen.blog.iyunv.com/4575807/812635
  
  
  
  http://blog.iyunv.com/yuanxuran0101/article/details/5844967
  安装完nagios后准备监控被监控服务器上的某一程序,脚本通过查看进程状态返回状态值,并传送给nagios,来达到监控目的。
  nagios每个插件监控会返回以下状态值,我只用到了 0 、1、 2
  #!/bin/bash -x
  # Exit values:
# ------------
#    0OK
#    1Warning
#    2Cirital
#    3Unknown
#    Others Unknown
  ##############################################
  dfs_process=`ps -ef | grep './dfs client' | grep -v grep`
if [ -z "$dfs_process" ];then
      echo "Critical the program of gather is down !!!"
      exit 2
fi
  process_ppid=`echo $dfs_process|awk '{print $3}'`
process_pid=`echo $dfs_process|awk '{print $2}'`
  if [ $process_ppid = 1 ];then
      echo 'The process of dfs put back'
      exit 1
else
      while [ $process_ppid != 1 ]
                do
                old_process_ppid=$process_ppid
                process_ppid=`ps -ef | grep $process_ppid | grep -v $process_pid | grep -v grep | awk '{print $3}'`
                process_pid=`ps -ef | grep $old_process_ppid| grep -v $process_pid | grep -v grep|awk '{print $2}'`
                done
      dfs_pprocess=`ps -ef | grep "$process_pid   1" | grep -v grep`
      echo "process of './dfs client' OK ! - Parent process is `echo $dfs_pprocess | awk '{print $8,$9,$10}'`"
      exit 0
  fi
  
  然后打开被监控端nrpe的配置文件
  # vi /usr/local/nagios/etc/nrpe.cfg
  添加:
  command=/usr/local/nagios/libexec/check_dfs.sh
  
  就可以在监控端定制监控服务(service.cfg)了
  
  http://blog.sina.com.cn/s/blog_659b48590100n2qj.html
  


用到的脚本为安装后nagios/libexec 目录下的 check_procs



check_procs -w 2:2 -c 1:1024 -C test -u test



用户为test进程名为 test 的 进程在 2:2 这个范围以外警告,在1:1024 范围以外报警



详解等- -

http://www.cnblogs.com/oubo/archive/2011/12/12/2394634.html

  例如:需要监控Mysqld后台服务进程是否启动 修改/usr/local/nagios/etc/nrpe.cfg文件,在最后面添加如下一行:



command=/usr/local/nagios/libexec/check_procs -c 2:2 -a mysqld
  
  再修改/usr/local/nagios/etc/objetc/services.cfg,加入以下配置:





# Define services to Mysqld
define service{
      use                                  local-service         ; Name of service template to use
      #host_name                           192.168.0.36
      hostgroup_name                     mysql-servers
      service_description                  Mysql Server
      contact_groups                     admins;Monitors         ; Notifications get sent to the admins by default
      check_command                        check_nrpe!check_mysqld
}



  再重启nagios服务即可;



sudo /etc/init.d/nagios restart





http://hi.baidu.com/zjx416/item/44474b1004b33038b831802f






nagios plugins 之check_procs


  旨在帮助和我一样的菜鸟,高手请绕道!
  用法:
  
  Usage: check_procs -w <range> -c <range> [-m metric] [-s state] [-p ppid][-u user] [-r rss] [-z vsz] [-P %cpu] [-a argument-array]
  [-C command] [-t timeout] [-v]
  现在就来解释下逐个参数的意思
  -w -c 大家都知道,设置警告和严重警告的范围。一般都是设置一个数字,这样设置的话,进程数比设置的更大才报,比如
  
  
  # ./check_procs -w 84 -c 90
  PROCS OK: 83 processes
  
  
  还具有另一种写法
  
  # ./check_procs -w 84: -c :90
  PROCS WARNING: 83 processes冒号的意思是大于或者小于,这里的意思是小于84 或 大于90 报警
  -m 以什么来衡量报警,后面的参数有
  
  PROCS   - number of processes (default)以进程的数量(默认)
  VSZ   - virtual memory size占用虚拟内存的大小
  RSS   - resident set memory size占用物理内存的大小
  CPU   - percentage CPU 占用CPU的比例
  -s以进程的状态加以区分,进程的状态有很多种,详细可ps -exX 查看
  -p进程的父进程
  -u进程的UID
  -r实际使用的物理内存
  -z 虚拟内存
  -P 占用CPU
  -a设定字符串
  -C 进程的命令
  -t超时设定
  -a 的缺点:很多时候,我们要监控一个进程是否正常,这个时候很多人都喜欢用-a 加上自己进程的参数名称来监控,这样做其实很容易引起不必要的报警,它会找出所有符合设定的字符串的进程,比如,我们在vi一个同名的文件或者查看该目录下的文件时:
  
  
  # ./check_procs-w 1: -c :2 -a mysqld
  PROCS CRITICAL: 3 processes with args 'mysqld'
  
  这个时候用-C是更准确的:
  
  # ./check_procs-w 1: -c :2 -C mysqld
  PROCS OK: 1 process with command name 'mysqld'






==============================



http://space.itpub.net/27043155/viewspace-732183

  NRPE分为两部分:
  
  u      check_nrpe插件,位于监控机器Nagios本地;
  u      NRPE守护进程,位于远程被监控的Linux/Unix主机;
  
     当Nagios需要从远程Linux/Unix主机监控服务资源时,需要进行以下步骤:
  
  n      Nagios将会执行check_nrpe插件,并且告诉它什么样的服务需要监测;
  n      插件check_nrpe将会联系远程主机的NRPE守护进程,根据需要可以选择SSL保护连接;
  n      NRPE守护进程选择适当的Nagios插件监测服务或者资源;
  n      服务检测的结果将会通过check_nrpe插件传递到NRPE守护进程,换句话说就是将被监控主机上监控的结果传回到Nagios的守护进程;
  
     这里需要说明的一点是NRPE需要将Nagios插件安装在远程的Linux/Unix主机上,如果没有安装这些插件,那么NRPE守护进程什么也干不了。
页: [1]
查看完整版本: nagios监控特定进程,check_nrpe