我让 Nagios 检查服务状态并发送有关服务状态的短信。
有些问题在晚上并不重要,最好不要在晚上发送。
define timeperiod{
timeperiod_name non_work
alias Non work hours
sunday 00:00-24:00
monday 00:00-09:00,18:00-24:00
tuesday 00:00-09:00,18:00-24:00
wednesday 00:00-09:00,18:00-24:00
thursday 00:00-09:00,18:00-24:00
friday 00:00-09:00,18:00-24:00
saturday 00:00-24:00
}
但是,我希望早上发送所有问题,而不仅仅是新问题。我该如何配置?
还是nagios没有这个功能?
答案1
有些问题到了晚上就不重要了
正如您所建议的,Nagios 允许您配置时间段,然后您可以将其应用于检查、通知、通知组和个人用户。当然,如果您指定要进行检查但没有发送通知,那么您将不会在电子邮件中看到问题但您可以随时在 Nagios 网页上查看完整的警报历史记录。为什么不安排一个 cron 任务在早上第一时间通过电子邮件向您发送夜间警报?例如
0 8 * * * wget -O /tmp/nagios.html -i /home/user/nagioslist; mail [email protected] </tmp/nagios.html
其中 /home/user/nagioslist 包含如下内容:
http://example.com/nagios/cgi-bin/summary.cgi?report=1&displaytype=1
&timeperiod=last24hours&hostgroup=all&servicegroup=all&host=all&alerttypes=3
&statetypes=2&hoststates=7&servicestates=120&limit=1000
(这将显示过去 24 小时内检测到的最多 1000 个硬状态)
另一方面,您可以设置一个不同的通知脚本来运行您想要推迟的通知,并将它们放在队列中以便稍后发送(例如使用“at”)。
或者您可以设置 MTA 仅在特定时间间隔处理其传出的 mailq - 结合不同的电子邮件地址/不同的主题,然后您可以根据收件人/主题/一天中的时间有效地对邮件进行优先排序/延迟发送。
答案2
我不确定 nagios 是否默认不这样做。你只需要反转通知时间段,这样它就只包括工作时间而不是非工作时间。
测试这个很容易:只需定义一个默认失败的检查,相应设置的通知时间段,从当前时间后几分钟开始,看看是否仅在此期间收到消息。
如果这不起作用,您可以尝试使用升级方案,在 escalation_period 语句的帮助下,在晚上发送邮件,在工作时段发送短信。