Nagios 上报通知服务

介绍

Nagios Core支持可选地上报host和服务的联系通知。通过在对象配置文件中定义host上报服务上报,可以完成host和服务通知的上报。上报通知后,该上报的设置将覆盖对象的联系人/组和通知选项。

 注意:下面提供的示例全部基于服务上报的方式,但是host上报以相同的方式工作。当然,除了它们是用于host而不是服务。

通知何时上报?

当且仅当一个或多个定义的上报与当前发送的通知相匹配,通知才会上报。如果host或服务通知没有适用于其的任何有效上报定义,则将在host组或服务定义中指定的联系人组用于通知。看下面的例子:

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   90
    contact_groups          nt-admins,managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      6
    last_notification       10
    notification_interval   60
    contact_groups          nt-admins,managers,everyone
}

请注意,通知上报定义中存在“漏洞”。特别是,上报不会处理通知1和2,也不会处理10以上的任何通知。对于第一个和第二个通知以及第十个以后的所有通知,将使用服务定义中指定的默认联系人组。对于将要使用的所有示例,我将假定服务定义的默认联系人组称为nt-admins

联络小组

在定义通知上报时,请务必记住,属于“较低”上报的成员的任何联系人组(即那些具有较低通知编号范围的联系人)也应包括在“较高”上报定义中。这样做是为了确保在问题上报时,得到问题通知的任何人都能继续得到通知。例:

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   90
    contact_groups          nt-admins,managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      6
    last_notification       0
    notification_interval   60
    contact_groups          nt-admins,managers,everyone
}

第一(或“最低”)上报级别包括nt-adminsmanager联系人组。最后(或“最高”)上报级别包括nt-adminsmanager每个联系人组。请注意,两个上报定义中都包含nt-admins联系人组。这样做是为了在发出前两个服务通知后仍然存在问题时继续对它们进行分页。该经理联络小组第一次出现在“降低”上报定义-当第三个问题的通知被发送出去,他们首先通知。我们要经理 如果问题持续超过五个通知,则继续通知该组,因此它们也包含在“较高”的上报定义中。

重叠的上报范围

通知上报定义的通知范围可以重叠。请看以下示例:

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   20
    contact_groups          nt-admins,managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      4
    last_notification       0
    notification_interval   30
    contact_groups          on-call-support
}

在上面的示例中:

  • NT-管理员经理联络小组获得通知的第三通知
  • 这三个联系人组都会在第四和第五通知中得到通知
  • 只有在呼叫支持联络小组大干快上的第六通知(或更高版本)的通知

恢复通知

关于上报,恢复通知与问题通知略有不同。请看以下示例:

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   20
    contact_groups          nt-admins,managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      4
    last_notification       0
    notification_interval   30
    contact_groups          on-call-support
}

如果在发出三个问题通知后,针对该服务发出了恢复通知,那么谁会收到通知?恢复实际上是发出的第四个通知。但是,上报代码足够聪明,可以意识到只有那些在第三次通知中被告知问题的人员才应被告知恢复情况。在这种情况下,将通知NT-管理员管理员联系组恢复情况。

通知间隔

您可以使用host组或服务上报定义的notification_interval选项来更改为特定host或服务发送上报通知的频率。例:

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   45
    contact_groups          nt-admins,managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      6
    last_notification       0
    notification_interval   60
    contact_groups          nt-admins,managers,everyone
}

在此示例中,我们看到服务的默认通知间隔为240分钟(这是服务定义中的值)。在第3,第4和第5通知上上报服务通知时,两次通知之间的间隔为45分钟。在第6次及以后的通知中,通知间隔为60分钟,如第二个上报定义中所指定。

由于可能对特定host组或服务具有重叠的上报定义,并且host可以是多个host组的成员,因此Nagios必须就上报时涉及通知间隔的问题做出决定定义重叠。在特定通知中有多个有效的上报定义的任何情况下,Nagios都会选择最小的通知间隔。请看以下示例:

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   45
    contact_groups          nt-admins,managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      4
    last_notification       0
    notification_interval   60
    contact_groups          nt-admins,managers,everyone
}

我们看到两个上报定义在第4个和第5个通知上重叠。对于这些通知,Nagios将使用45分钟的通知间隔,因为这是这些通知的任何有效上报定义中存在的最小间隔。

关于通知间隔的最后一个注释的间隔为0。间隔0表示Nagios仅应在该上报定义期间针对第一个有效通知发送通知。host组或服务的所有后续通知将被禁止。举个例子:

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      3
    last_notification       5
    notification_interval   45
    contact_groups          nt-admins,managers
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      4
    last_notification       6
    notification_interval   0
    contact_groups          nt-admins,managers,everyone
}

define serviceescalation {
    host_name               webserver
    service_description     HTTP
    first_notification      7
    last_notification       0
    notification_interval   30
    contact_groups          nt-admins,managers
}

在上面的示例中,可以发送有关该服务的问题通知的最大数量为四个。这是因为第二级上报定义中的通知间隔为0表示仅应发出一个通知(从第4个通知开始并包括第4个通知),并且所有后续通知均应被抑制。因此,第三个服务上报定义完全无效,因为通知不会超过四个。

时间段限制

在正常情况下,可以在通常可以向host或服务发送通知的任何时间使用上报。该“通知时间窗口”由host服务定义中的notification_period指令确定。

您可以选择限制上报,以便通过使用host或服务上报定义中的escalation_period指令仅在特定时间段内使用它们。如果使用escalation_period指令指定TIMEPERIOD在此期间,上报可以使用,上报将只在这段时间使用。如果未指定任何escalation_period指令,则可以在host或服务的“通知时间窗口”内的任何时间使用上报。

 :已上报的通知仍然受到强加的正常时间限制notification_period在host或服务定义指令,让您在上报定义指定TIMEPERIOD应该是较大的“通知时间窗口”的一个子集。

状态限制

如果您想限制上报定义,以便仅在host或服务处于特定状态时使用,则可以在host或服务上报定义中使用escalation_options指令。如果不使用escalation_options指令,则可以在host或服务处于任何状态时使用上报

觉得文章有用?

点个广告表达一下你的爱意吧 !😁