我想我知道答案(不可能) - 但想看看是否有人有一个聪明的想法,或者也许我对这个问题的看法是错误的。
目标
我们希望值班经理在发生以下情况时收到服务中断的通知:
- 该服务在一段规定时间内处于停机状态。
- 应发送通知即使该问题已被确认。
来自 Nagios 文档:
对于通知:
当且仅当一个或多个升级定义与正在发出的当前通知相匹配时,通知才会升级。
致谢:
允许您确认指定服务的当前问题。通过确认当前问题,未来通知(针对相同的服务状态)被禁用。如果“sticky”选项设置为 1,则确认将保留,直到服务恢复正常状态。否则,当服务更改状态时,确认将自动删除。如果“notify”选项设置为 1,则将向联系人发送通知,表明当前服务问题已得到确认。如果“persistent”选项设置为 1,则与确认相关的注释将在 Nagios 进程重新启动后继续存在。如果不是,则下次 Nagios 重新启动时将删除该注释。
我的理解是,如果问题得到确认,那么就不会再有进一步的通知 - 我认为这也适用于升级通知?
我看不出有什么办法可以解决这个问题。
我们的工作流程要求 L1 团队确认问题是否可处理,并根据需要上报。但是,我们希望建立一个自动流程来确保这些上报能够发生。
我希望在 Nagios 上实现这一点,但如果不可能的话,我们可能不得不在票务方面来处理这个问题。
谢谢!
答案1
我有一个 Perl 脚本可以执行此操作。您只需扫描“status.dat”文件即可:
host checks > last_time_up = <value>
service checks > last_time_ok = <value>
两者都存储一个纪元值,如果该值大于当前纪元的秒数,则会导致将 check_description 和/或 host_name 添加到发送的电子邮件中。我的脚本还检查“problem_has_been_acknowledged”条目并让我知道它是否已被确认。该脚本每 30 分钟从 crontab 条目触发一次,发送匹配的所有主机/服务检查列表。