另一种方法是使用NRPE外部构件监控远程主机。NRPE外部构件可以在远程的Linux/Unix主机上执行插件程序。如果是要象监控本地主机一样对远程主机的磁盘利用率、CPU负荷和内存占用率等情况下,NRPE外部构件将非常有用。
提到“外部构件”这个概念的时候需要说明一下,Nagios有许多"外部构件"软件包可供使用。外部构件可以扩展Nagios的应用并使之与其它软件集成,而且能够通过WEB接口来实现管理配置文件,监控远程主机(*NIX,Windows等),对远程主机的强制监测,减化并扩展告警逻辑等功能。
NRPE是一个可在远程Linux/Unix主机上执行的插件的外部构件包。如果你需要监控远程的主机上的本地资源或属性,如磁盘利用率、CPU负荷、内存利用率等时是很有用的。像是用check_by_ssh插件来实现的功能一样,但是它不需要占用更多的监控主机的CPU负荷,所以当你需要监控大量的主机时这个构件将起到很重要的作用。通过该图可以看出,我们需要在被监测主机上部署NRPE,他相当于一个daemon负责监听。而监测主机使用check_nrpe并通过SSL连接访问这个daemon,然后调用被监测方的check_disk,check_load等脚本获取信息并将结果传递到监测主机。同时这些脚本也有能力监测到其它主机的相关信息。
NRPE的使用环境有direct check和indirect check两种,direct check指的是NRPE运行在被监测主机的本地,而indirect check意味着运行NRPE的服务器只是一个中间人,他会继续通过刚才所提及的脚本来监测其它更多远程主机上的服务和系统信息。层次化的监测就是通过这种方式来实现。
为了简单说明问题,我们将要部署基于direct check的环境部署NRPE。所以下面的操作在被监测主机192.168.1.220上进行。
首先要建立Nagios账号,这里我使用同样的密码:
# passwd nagios
之后按照和上面相同的步骤来编译和安装nagios-plugin软件:
# cd nagios-plugins-1.4.12
# ./configure
# make
# make install
然后对相关的目录设置权限和所属用户组:
# chown –R nagios.nagios /usr/local/nagios/libexec
接着NRPE包放到/usr/local目录下,按照下面的步骤解压缩,并且编译和安装:
# cd nrpe-2.12
# ./configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config
同时安装NRPE的插件、进程以及进程范例配置文件。
接着执行命令将nrpe安装为依赖xinetd超级进程的非独立服务,那么前提必须安装xinetd。不过一般系统都会自动安装该服务。
最后执行下面的命令将NRPE安装为xinetd超级进程所管理的进程之一。
# make install-xinetd
完成之后需要编辑/etc/xinetd.d目录下的nrpe文件,并且在最后添加允许实施监测的主机IP地址,这里是192.168.1.10,那么配置文件全文如下:
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 192.168.1.10
}
然后修改/etc/services档,并添加下面的内容:
重启服务:
# /etc/init.d/xinetd restart
此时检查nrpe服务启动状况如下:
# netstat -nl | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
# lsof -i:5666
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xinetd 9949 root 5u IPv4 28764 TCP *:nrpe (LISTEN)
现在最关键的一步是确保安装的NRPE进程能够正常工作,所以要使用check_nrpe插件进行测试。在监测主机192.168.1.10上执行命令:
# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.220
如果能够出现如下的版本号显示,则证明在被监测主机上配置的NRPE已经正常工作,并且监测主机能够通过SSL与被监测主机上的NRPE正常通信。