nagios监控对于大家而言,已经并不陌生,相信它工作的原理及相互间的调用关系也有一定的了解,在生产环境中,监控linux服务器很明显大家都知道可以借助nrpe来检测间接的监控。

其实,监控分为两类【自己理解定义】,一类是主动式,比如像pingssh之类,只需要监控主机执行相应的命令就可以实现监控;另一类是被动式,也就是监控主机这是抽象为了客户端用于接收数据,借助nrpe插件实现与被监控端的通信,比如像diskload等。

对于主动式的监控,自然主动在监控主机手里,参数的设置与修改自然不是问题,而对于被动式的监控,比如以前我想监控服务器的根分区使用情况,现在由于生产环境的改变需要去监控/home分区的使用,而且可能我磁盘使用的告警值也需要修改,如果还分别登录到被监牢主机上去修改相应的参数显然不是很明智的选择。如果我们监控主机能够变被动为主动,获得修改参数的权力,岂不很好,下面就来配置说明一下,供大家参考。

监控主机想变为主动,很明显,被监控主机要允许传参数,所以就要在被监控主机上下些功夫。

1、被监控主机上重新编译nrpe

./configure --enable-command-args

make all

make install-plugin

make install-daemon

make install-daemon-config

2、打开允许传递参数

dont_blame_nrpe=0 --- dont_blame_nrpe=1

3、设置带参数的检测指令[示例]

command[check_disk]=/usr/local/nagios/libexec/check_disk -w$ARG1$ -c $ARG2$ -p $ARG3$

4、reload nrpe,

kil -HUP `ps-ef |grep nrpe |grep -v grep | awk'{print $2}'`

###########################################################

下面就监控主机上的操作

注意,监控主机的其余配置不在此说明了,只简述与传参配置相关的。

1、先直接执行命令测试:

[root@localhost libexec]# /usr/local/nagios/libexec/check_nrpe -H 192.168.15.183 -c check_disk -a 20% 15% /

DISK OK - free space: / 14250 MB (79% inode=91%);|/=3645MB;15083;16025;0;18854

2、定义命令模板

vi /usr/local/nagios/etc/objects/commands.cfg

添加

define command {

command_name check_remote_disk

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_disk -a $ARG1$ $ARG2$ $ARG3$

}

3、修改主机配置文件

vi /usr/local/nagios/etc/objects/services.cfg

修改添加

define service{

use generic-service

host_name centos6

service_description check_load

check_command check_remote_load!20%!10%!/

}

4、检测语法,重载nagios


[root@localhost~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

[root@localhost~]# service nagios reload


附上被监控主机的安装及初始化脚本,

安装脚本:

#! /bin/bash
#install nagios-plugins,nrpe
#auth colynn.liu
echo 'install nagios-plugins,nrpe....'
wget  -t 3 -T 15 http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz
wget  -t 3 -T 15 http://nchc.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.13/nagios-plugins-1.4.13.tar.gz
useradd nagios -s /sbin/nologin -M
tar zxf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure --prefix=/usr/local/nagios
make && make install
cd ..
tar zxf nrpe-2.12.tar.gz
cd nrpe-2.12
sed -i '1657 s/^/\/\*/' src/nrpe.c
sed -i '1662 s/^/\*\//' src/nrpe.c
./configure --enable-command-args
make all
make install-plugin
make install-daemon
make install-daemon-config
echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.d/rc.local
echo "DONE."

通过参数实现更合理监控

#! /bin/bash
#
CONFFILE=/usr/local/nagios/etc/nrpe.cfg
MASTERIP=192.168.15.188
                                                                     
cd /usr/local/nagios/etc/  && cp  nrpe.cfg  nrpe.cfg.$(date +%Y%m%d-%H).bak  && echo "bakup is succeess nrpe.cfg.$(date +%Y%m%d-%H).bak"
sed  -i "/allowed_hosts/s/allowed_hosts=127.0.*/allowed_hosts=127.0.0.1,${MASTERIP}/"  $CONFFILE  && echo "allowed_hosts add successfully"
sed -i '/dont_blame_nrpe/s/dont_blame_nrpe=0/dont_blame_nrpe=1/'  $CONFFILE
sed  -i '/^command\[/s/^/#/'  $CONFFILE
sed -i '/\$$/s/^#//'   $CONFFILE
###start nrpe
PID=`ps -ef |grep nrpe  |grep -v grep | awk '{print $2}'`
if [ -z $PID ]
then
    /usr/local/nagios/bin/nrpe  -c  /usr/local/nagios/etc/nrpe.cfg -d
else
   kill -HUP $PID &&  echo "reload nrpe is ok"
fi