如何让nagios在晚上不发送消息,早上发送所有剩余的错误

如何让nagios在晚上不发送消息,早上发送所有剩余的错误

我让 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 语句的帮助下,在晚上发送邮件,在工作时段发送短信。

相关内容