首先,从我的理解来看,nagios实现监控主要是两种方式:
(1)通过ssh协议,远程登录到被监控机器上,然后通过执行相关监控命令来得到监控数据;
(2)使用UDP或者TCP协议,首先在被监控服务器上开启一个常驻服务:用于获取监控数据。之后监控主机向被监控机器发送相应的监控请求,被监控机器则调用相关监控命令获取数据并回传给监控主机。
这样看,其实nagios的监控方式的区别就在于负载的消耗。
nagios提供一个插件,叫作check_by_ssh,它是应用共享式SSH密钥执行对远程主机的检测。这种方法会加重监控主机的负载,一般不提倡使用。
nagios提供另一个插件,也就是今天要谈的nrpe。
NRPE的实际运行架构如下:
![](https://img-my.csdn.net/uploads/201207/18/1342577041_2898.jpg)
现在重点谈一下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