前言
上一篇已经介绍了nagios如何实现对主机及服务的监控,尽可能实现对系统运行状态的全面监控只是初级目标,nagios还可以借助smtp服务发送通知信息给指定的联系人。
本文所用到系统环境 OS:CentOS release 6.8 (Final) 2.6.32-642.el6.x86_64 还有一个重要环境:互联网(yum、百度、Google)。 各软件包:
1. nagios服务配置内容
/usr/local/nagios/etc/nrpe.cfg
,并且确保两者中的指令名称一样。services.cfg示例如下:
/usr/local/nagios/etc/nrpe.cfg
中的命令参数,来配置相应的warinning和critical阈值。示例如下:
notify-host-by-email
和notify-service-by-email
,这两个命令具体是什么样的,它是在commands.cfg文件中定义的。示例如下:
2. 邮件服务配置
ss -tnl
来检查25端口是否开启即可。如果则检查是否安装了sendmail或者postfix软件包,二者有其一即可,如果安装了,手动将服务启动即可service sendmail start
或者service postfix start
。mail
指令来发送测试邮件,以验证nagios server是否已可以使用刚才配置的163邮箱往指定的邮箱发送邮件了。mail指令由mailx软件包提供,其路径要和commands.cfg里定义的路径一致,即/bin/mail
。测试方式:
nginx -s stop
,然后观察naginx web页面监控,及查看是否能够收到通知邮件。
观察到的nagios web页面监控信息如下:
连续检测到4次critical
此时nagios日志会记录这一情况,从日志可以清楚的看到,4次 检测间隔时间为1分钟(以下为/var/log/messages中的情况,nagios会同时将日志记录到syslog和它自己的日志中,默认如此,可以改变设置):
从上面最后一条日志可以看到nagios触发了发送通知的操作。 与此同时,笔者的QQ邮箱也收到了这一通知邮件,时间相差只有3秒,反应非常迅速。笔者开启了微信上的QQ邮箱通知功能,虽然不具备让nagios直接调用微信平台公众号推送通知的能力,但这个方式感觉也很方便。 下图是邮件的相关信息,其中包括邮件主题,正文内容及格式,都是可以在commands.cfg的mail部分配置的。示例如下:
nagios通知邮件微信推送
当处理完server1 http这一critical后,nagios会在第一次检测成功后即发送服务恢复的邮件。这些邮件发送的时机,检测的次数这些都是在templates.cfg中定义好的。之所以连续检测4次失败才会发送通知邮件是由max_check_attempts
决定的,默认配置为3,表示第一次检测失败后,最多再尝试3次,如果还是检测失败,则即刻发送通知消息。失败之后每次间隔一分钟检测一次,是由retry_interval
参数定义的。
3. nagios对故障的反应时间小结
经过实际测试现对nagios故障反应时间做如下总结:
check_interval
来检测,主机或服务状态变化那刻如果没到相应监测项目的下一个检测时间点,nagios server是不会去检测的,默认情况下check_interval
为5分钟。retry_interval
*max_retry_attempts
的时长了。针对nagios server对故障反应的时长问题,应该可以通过用于主动监控的NSCA组件可以缩短,NSCA组件是用于实现更大规模的分布式监控体系的,它可以让被监控端主动发送监控信息给nagios server。这一部分还有待后续学习实践。
另外在nagios wed页面中也可以很方便地对各个服务的邮件通知进行Disable或者Enable操作,特殊情况下可以临时关闭对某主机或某些服务的通知操作,便于维护工作的展开。