我有一个 Nagios 系统,其中有大量主机,这些主机被归类到不同的主机组中。每个主机上都监控着两个服务,其中一个服务依赖于另一个服务 - 如果 service1 处于 WARNING 或 CRITICAL 状态,则该服务器上的 service2 也不应该发出警报。service2 更适合于统计信息收集,而 service1 只是简单的可用性检查 - 因此,我总是希望 service2 进行检查,但如果 service1 报告为宕机,则不发出警报。
这是我的 services.cfg 条目:
define servicedependency{
hostgroup example-servers
#host_name host1.example.com,host2.example.com
service_description service1
dependent_service_description service2
execution_failure_criteria n
notification_failure_criteria u,w,c,o
}
我尝试过通过主机组和单个服务器列表来指定它。理想情况下,我会一次性为整个主机组指定它,而不必不断维护列表。
但是,不管怎样,这似乎都不起作用。如果 service1 停机,service2 也会在问题屏幕和主机详细信息中显示 CRITICAL 状态。
答案1
摘自 Nagios 手册中的“execution_failure_criteria”:“如果您指定 n(无)作为选项,则执行依赖项将永远不会失败,并且依赖服务的检查将始终积极检查(如果其他条件允许的话)。”
听起来你应该使用“u,c”(不要检查 server1 是否为 UNKNOWN 或 CRITICAL)。或者也许“w,u,c”(如果 service1 的 WARNING 状态也应该导致 service2 不执行)。
答案2
如果您指定“execution_failure_criteria n”,则 service2 将始终受到检查。如果已检查并处于警告或严重状态,则用户界面将显示该状态。您无法阻止这种情况(据我所知),但您可以阻止它发送通知,例如“notification_failure_criteria u,w,c”。
我认为您可以将“execution_failure_criteria”设置为原样(即“n”),并在无法访问时将 service2 显示为关键状态,或者将其更改为“c”。
如果 service1 正常,您可能不想抑制通知,这就是您对“notification_failure_criteria u,w,c,o”中的“o”所做的。