在开始Node节点部署之前,假设读者已经完成了Nagios Server的nagios部署(可看我上一遍Server部署https://blog.csdn.net/ITOMG/article/details/88057109)。本篇文章主要是在从节点Node1上部署NRPE实现Server对从机的Nagios监控。将给Nagios Server添加新的监控对象。每次需要添加新的Node监控对象时,只需操作本章节中的步骤即可。环境:
环境:
Nagios Server IP : 10.18.221.80
Nagios Node1 IP : 10.18.221.81
Nagios Node2 IP : 10.18.221.82
...
1.连接到Node1节点:
ssh root@10.18.221.81
2.安装Nagios插件和NRPE:
sudo apt-get install nagios-plugins nagios-nrpe-server
3.配置Allowed Hosts
用vim打开NRPE的配置文件:
sudo vim /etc/nagios/nrpe.cfg
找到allowed_hosts
这一行,将Nagios Server的IP地址加到末尾,那么Node1就允许来自该IP的请求访问本机的NRPE了。
allowed_hosts=127.0.0.1,10.18.221.80
4.配置Allowed NRPE Commands
检查一下根文件系统的名称:
df -h /
我们要让NRPE监控这个名称,以获取磁盘使用率的情况(一般来说这个名称会是/dev/vda
)。用编辑器打开nrpe.cfg文件:
sudo vim /etc/nagios/nrpe.cfg
找到三个配置项改动完成之后看起来应该是这样的格式:
server_address=client_private_IP #Node1的IP地址
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda #使用df -h /查到的文件系统名称(/dev/vda)
此外还有一些其他的配置项,可以按你的需求进行改动。默认状态下NRPE会监听5666端口(server_port=5666
),请确保你的防火墙不会阻挡该端口。配置好了之后,保存退出。
5.重启NRPE
sudo service nagios-nrpe-server restart
6.在Nagios Server上添加Node1配置文件
首先回到Nagios Server(注意:是在Nagios Server命令行里!!!),我们在上一篇中创建了一个新的目录用于保存配置文件/usr/local/nagios/etc/servers,因为每一个要监控的服务器都有一个单独的配置文件。所以我们为刚才的Node1创建一个新的配置文件:
sudo vim /usr/local/nagios/etc/servers/Node1.cfg
将如下内容复制粘贴进去。其中的host_name
填写你那台主机的名称,alias
填写该主机的描述,address
填写你那台主机的IP地址:
define host {
use linux-server
host_name Node1
alias Hadoop Node1
address 10.18.221.81 #Node1的IP
max_check_attempts 5
check_period 24x7 #7x24小时监控
notification_interval 30
notification_period 24x7
}
这样一份配置文件只会让Nagios监控该服务器的在线状态。如果你需要监控特定的服务,还需要继续完善该文件。下面是一些常用的监控功能,可以按需要取用。其中每一项中的check_command
决定了监控的内容,包括了监控项的阈值。
define service {
host_name Node1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name Node1
service_description Check Users
check_command check_local_users!20!50
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name Node1
service_description Local Disk
check_command check_local_disk!20%!10%!/
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name Node1
service_description Check SSH
check_command check_ssh
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name Node1
service_description Total Process
check_command check_local_procs!250!400!RSZDT
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
如果你想添加更多的服务,如DHCP,POP等,可以在/usr/local/nagios/etc/objects/commands.cfg文件中找到许多check_command 。
7.配置 /usr/local/nagios/etc/objects/templates.cfg, 先配置检查主机host状态的参数:
define host{
name linux-server ; 主机名称
use generic-host ; use表示引用,也就是将主机generic-host的所有属性引用到linux-server中来。
; 在nagios配置中,很多情况下会用到引用。
check_period 24x7 ; 这里的check_period告诉nagios检查主机的时间段。
check_interval 5 ; nagios对主机的检查时间间隔,这里是5分钟。
retry_interval 1 ; 重试检查时间间隔,单位是分钟。
max_check_attempts 10 ; nagios对主机的最大检查次数,也就是nagios在检查发现某主机异常时,并不马上判断为异常状况;而是多试几次,因为有可能只是一时网络太拥挤,或是一些其他原因,让主机受到了一点影响;这里的10就是最多试10次的意思。
check_command check-host-alive ; 指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义。
notification_period 24x7 ; 主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义。
notification_interval 10 ; 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟。如果你觉得,所有的事件只需要一次通知就够了,可以把这里的选项设为0。
notification_options d,u,r ; 定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态。u即unreachable,表示不可到达状态。r即recovery,表示重新恢复状态。
contact_groups ts ; 指定联系人组,这个“admins”在contacts.cfg文件中定义。
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
再配置检查服务service状态的参数:
define service{
name local-service ; The name of this service template
use generic-service ; Inherit default values from the generic-service definition
max_check_attempts 4 ; Re-check the service up to 4 times in order to determine its final (hard) state
normal_check_interval 5 ; Check the service every 5 minutes under normal conditions
retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
如要添加监控server的服务,打开/usr/local/nagios/etc/objects/localhost.cfg,与配置node1同样的方法添加define service即可。
保存退出。重新加载Nagios配置项以使变更生效:
sudo service nagios reload
查看配置是否正确:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
7.重新启动所有服务
在Nagios Server上,启动Apache和Nagios:
service apache2 restart
service nagios restart
在Node1上启动NRPE服务:
service nagios-nrpe-server restart
8.测试Nagios服务
从浏览器打开10.18.221.80/nagios,并查看受监控的Node1。
到此为止,一个可以监控集群的Nagios服务算是初步建成了。但还有各种NRPE的监控命令还需要我们慢慢学习,应用在后续的监控服务中,可以通过:
cd /usr/local/nagios/etc
cat nrpe.cfg |grep -v "^#"|grep -v "^$"
如果发现想要监控的服务没有定义,也可以手动在nrpe.cfg 中添加,也就是自定义NRPE命令。后续会开一篇专门针对如何定义NRPE监控命令的Blog。本篇就到此结束了~