运维百科

Nagios利用NRPE监控Linux主机

一、利用 NRPE 扩展 Nagios 功能

    NRPE 是 Nagios 的一个功能扩展,它可在远程 Linux 和 UNIX 主机上执行插件程序。通过在远程服务器上安装 NRPE 构件及 Nagios 插件程序来向 Nagios 监控平台提供该服务器的一些本地情况,如 CPU 负载、内存使用、硬盘使用,服务等。这里将 Nagios 监控平台称为 Nagios 服务器 端,而将远程被监控的服务器称为 Nagios 客户端。

下图为 NRPE 构件监控远程主机本地信息的运行原理:

                                             




NRPE 组成部分与检测类型

NRPE 总共由两部分组成:

check_nrpe 插件,位于监控主机上

NRPE daemon,运行在远程被监控的 Linux 主机上

当监控远程 Linux/UNIX 主机服务或资源时,工作流程如下:

Ø  nagios 会运行 check_nrpe 这个插件,并且会告诉它需要检查什么;

Ø  check_nrpe 插件会连接到远程的 NRPE daemon,所用的方式是 SSL;

Ø  NRPE daemon 会运行相应的 Nagios 插件来执行检查动作;

Ø  NPRE daemon 将检查的结果返回给 check_nrpe 插件,插件将其递交给 Nagios 做处理。

NRPE daemon 需要 Nagios 插件安装在远程的 Linux 主机上,否则 daemon 不能做任何的监控。

NRPE 的检测类型分为两种:

直接检测:检测的对象是运行 NRPE 的那台 Linux 主机的本地资源,原理如下:

直接使用 NRPE 插件监控远程 Linux/UNIX 主机的本地或者私有资源;如 CPU 负载、内存使用、SWAP 空间使用、硬盘等运行状况。

间接检测当运行 Nagios 的监控主机无法访问到某台被监控主机,但是运行 NRPE 的机器可以访问得到的时候,运行 NRPE 的主机就充当一个中间代理,将监控请求发送到被监控对象上。

监控端(主节点):

1、代码获取

wget http://ncu.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz //nrpe插件目前最新版

2、安装NRPE

[root@cloud src]# tar zxf nrpe-2.15.tar.gz
[root@cloud src]# cd nrpe-2.15
[root@cloud nrpe-2.15]# ./configure --enable-command-args
[root@cloud nrpe-2.15]# make all
[root@cloud nrpe-2.15]# make install-plugin
完成之后没有出错,确定生成以下文件即可。
[root@localhost nrpe-2.15]# ls /usr/local/nagios/libexec/check_nrpe
/usr/local/nagios/libexec/check_nrpe


被监控端(被监控节点):

一、代码获取

wget http://ncu.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz  //nrpe插件目前最新版
wget http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz      //现在最新版本的插件

二、编译安装

1、用户和组的准备

[root@cloud src]# useradd nagios -s /sbin/nologin  //添加nagios账户,并设置/sbin/nologin
[root@cloud src]# passwd nagios
[root@cloud src]# groupadd nagcmd
[root@cloud src]# usermod -G nagcmd nagios  //加入到组

 2、安装插件

[root@cloud src]# tar zxf nagios-plugins-2.1.1.tar.gz
[root@cloud src]# cd nagios-plugins-2.1.1
[root@cloud nagios-plugins-2.1.1]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd
[root@cloud nagios-plugins-2.1.1]#make
[root@cloud nagios-plugins-2.1.1]#make install
[root@cloud nagios-plugins-2.1.1]#chmod 755 /usr/local/nagios

报错:configure: error: no acceptable C compiler found in $PATH

解决办法:yum install gcc

3、安装NRPE

[root@cloud src]# tar zxf nrpe-2.15.tar.gz
[root@cloud src]# cd nrpe-2.15
[root@cloud nrpe-2.15]# ./configure --enable-command-args
[root@cloud nrpe-2.15]# make all
[root@cloud nrpe-2.15]# make install-plugin

报错:checking for SSL headers... configure: error: Cannot find ssl headers

原因是缺少openssl-devel包,解决办法:yum -y install openssl-devel

完成之后没有出错,确定生成以下文件。

[root@cloud nrpe-2.15]# ls /usr/local/nagios/libexec/check_nrpe
/usr/local/nagios/libexec/check_nrpe  //确认文件存在
[root@cloud nrpe-2.15]# make install-daemon
[root@cloud nrpe-2.15]# make install-daemon-config
[root@cloud nrpe-2.15]# make install-xinetd

被监控节点,需要配置NRPE已守护进程运行(通过xinetd来运行)

1、更改/etc/xinetd.d/nrpe文件,设置允许nagios主节点服务器连接

# vi /etc/xinetd.d/nrpe
only_from       = 127.0.0.1 192.168.10.6
或
sed -i '/only_from/s/$/ 192.168.10.5/' /etc/xinetd.d/nrpe

2、在/etc/services结尾增加:

# vi /etc/services
nrpe      5666/tcp       # NRPE
或者
echo "nrpe      5666/tcp       # nrpe" >> /etc/services

3、增加对参数的支持

# vi /usr/local/nagios/etc/nrpe.cfg
dont_blame_nrpe=1

4、启动xinetd

service xinetd restart   //以依赖于xinetd的方式进行启动,建议此方法启动。

提示:xinetd: 未被识别的服务

解决办法:安装xinetd软件包:yum install xinetd -y

或者

以独立守护进程启动nrpe,之后记得ps检查有没有启动

/usr/local/nagios/bin/nrpe -n -c /usr/local/nagios/etc/nrpe.cfg -d

5、验证nrpe是否监听(确保防火墙允许端口5666)

# netstat -at | grep nrpe

6、测试nrpe是否正常运行

# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.15

7、修改配置文件

# vim /usr/local/nagios/etc/nrpe.cfg
修改为如下配置内容:
以下方式是以监控端(主节点)主动通过nrpe传递参数给被监控节点的形式:
command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
command[check_procs_args]=/usr/local/nagios/libexec/check_procs $ARG1$
command[check_swap]=/usr/local/nagios/libexec/check_swap -w $ARG1$ -c $ARG2$

 或者(保持默认配置)

以下方式是以被监控端(被监控节点)被动通过nrpe固定参数等待主节点提取的形式:
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
此方式在监控过程中需要登录到被监牢主机上去修改相应的参数,显然不是很明智的选择。

 以上监控命令功能:

Ø  check_users   监控登陆用户数

Ø  check_load 监控CPU负载

Ø  check_disk 监控磁盘的使用

Ø  check_procs   监控进程数量,状态包括 RSZDT

Ø  check_swap 监控SWAP分区使用

配置完上述命令后,重启 xinetd服务

# service xinetd restart

检查监控命令配置是否ok

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users -a 5 10
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_load -a 15,10,5 30,25,20
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_disk -a 20% 10% /
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_procs -a 200 400 RSZDT
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_swap -a 20% 10%

 


配置说明check_nrpe:

监控端(主节点):

1、 修改命令定义文件

由于在 Nagios 命令定义文件 commands.cfg 没有 check_nrpe 命令, 因此需要对此文件进行修改与定义,配置内容:

# vim /usr/local/nagios/etc/objects/commands.cfg 
define command{
       command_name    check_nrpe
       command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
       }
define command{
       command_name    check_nrpe_args
       command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ -a $ARG2$  $ARG3$  $ARG4$
       }

配置说明check_nrpe:

command_name check_nrpe //表示定义一个名叫check_nrpe的命令。

command_line $USER1$eck_nrpe -H $HOSTADDRESS$ -c $ARG1$ //表示要执行的命令,其中-c后面只能接被监控主机nrpe.cfg中定义的命令名称,$ARG1$就是表示被监控主机nrpe.cfg中定义的命令。

被监控节点:

# vim /usr/local/nagios/etc/nrpe.cfg
command[check_load]=/usr/local/nagios/libexec/check_load -w 30,25,20 -c 60,55,40

监控节点(主节点):

服务示例:
define service{
        use         local-service
        host_name           web001
        service_description nrpe_load
        check_command       check_nrpe!check_load
    }

其中的check_nrpe就是我们在commands.cfg文件中定义的check_nrpe命令,!check_load对应该命令中的$ARG1$参数

所以该配置文件在nagios服务器上先执行的命令是:/usr/local/nagios/libexec/check_nrpe -H 192.168.10.6 -c check_load

该命令执行完毕后,nagios服务器上的check_nrpe插件就会调用被监控主机上的NRPE daemon。

被监控主机上的NRPE daemon会调用本机的check_load命令,而check_load命令会调用本机的nagios插件check_load,所以在被监控主机上最后的执行命令是:/usr/local/nagios/libexec/check_load -w 30,25,20 -c 60,55,40。该命令执行完毕后,再把结果反馈到nagios服务器上。


配置说明check_nrpe_args:

check_nrpe还有一点不足的情况,就是我们对监控对象的阀值修改很不容易。每一次修改阀值都要到被监控主机上修改,很不方便。其实,我们完全可以通过传递参数的形式来达到修改不同监控主机的阀值。实现以上要求,我们需要在被监控主机和nagios服务器上进行配置。

编译时带上enable-command-args才能通过远程执行检查相关指令,如果不enable这个选项,nrpe无法通过远程传递指令参数。如果在安装配置NRPE时,没有加上-enable-command-args参数,那么需要把已经安装好的NRPE删除掉重新安装。

 被监控节点:

增加对参数的支持(被监控端确定需要启用,监控端是否需要启用?下次实验需测试)

# vi /usr/local/nagios/etc/nrpe.cfg
dont_blame_nrpe=1

 监控节点(主节点):

修改nrpe.cfg文件,去掉check_disk前的注释,并把其命名为check_disk_nrpe,如下:

# vim /usr/local/nagios/etc/objects/commands.cfg 
command[check_disk_nrpe]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$

注意:该check_disk_nrpe命令中$ARG1$、$ARG2$、$ARG3$参数。等会我们在nagios服务器上传递的参数,就是这个进行一一对应。

注意:command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$  $ARG3$  $ARG4$

命令中$ARG1$参数接收的是被监控主机nrpe.cfg文件中定义的监控命令,在此我们是以check_disk_nrpe命令为例的。

-a表示接收额外的参数,其中$ARG2$参数对应被监控主机check_disk_nrpe命令中的$ARG1$参数$ARG3$参数对应被监控主机check_disk_nrpe命令中的$ARG2$参数$ARG4$参数对应被监控主机check_disk_nrpe命令中的$ARG3$参数

                                               QQ图片20160108145240.png

服务示例:
define service{
use             local-service
host_name           web002
service_description DISK
check_command       check_nrpe_args!check_disk!10%!5%!/tmp
}

说明:check_command check_nrpe_args!check_disk!10%!5%!/tmp

表示监控192.168.10.6主机的/tmp分区,当该分区剩余10%时,就发出报警,当该分区剩余5%时,就发出紧急告警。

NRPE监控注意事项

1、通过NRPE方式监控,如果要修改nagios监控的相关阀值,必须在被监控主机的nrpe.cfg文件中扩展命令中修改。

2、通过NRPE方式监控,如果要新增nagios监控的对象时,必须要先在被监控主机的nrpe.cfg文件中定义。

3、NRPE daemon是在被监控主机上运行的。

至此,Nagios监控系统利用NRPE监控linux主机成功完成!

本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

4
分享到:

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址