У меня есть система 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 также показывает КРИТИЧЕСКИЙ статус на экране проблем и в деталях хоста.
Из руководства Nagios для «execution_failure_criteria»: «Если вы укажете n (none) в качестве опции, зависимость выполнения никогда не завершится ошибкой, и проверки зависимой службы будут всегда активно проверяться (если это допускается другими условиями) ".
Похоже, вы должны использовать вместо этого «u, c» (не проверяйте, является ли server1 НЕИЗВЕСТНЫМ или КРИТИЧЕСКИМ). Или, возможно, "w, u, c" ЕСЛИ состояние ПРЕДУПРЕЖДЕНИЕ от service1 также должно привести к тому, что service2 не будет выполняться.
Если вы укажете «execution_failure_criteria n», то service2 всегда будет проверяться. Если установлен флажок и находится в состоянии предупреждения или критическом состоянии, пользовательский интерфейс покажет это состояние. Вы не можете предотвратить это (afaik), но вы можете предотвратить отправку уведомлений, например, «notification_failure_criteria u, w, c».
Я думаю, вы можете либо установить «execution_failure_criteria» как есть (т.е. «n»), и жить со статусом, показывающим service2 как критический, когда он не может быть достигнут, либо изменить его на «c».
Вы, вероятно, не захотите подавлять уведомления, если service1 в порядке, что вы делаете с «o» в «notification_failure_criteria u, w, c, o».