首先,从我的理解来看,nagios实现监控主要是两种方式:

(1)通过ssh协议,远程登录到被监控机器上,然后通过执行相关监控命令来得到监控数据;

(2)使用UDP或者TCP协议,首先在被监控服务器上开启一个常驻服务:用于获取监控数据。之后监控主机向被监控机器发送相应的监控请求,被监控机器则调用相关监控命令获取数据并回传给监控主机。


这样看,其实nagios的监控方式的区别就在于负载的消耗。


nagios提供一个插件,叫作check_by_ssh,它是应用共享式SSH密钥执行对远程主机的检测。这种方法会加重监控主机的负载,一般不提倡使用。

nagios提供另一个插件,也就是今天要谈的nrpe。

NRPE的实际运行架构如下:






Nagios 监控多台服务器 nagios监控使用方法_Nagios 监控多台服务器


现在重点谈一下nrpe的安装和配置。

1. NRPE的安装

NRPE的安装分为两个部分:在监控主机上的安装和被监控主机上的安装,具体步骤如下:

(1)准备工作

下载相应的安装文件:

nrpe.2.13.tar.gz   (NRPE的安装文件)

nagios-plugins-1.4.15.tar.gz  (nagios的插件包)


(2)在监控主机上的安装

tar zxvf nrpe-2.12.tar.gz
 cd nrpe-2.12
 ./configure --prefix=/usr/local/nagios
 make all
 make install-plugin

(3)在被监控主机上的安装

groupadd nagios
 useradd -g nagios -d /usr/local/nagios -s /sbin/nologin nagios

1)被监控机安装plugin

tar zxf nagios-plugins-1.4.15.tar.gz
 cd nagios-plugins-1.4.15
 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios --with-ping-command="/bin/ping" 
 make
 make install
 #查看播件文件是否已安装在这个目录
 ls /usr/local/nagios/libexec

2)被监控机安装NRPE

tar zxvf nrpe-2.13.tar.gz
 cd nrpe-2.13
 ./configure --prefix=/usr/local/nagios
 make all
 make install-plugin
 make install-daemon
 make install-daemon-config
 chown -R nagios:nagios /usr/local/nagios

2. NRPE的配置

NRPE的配置也是分为两部分:在监控主机上的配置和被监控主机上的配置,具体如下:

(1)在被监控主机上的配置


vi /usr/local/nagios/etc/nrpe.cfg
 allowed_hosts=127.0.0.1,192.168.1.91
 #Nagios监控机的地址或域名
 修改/etc/hosts.allow增加监控机ip
 echo 'nrpe:192.168.1.91' >> /etc/hosts.allow
 启动 NRPE 守护进程:
 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

可以将此命令加入 /etc/rc.local ,以便开机自动启动。

echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.local

检查 NRPE 是否正常:

在被监控机上

/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1

查看相应的端口:netstat -an |grep 5666

防火墙开启5666 允许局域网IP或固定IP连接

在监控主机上

/usr/local/nagios/libexec/check_nrpe -H $目标主机地址

都应该可以输出 NRPE 的版本: NRPE v2.12

检查可监控的服务

在被监控端的 nrpe.cfg 文件中,可以看到这样的配置:

command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20

这是用来检查 CPU 负载的。

如果需要自定参数则使用下面命令

command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$

并开启dont_blame_nrpe =1

开启参数将会带来一定的安全风险

被监控机重启nrpe

ps aux|grep nrpe
 kill $pid
 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

(2)在监控主机上的配置


在监控机commands.cfg 添加nrpe的定义

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

增加hostA.cfg

在/usr/local/nagios/etc/objects/ 目录下新建文件:hostA.cfg

把A.cfg添加到nagios主机:

echo "cfg_file=/usr/local/nagios/etc/objects/hostA.cfg" >> /usr/local/nagios/etc/nagios.cfg

如果要再添加B机器方法炮制就可以了

hostA.cfg
 define host{
 use generic-server
 host_name A
 alias A
 address A 的IP
 }
 define service{
 use generic-service
 host_name A
 service_description load
 check_command check_nrpe!check_load
 #使用自定参数
 #check_command check_nrpe!check_load!6.0,5.0,4.0!15.0,8.0,6.0
 }

重启监控机nagios

service nagios reload

访问http://localhost/nagios就可以看到新增的机器了

如何修改nrpe端口

被监控机nrpe.cfg修改server_port为15666

server_port=15666

重启nrpe

监控机commands.cfg增加-p 15666

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

重启nagios就可以了



附注:

如果nagios的监控服务出现“Connection refused or timed out”的错误信息,需要进行以下检查和修复工作:

在被监控主机上操作:


检查nrpe.cfg中allowed_hosts是否包含监控机ip地址

检查/etc/hosts.allow文件中监控机ip地址nrpe:192.168.1.91

检查iptables

开放5666端口

iptables -L
 iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
 #注意顺序
 iptables -L
 service iptables save
 service iptables restart