一、NRPE和NRPE_NT简介:
官方的说法是:NRPE是nagios的一个扩展,它可以让你在远程的linux/Unix服务器执行nagios的插件来监控该服务器的一此本地资源情况,例如,cpu负载、内存使用、硬盘使用等等。由于这些资源通常不会暴露给外部主机,所以NRPE需作为客户端安装在被监控的远程服务器上。简单来说当监控主机将监控请求发给安装在被监控机的nrpe客户端后,nrpe客户端调用插件完成监控动作并向nagios监控平台提供该服务器的一些本地的情况。顾名思义,NRPE用于linux/unix平台,而NRPE_NT则用于windows平台。
二、NRPE的工作原理:
如上图所示,NRPE主要由两部份组成――位于监控主机的check_nrpe插件和运行在远程主机的NRPE后台程序,当监控主机需要监控远程主机的资源时:
2.1、监控主机执行check_nrpe插件并说明需要检查的资源(如CPU、内存等)
2.2、check_nrpe插件通过SSL连接来联系远程主机的NRPE后台程序
2.3、远程主机的NRPE后台程序运行相应的插件来检查本地的资源(如CPU、内存等)
2.4、远程主机的NRPE后台程序得到检查的结果后返回给监控主机的check_nrpe插件,check_nrpe插件再将结果返回给nagios
需要注意的是,由于远程主机的检查的结果是通过NRPE后台程序调用nagios的插件来得到的,所以nrpe和nagios-plugins(本例为nagios-plugins-1.4.13.tar.gz)必需一起安装到被监控主机上。
英文水平有限,更多的详细说明请看官方文档:http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf
三、NRPE的安装与配置实例――linux平台
环境:
监控服务器: 10.246.0.103 OS:debian 4.0 主机名:nagios
被监控服务器: 10.246.0.101 OS:REHL 5.0 主机名:mysql-slave
3.1 ++++安装++++
3.11 监控服务器:
首先,需要在nagios监控平台服务器上安装NRPE,到官方网站下载最新的nrpe包,本例中使用的是nrpe-2.12.tar.gz。
[root@ nagios]#wget http://nchc.dl.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.g
[root@ nagios]#tar xzf nrpe-2.12.tar.gz
[root@ nagios]#cd nrpe-2.12
[root@ nagios]#./configure
[root@ nagios]#make all
[root@ nagios]#make install-plugin
如果安装成功,就可以在/usr/local/nagios/libexec (本例的nagios的安装目录为/usr/local/nagios)目录中找到 "check_nrpe"这个插件。
3.12 被监控客户端
首先,需要准备的包有两个:NRPE和nagios-plugin。本文使用的版本是nagios-plugins-1.4.13.tar.gz和nrpe-2.12.tar.gz。
首先安装插件nagios-plugins-1.4.13.tar.gz:
[root@ mysql-slave]#/usr/sbin/useradd nagios
[root@ mysql-slave]#passwd nagios
[root@ mysql-slave]#tar xzf nagios-plugins-1.4.13.tar.gz
[root@ mysql-slave]#cd nagios-plugins-1.4.13
[root@ mysql-slave]#./configure --prefix=/usr/local/nagios
[root@ mysql-slave]#make
[root@ mysql-slave]#make install
[root@ mysql-slave]#chown -R nagios.nagios /usr/local/nagios
然后安装NRPE:
[root@ mysql-slave]#tar xzf nrpe-2.12.tar.gz
[root@ mysql-slave]#cd nrpe-2.12
[root@ mysql-slave]#./configure
[root@ mysql-slave]#make all
[root@ mysql-slave]#make install-plugin
[root@ mysql-slave]#make install-daemon
[root@ mysql-slave]#make install-daemon-config
安装完成之后, 在/usr/local/nagios/目录下应该生成了4个目录:bin、etc、libexec、share,之后我们作一些初始配置,以测试nrpe是否安装成功和能否正常运行。
首先,需要修改/usr/local/nagios/etc/nrpe.cfg
找到“allowed_hosts=127.0.0.1”将其改为:
allowed_hosts=127.0.0.1,10.246.0.103 #监控服务器的地址或域名
这个配置的作用是声明能与NRPE后台程序进行会话的监控服务器的IP地址或域名,没有在这里声明的地址是无法从本机的NRPE获得服务的。在本例中,我的监控服务器的IP为10.246.0.103
启动NRPE守护进程并加入开机自启动:
[root@ mysql-slave]#/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
[root@ mysql-slave]#echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d" /etc/rc.local
查看NRPE是否已正常启动:
[root@ mysql-slave]# netstat -nptl |grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 22128/nrpe
可以看到5666端口已经在监听,NRPE已正常启动
在nagios监控服务器上运行以下命令进行测试:
[root@nagios]#/usr/local/nagios/libexec/check_nrpe -H 10.246.0.101 #被监控主机地址
NRPE v2.12
正常的返回值为被监控服务器上安装的NRPE的版本信息,说明在监控服务器上用check_nrpe连接nrpe daemon是正常的。
注:如出现“Connection refused or timed out”错误信息时,请检查被监控端的本地防火墙是否禁止了外部的监控服务器访问5666端口。
3.2++++配置++++
NRPE安装完成之后,我们需要对监控服务器及和被监控主机分别进行配置后才能进行监控,那么我们可以监控到哪些信息呢?这个取决于被监控主机有什么样的插件 (位于/usr/local/nagios/libexec目录下),你想监控什么,只要有相应的插件,就可以实现。
OK,现在我以监控客户端10.246.0.103上的磁盘分区/var的使用情况为例来说一下如何对监控服务器及和被监控主机分别进行配置。
3.21 首先配置被监控主机:
[root@mysql-slave]#vi /usr/local/nagios/etc/nrpe.cfg
找到下面这一段
# The following examples use hardcoded command arguments...
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk –w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
中括号里面的红色部分是定义的命令名,等号=后面是实际执行的插件程序,从上面可以知道NRPE默认已定义了检测登陆用户数,cpu负载,hda1的容量,僵尸进程,总进程数5个命令,但是没有我想要的检测磁盘分区/var使用情况的命令,需另外定义,将如下内容添加到上面5个命令的后面:
command[check_var]=/usr/local/nagios/libexec/check_disk –w 20% -c 10% /var
这样,我们就定义了一个命令:“check_var”,调用“check_disk”插件来检测磁盘分区/var的使用情况,如果空闲空间小于20%则为警告状态—warning;如果小于10%则为严重状态—critical。定义完之后,须重启nrpe daemon(先KILL掉nrpe进程)才能生效。
[root@ nagios]#/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
3.22 配置监控主机服务器:
3.22.1 定义命令
在commands.cfg定义check_var命令,只有在commands.cfg中定义过的命令才能在services.cfg中使用。
[root@nagios]#vi /usr/local/nagios/etc/objects/commands.cfg
在最后面增加如下内容
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
解释如下:
command_name check_nrpe #定义命令名称为check_nrpe,在services.cfg中要用到这个名称
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ #实际运行的插件程序,具体用法请用check_nrpe –h查看,-c后面带的$ARG1$参数是传给nrpe daemon执行的检测命令,它必须要先在被监控机的nrpe.cfg中先定义,如我们之前定义的“check_var”。
3.22.2 定义主机
[root@nagios]#vi /usr/local/nagios/etc/objects/hosts.cfg
增加如下内容
define host{
host_name mysql-slave #定义主机名
alias mysql-slave
use linux-server #使用事先定义好的模版,在templates.cfg定义
address 10.246.0.101 #被监控主机的IP地址
}
3.22.3 定义监控项目
[root@nagios]#vi /usr/local/nagios/etc/objects/services.cfg
在services.cfg中定义对mysql-slave主机/var分区的监控
define service{
host_name mysql-slave #被监控的主机名,必须要先在hosts.cfg中定义的
service_description Var
use linux-server #使用事先定义好的模版,在templates.cfg定义
check_command check_nrpe!check_var
#监控命令为check_nrpe,须先在commands.cfg定义,参数是check_var,须先在被监控机的nrpe.cfg定义
}
还需要监控其他信息的话,像上面那将它加进来就行了,如要将默认定义好的五个命令都加进来,只需将上面的一段定义内容复制粘,然后将“check_var”改成事先定义好的命令即可
至此,所有的配置文件都已经配置好了已经修改好了,使用下面的命令来检查配置文件是否有错:
[root@nagios]#/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg
…………………..
Total Warnings: 0
Total Errors: 0
[root@nagios]#/etc/init.d/nagios restart
打开IE输入http://10.246.0.103/nagios测试
四、NRPE的安装与配置实例――Windows平台
4.1 ++++安装++++
4.11 监控服务器:
nagios监控服务器上面已经安装好NRPE,这里略过
4.12 被监控客户端:
4.12.1 下载安装包
需要的安装包有两个:nrpe_n和nrpe_nt_plugins。
http://nchc.dl.sourceforge.net/sourceforge/nrpent/nrpe_nt.0.8b-bin.zip # nrpe_nt
http://www.nagiosexchange.org/cgi-bin/jump.cgi?ID=2131&view=File2;d=1 # nrpe_nt_plugins
4.12.2 解压缩安装包到c盘:
目录结构如下:
C:\nrpe_nt
├─bin
├─plugins
其中bin目录为nrpe_nt的主目录;
plugins为nagios_plugins程序所在目录;
4.12.3 安装nrpe_nt
C:\>cd nrpe\bin
C:\nrpe\bin>NRPE_NT.exe /i
NRPE_NT Service sucessfully installed!
C:\nrpe\bin>net start nrpe_nt
Nagios Remote Plugin Executor for NT/W2K 服务正在启动 .
Nagios Remote Plugin Executor for NT/W2K 服务已经启动成功。
4.12.4 测试
检查端口Listen情况
C:\nrpe_nt\bin>netstat -na | findstr 5666
TCP 0.0.0.0:5666 0.0.0.0:0 LISTENING
可以看到5666端口已经在监听,NRPE已正常启动
测试plugins的执行情况
C:\nrpe_nt\plugins>memload_nrpe_nt.exe 80 90
Mem: 1332 MB (74%) / 1790 MB (25%) Paged Mem: 1065 MB (28%) / 3684 MB (71%)
命令执行成功
4.2++++配置++++
4.21 被监控客户端:
nrpe_nt的配置文件为C:\nrpe_nt\bin\nrpe.cfg,用写字板打开,找到
“allowed_hosts=10.10.9.100,10.10.9.101,192.168.1.100”
将其改为:allowed_hosts=127.0.0.1,10.246.0.103
在最后面定义如下检测命令用于检测C盘、内存、CPU负载:
command[nt_check_disk_c]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe C: 80 90 command[nt_memload]=C:\nrpe_nt\plugins\memload_nrpe_nt.exe 70 90
command[nt_cpuload]=C:\nrpe_nt\plugins\cpuload_nrpe_nt.exe 75 90
和linux平台一样,可以监控到什么样的信息取决于被监控主机有什么样的插件,这样就配置好了,保存后重启服务使其生效 C:\nrpe\bin>net start nrpe_nt。
4.22 监控服务器端:
服务器端的配置跟上面linux平台的一样:
422.1 定义命令
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
命令在上面配置linux平台的客户端时已定义好,这里不用再定义
422.1 定义主机
define host{
host_name winxp #定义主机名
alias windows xp
use windows-server #使用事先定义好的模版,在templates.cfg定义
address 10.246.0.7 #被监控主机的IP地址
}
3.22.3 定义监控项目
define service{
host_name winxp1
service_description check-partition-c
use windows-server
check_command check_nrpe!nt_check_disk_c
}
define service{
host_name winxp
service_description Memload
use windows-server
check_command check_nrpe!nt_memload
}
define service{
host_name winxp
service_description Cpuload
use windows-server
check_command check_nrpe!nt_cpuload
}
配置文件配置好后,使用下面的命令来检查配置文件是否有错:
[root@nagios]#/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg
…………………..
Total Warnings: 0
Total Errors: 0
[root@nagios]#/etc/init.d/nagios restart 重启nagios并测试