介绍
关于通知的确切工作方式存在很多问题。这将试图解释发送主机和服务通知的时间和方式,以及谁接收它们。
通知升级将在此处进行说明。
通知何时发生?
发送通知的决定是在服务检查和主机检查逻辑中做出的。仅在处理与该通知相对应的主机或服务检查时才触发是否要发送通知的计算。它们不仅仅因为自从发送上一个通知以来已经过去了<notification_interval>而被触发。主机和服务通知在以下情况下发生:
- 当硬状态发生变化时。有关状态类型和硬状态更改的更多信息,请参见此处。
- 当主机或服务保持硬非OK状态并且自上次发出通知以来(针对该指定的主机或服务),主机或服务定义中的< notification_interval >选项指定的时间已经过去。
注意:如果主机处于硬或软非OK状态,则不会发送该主机上的服务通知。
谁得到通知?
每个主机和服务定义都有一个< contact_groups >选项,该选项指定哪些联系人组接收该特定主机或服务的通知。联系人组可以包含一个或多个单独的联系人。
当Nagios Core发送主机或服务通知时,它将通知服务定义的< contactgroups >选项中指定的任何联系人组成员的每个联系人。Nagios Core意识到一个联系人可能是多个联系人组的成员,因此它在执行任何操作之前会删除重复的联系人通知。
为了发送通知,必须通过哪些过滤器?
仅仅因为需要发送主机或服务通知并不意味着任何联系人都会收到通知。在潜在通知被认为足够值得发送之前,必须通过几个过滤器。即使那样,如果特定联系人的通知过滤器不允许将通知发送给他们,则可能不会被通知。让我们进入必须更详细地传递的过滤器。
- 程序范围过滤器:通知必须通过的第一个过滤器是测试是否在程序范围内启用通知。最初由主配置文件中的enable_notifications指令确定,但在运行时可能会通过Web界面进行更改。如果在整个程序范围内禁用了通知,则无法发送主机或服务通知。如果在程序范围内启用了它们,则还必须通过其他测试。
- 服务和主机过滤器:主机或服务通知的第一个过滤器是检查主机或服务是否处于计划的停机时间内。如果在计划的停机时间内,则不会有人收到通知。如果不在停机时间,它将继续传递到下一个过滤器。附带说明一下,如果与服务相关联的主机处于计划的停机时间范围内,则会取消服务通知。主机或服务通知的第二个过滤器是检查主机或服务是否正在抖动(如果启用了抖动检测)。如果服务或主机当前正在震荡,则不会有人收到通知。否则,它将被传递到下一个过滤器。必须传递的第三个主机或服务过滤器是特定于主机或服务的通知选项。每个服务定义都包含用于确定是否可以发送警告状态,严重状态和恢复通知的选项。同样,每个主机定义都包含一些选项,这些选项确定当主机发生故障,无法访问或恢复时是否可以发送通知。如果主机或服务通知未通过这些选项,则不会通知任何人。如果确实通过了这些选项,则通知将传递到下一个过滤器。注意:仅当针对原始问题发出通知时,才发送有关主机或服务恢复的通知。收到您从未知道的问题的恢复通知是没有意义的。必须通过的第四个主机或服务过滤器是时间段测试。每个主机和服务定义都有一个< notification_period >选项,该选项指定哪个时间段包含主机或服务的有效通知时间。如果发出通知的时间不在指定时间段内的有效时间范围内,则不会有人联系。如果它在有效时间范围内,则通知将传递到下一个过滤器。注意:如果未通过时间段过滤器,Nagios Core将为主机或服务的下一个通知(如果其处于非OK状态)重新安排该时间段中存在的下一个有效时间。这有助于确保在下一个有效时间段到达时尽快将问题通知给联系人。最后一组主机或服务过滤器取决于两个条件:(1)过去某个时候已经发出有关主机或服务问题的通知,并且(2)主机或服务保持在同一状态非正常状态,即上次通知发出的时间。如果满足这两个条件,则Nagios Core将检查并确保自上次通知发出以来经过的时间达到或超过主机或服务定义中< notification_interval >选项指定的值。如果自上次通知以来没有足够的时间,则没有人联系。如果自上次通知以来已经过去了足够的时间,或者不满足此过滤器的两个条件,则将发出通知!它是否实际发送给各个联系人取决于另一组过滤器。
- 联系人过滤器:此时,通知已通过程序模式过滤器和所有主机或服务过滤器,Nagios Core开始通知所有人员。这是否意味着每个联系人都将收到通知?否。每个联系人都有自己的一组过滤器,在接收到通知之前,必须通过该过滤器。注意:联系人过滤器特定于每个联系人,并且不影响其他联系人是否接收通知。通知选项是必须为每个联系人传递的第一个过滤器。每个联系人定义均包含用于确定是否可以针对警告状态,严重状态和恢复发送服务通知的选项。每个联系人定义还包含用于确定在主机发生故障,无法访问或恢复时是否可以发送主机通知的选项。如果主机或服务通知未通过这些选项,则不会通知该联系人。如果确实通过了这些选项,则通知将传递到下一个过滤器。注意:仅当针对原始问题发出通知时,才发送有关主机或服务恢复的通知。收到您从未知道的问题的恢复通知是没有意义的。每个联系人必须通过的第二个过滤器是主机或服务重要性过滤器。对于服务检查,如果服务的重要性值小于联系人的minimum_importance值,则不会通知该联系人。对于主机检查,如果主机的重要性值加上主机上所有服务的重要性值小于联系人的minimum_importance值,则不会通知该联系人。否则,联系人将通过主机/服务值过滤器,并且通知将传递到下一个过滤器。注意:如果不使用重要性值和minimum_importance值,则它们的值默认为零。在这种情况下,联系人的minimum_importance值等于(但不小于)主机/服务重要性值,并且通知将传递到下一个过滤器。每个联系人必须通过的最后一个筛选器是时间段测试。每个联系人定义都有一个< notification_period >选项,该选项指定哪个时间段包含该联系人的有效通知时间。如果发出通知的时间不在指定时间段内的有效时间范围内,则不会通知该联系人。如果它在有效时间范围内,则会通知该联系人!
通知方式
您可以让Nagios Core几乎随时以问题通知您问题和恢复:传呼机,手机,电子邮件,即时消息,音频警报,触电等。通知的发送方式取决于对象定义中定义的通知命令文件。
注意:如果根据快速入门指南安装Nagios Core ,则应将其配置为发送电子邮件通知。您可以通过查看以下文件的内容来查看使用的电子邮件通知命令:/usr/local/nagios/etc/objects/commands.cfg。
特定的通知方法(分页等)不会直接合并到Nagios Core代码中,因为这没有多大意义。Nagios Core的“核心”并非旨在成为多合一应用程序。如果将服务检查嵌入在Nagios Core中,则用户将很难添加新的检查方法,修改现有检查等。通知以类似的方式工作。有上千种通知方法,并且已经有很多处理脏活的包裹,那么为什么要重新发明轮子并将自己局限于自行车轮胎呢?让外部实体(例如,简单的脚本或功能完善的消息传递系统)执行混乱的工作要容易得多。
通知类型宏
在编写通知命令时,您需要考虑正在发生的通知类型。在$ NOTIFICATIONTYPE $宏包含一个字符串,标识这一点。下表列出了该宏的可能值及其各自的描述:
值 | 描述 |
---|---|
问题 | 服务或主机刚刚进入(或仍处于)问题状态。如果这是服务通知,则表示该服务处于“警告”,“未知”或“严重”状态。如果这是主机通知,则表示主机处于DOWN或UNREACHABLE状态。 |
复苏 | 服务或主机恢复已发生。如果这是服务通知,则表示该服务刚刚返回到OK状态。如果是主机通知,则表示主机刚刚返回到UP状态。 |
致谢 | 该通知是针对主机或服务问题的确认通知。确认通知是通过Web界面由特定主机或服务的联系人发起的。 |
拍打开始 | 主机或服务刚刚开始震荡。 |
挡门 | 主机或服务刚刚停止震荡。 |
禁止襟翼 | 主机或服务刚刚停止扇动因为瓣检测被禁用.. |
停机开始 | 主机或服务刚刚进入计划的停机时间。以后的通知将被禁止。 |
停机时间 | 主机或服务刚刚从计划的停机时间退出。现在可以恢复有关问题的通知。 |
停机时间已取消 | 主机或服务的计划停机时间段刚刚被取消。现在可以恢复有关问题的通知。 |
有用的资源
您可以通过多种方式将Nagios Core配置为发送通知。由您决定要使用哪种方法。完成后,您必须先安装任何必要的软件并在配置文件中配置通知命令,然后才能使用它们。以下是一些可能的通知方法:
- 电子邮件
- 传呼机
- 电话(SMS)
- WinPopup消息
- Yahoo,ICQ或MSN即时消息
- 声音警报
基本上,您可以从命令行执行的任何操作都可以定制为用作通知命令。
如果您正在寻找使用电子邮件发送消息到寻呼机或手机的替代方法,请查看这些软件包。它们可以与Nagios Core结合使用,以在出现问题时通过调制解调器发送通知。这样一来,您不必依靠电子邮件就可以发送通知(请记住,如果存在网络问题,电子邮件可能“不起作用”)。我实际上没有亲自尝试过这些软件包,但是其他人已经报告使用它们成功。
如果您想尝试一种非传统的通知方法,则可能需要弄乱音频警报。如果要在监视服务器上播放音频警报(带有合成语音),请查看Festival。如果您不愿将监视框留在另一个框上播放音频警报,请查看网络音频系统(NAS)和rplay项目。