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

[root@VM0362 libexec]# 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.51cto.com/4575807/812635

 

nagios监控应用的进程。为什么要监控进程呢?这是因为对于一些应用,它通过程序本身来进行通讯,既不开启端口也没有输出,这让我们熟悉了nagios监控端口和输出的人无从下手,只好监控应用的进程了。在这儿我以keepalived为例,整理一下监控进程的方法。

我采用的是nrpe的方法进行的监控。当然,也可以采用nagios自己定义的command来进行监控。不过自定义command监控就涉及到了监控机与被控机连接信任的问题。多了几个配置步骤,而且使用自定义command的时候还要传递参数,稍微反锁了一点。有现成的nrpe简单的多。做法如下:

1、被监控机

编辑nrpe配置文件:

 

  1. vi /usr/local/nagios/etc/nrpe.cfg 

在文件末尾添加:

 

  1. command[check_keepalived]=/usr/local/nagios/libexec/check_keepalived 

nagios插件目录下创建脚本文件:

 

  1. vi /usr/local/nagios/libexec/check_keepalived 

添加如下内容:

 

  1. #!/bin/sh 
  2. KPD=`ps aux | grep 'keepalived -D' |grep -v grep |wc -l` 
  3. if [ $KPD != 2 ] //进程数的设定以自己系统当中的数量为准 
  4. then 
  5. echo "Critical!Keepalived process count is $KPD" 
  6. exit 2 
  7. fi 
  8. echo "OK . Keepalived process count is $KPD" 
  9. exit 0 

保存退出。

更改属主和属组,增加可执行权限:

 

  1. chown nagios:nagios /usr/local/nagios/libexec/check_keepalived 
  2. chmod +x /usr/local/nagios/libexec/check_keepalived 

重启nrpe

 

  1. killall -9 nrpe 
  2. ps -ef | grep nrpe 
  3. /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d 
  4. ps -ef | grep nrpe 

2nagios监控机设置

 

定义主机组---根据个人需求定义

 

  1. vi /usr/local/nagios/etc/objects/yidongIDC/hosts.cfg //这是我自己定义的配置文件,刚安装的nagios没有这个文件。需要自己创建,并且将配置文件添加到nagios.cfg主配置文件中。具体写法为:cfg_file=[配置文件全路径]。 

添加如下内容(members中涉及到的主机已经在上面定义了):

 

  1. define hostgroup{ 
  2. hostgroup_name keepalived-servers 
  3. alias The servers who have keepalived service 
  4. members web110,web111,localhost,web115 

创建监控keepalived服务的配置文件

 

  1. vi /usr/local/nagios/etc/objects/yidongIDC/keepalived_monitor.cfg 

添加如下内容:

  1. define service{ 
  2. use generic-service 
  3. hostgroup_name keepalived-servers 
  4. service_description CHECK_KEEPALIVED 
  5. is_volatile 0 
  6. max_check_attempts 2 
  7. normal_check_interval 2 
  8. retry_check_interval 1 
  9. check_command check_nrpe!check_keepalived 

更该文件属主属组,更改权限

 

  1. chown nagios:nagios /usr/local/nagios/etc/objects/yidongIDC/keepalived_monitor.cfg 
  2. chmod 755 /usr/local/nagios/etc/objects/yidongIDC/keepalived_monitor.cfg 

重置nagios

  1. /etc/init.d/nagios reload 

至此配置完成。监控效果如下图:

本文出自 “运维之道” 博客,请务必保留此出处http://pesen.blog.51cto.com/4575807/812635

 

 

 

http://blog.csdn.net/yuanxuran0101/article/details/5844967

安装完nagios后准备监控被监控服务器上的某一程序,脚本通过查看进程状态返回状态值,并传送给nagios,来达到监控目的。

nagios每个插件监控会返回以下状态值,我只用到了 0 、1、 2

#!/bin/bash -x

# Exit values:
# ------------
#    0  OK
#    1  Warning
#    2  Cirital
#    3  Unknown
#    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[check_dfs]=/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[check_mysql]=/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 大家都知道,设置警告和严重警告的范围。一般都是设置一个数字,这样设置的话,进程数比设置的更大才报,比如

 

 

[root@udb151k libexec]# ./check_procs -w 84 -c 90 

PROCS OK: 83 processes

 

 

还具有另一种写法

 

[root@udb151k libexec]# ./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一个同名的文件或者查看该目录下的文件时:

 

 

[root@udb151k libexec]# ./check_procs  -w 1: -c :2 -a mysqld

PROCS CRITICAL: 3 processes with args 'mysqld'

 

这个时候用-C是更准确的:

 

[root@udb151k libexec]# ./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守护进程什么也干不了。

posted @ 2013-02-19 11:19  陳聽溪  阅读(2325)  评论(0)    收藏  举报