Nagios 编译安装 NRPE

NRPE(Nagios Remote Plugin Executor) 插件包括两个部分:check_nrpe 插件,这个是安装在监控主机上的;NEPR daemon,安装在被监控的主机上。
监控主机与被监控主机就是通过这两个部分来进行交流,可以选择通过 SSL 隧道来进行通信。
通过 NRPE 可以获取被监控主机的诸如 cpu,load,swap 等内部的信息。
还可以通过 ssh 的方式获取被监控主机的状态,但是此方式会给监控的主机(包括被监控的主机)造成比较大负载,尤其是在同时监控上百台机器时,所以此方法不是很常用。这里讨论的是前者。

安装一些编译需要工具,程序的用户:

# yum groupinstall "Develpment tools"
# useradd -m -s /sbin/nologin nagios
# usermod -a -G nagios nagios

安装 xinetd,提供 nrpe:

# yum install xinetd

在被监控的主机上需要安装 nagios plugins 以及 nagios addon projects 中的 NRPE:

# cd /usr/local/src
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
# cd nagios-plugins-1.4.15
# make distclean
# ./configure –with-nagios-user=nagios –with-nagios-group=nagios –with-mysql=/usr/local/mysql
# make && make install
# chown nagios:nagios /usr/local/nagios/
# chown nagios:nagios -R /usr/local/nagios/libexec/

在生成 configure 时,会报如下错误:

checking for SSL headers… configure: error: Cannot find ssl headers

# yum install openssl-devel openssl

或者不使用 ssl:

# ./configure –no-ssl

接下来安装 nrpe:

# ./configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config
# make install-xinetd
# vi /etc/xinetd/nrpe

在 only_from 中添加监控主机的 ip。
only_from       = 127.0.0.1 10.18.101.253

# echo "nrpe 5666/tcp # NRPE" >> /etc/services
# serivce xinetd restart

检验 nrpe 是否安装成功:

# netstat -tunlp | grep 5666

第一次安装的时候 netstat 下并没有对应的显示,查看 messages:

# tail /var/log/messages
Jul 23 12:22:29 xen1 xinetd[32399]: Server /usr/local/nagios/bin/nrpe is not executable [file=/etc/xinetd.d/nrpe] [line=11]
Jul 23 12:22:29 xen1 xinetd[32399]: Error parsing attribute server – DISABLING SERVICE [file=/etc/xinetd.d/nrpe] [line=11]
Jul 23 12:22:29 xen1 xinetd[32399]: Must specify a server in nrpe
Jul 23 12:22:29 xen1 xinetd[32399]: xinetd Version 2.3.14 started with libwrap loadavg labeled-networking options compiled in.
Jul 23 12:22:29 xen1 xinetd[32399]: Started working: 1 available service
Jul 23 12:23:01 xen1 xinetd[32399]: Exiting…

发现 nagios 下没有 bin 目录,也就是没有可执行文件,无奈,重新编译:

# cd /usr/local/
# rm -rf nagios
# cd /usr/local/src
# ll
total 8
drwxrwxrwx 16 501 root 4096 Jul 23 14:02 nagios-plugins-1.4.15
drwxrwxr-x  7 501  501 4096 Jul 23 14:05 nrpe-2.12
# make distclean
# ./configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config
# make install-xinetd
# vi /etc/xinetd/nrpe

在 only_from 中添加监控主机的 ip。
only_from       = 127.0.0.1 211.151.139.209

# echo "nrpe 5666/tcp # NRPE" >> /etc/services
# serivce xinetd restart

再次测试:

# netstat -tunlp
# tail /var/log/message
Jul 23 14:07:17 xen1 xinetd[32377]: xinetd Version 2.3.14 started with libwrap loadavg labeled-networking options compiled in.
Jul 23 14:07:17 xen1 xinetd[32377]: Started working: 2 available services

# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12

注意防火墙设置,根据实际情况来操作:

# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp –dport 5666 -j ACCEPT
# /etc/init.d/iptables save

上面是客户端的配置,接下来就是服务端也就是监控主机的配置。

# cd /usr/local/src
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
# yum -y openssl openssl-devel
# tar zxvf nrpe-2.12.tar.gz
# cd nrpe-2.12
# ./configure
# make all
# make install-plugin

测试:

# /usr/local/nagio/nrpe/libexec/check_nrpe -H 10.18.101.230
NRPE v2.12

为了使用 chech_nrpe 这个插件,需要在 command.cfg 下添加下面的全局性命令:

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

define command{
       command_name check_nrpe
       command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

从可扩展性方面考虑,建议在 /usr/local/nagios/etc 下新建一个 server 目录,该目录下放需要监控的机器的配置文件:

# cd /usr/local/nagios/etc
# mkdir server
# chown -R nagios:nagios server

将该目录添加到 /usr/local/nagios/etc/nagios.cfg 中:

cfg_dir=/usr/local/nagios/etc/server

在 server/ 目录中添加对主机监控的文件 server.cfg:

# cat service.cfg

define  host{
       use                         linux-box
       host_name                   remotehost
       alias                       centos 5.5 x86_64
       address                     10.18.101.230
}

define service{
       use                         generic-service
       host_name                   remotehost
       service_description         current user
       check_command               check_nrpe!check_users
}

define service{
       use                         generic-service
       host_name                   remotehost
       service_description         harddisk
       check_command               check_nrpe!check_sda1
}

可以仿照上面的继续添加需要监控的属性。在重启 nagios 之前,需要确认配置语法上的正确性:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果没有报 Warnings 和 Errors 可以继续下面的重启:

# /etc/init.d/nagios restart

稍等片刻 http://ip/nagios 应该就可以看到远端主机的监控资源了。

如果需要自定义监控的资源,可以按如下步骤进行。

在远端主机(被监控)主机上的 nrpe.cfg 文件中添加新的命令定义,比如以 check_swap 为例:

# /usr/local/nagios/libexec/check_swap -w 20% -c 10%

确认正确,可以将其添加到 nrpe.cfg 中:

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

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

重启 xinetd:

# /etc/init.d/xinetd restart

在监控端,在 servce.cfg 中新定义一个服务:

# vi /usr/local/nagios/etc/nagios/server.cfg

define service{
       use                     generic-service
       host_name               remotehost
       service_description     Swap Usage
       check_command           check_nrpe!check_swap
}

测试,重启:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# service nagios restart