Nagios: Зависимость сервиса от того же хоста для всей группы хостов

Вопрос или проблема

У меня есть система 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 на экране проблем и в деталях хоста.

Из справочника Nagios по “execution_failure_criteria”: “Если вы указываете n (none) в качестве опции, зависимость выполнения никогда не будет провалена, и проверки зависимого сервиса всегда будут проводить активно (если другие условия это позволят).”

Похоже, вы должны использовать “u,c” вместо этого (не проверять, если server1 в состоянии UNKNOWN или CRITICAL). Или, может быть, “w,u,c”, ЕСЛИ состояние WARNING от service1 также должно привести к тому, что service2 не будет выполняться.

Если вы указываете “execution_failure_criteria n”, то service2 всегда будет проверяться. Если он проверяется и находится в состоянии предупреждения или критическом состоянии, пользовательский интерфейс будет отображать это состояние. Вы не можете предотвратить это (насколько я знаю), но вы можете предотвратить отправку уведомлений, например “notification_failure_criteria u,w,c”.

Я думаю, вы можете либо оставить “execution_failure_criteria” как есть (т.е. “n”) и смириться с тем, что статус показывает service2 как критический, когда он недоступен, либо изменить это на “c”.

Вы, вероятно, не хотите подавлять уведомления, если service1 в порядке, и это то, что вы делаете с “o” в “notification_failure_criteria u,w,c,o”.

Ответ или решение

Настройка зависимостей сервисов в Nagios для одной группы хостов

В вашей системе мониторинга Nagios у вас есть задача настроить зависимости между сервисами на разных хостах в одной группе хостов. Вы хотите, чтобы при наличии проблем с одним сервисом, другой сервис не показывал состояние CRITICAL или WARNING, поскольку это может быть излишним. Рассмотрим, как правильно настроить такие зависимости.

Проблема

На данный момент вы используете следующую конфигурацию в файле 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, который выполняетAvailability check, и сервис service2, который собирает статистику. Если service1 находится в состоянии WARNING или CRITICAL, вы хотите, чтобы service2 не создавал никаких уведомлений.

Анализ конфигурации

  1. Параметр execution_failure_criteria:

    • Как вы отметили, при установке этого параметра в n (none) сервис service2 будет всегда проверяться, независимо от состояния service1. Если service2 будет возвращать статус CRITICAL, он будет виден в интерфейсе.
    • Чтобы предотвратить выполнение проверки service2 при проблемах с service1, лучше использовать варианты u и c (unknown и critical). Это позволит избегать проверок для service2, если service1 находится в этих состояниях.
  2. Параметр notification_failure_criteria:

    • Вы установили notification_failure_criteria u,w,c,o, что значит, что уведомления не будут отправляться, когда service1 находится в состоянии OK (o). Однако, если service1 находится в состоянии WARNING, ваше условие должно срабатывать, и вы не получите уведомления о service2.
    • Рассмотрите возможность изменения этого параметра и исключения состояния o, если вы хотите получать уведомления, когда service1 в порядке.

Рекомендации по настройке

Предлагаемая конфигурация для вашего случая может выглядеть следующим образом:

define servicedependency{
    hostgroup                       example-servers
    service_description             service1
    dependent_service_description   service2
    execution_failure_criteria      u,c  # Не проверять, если service1 в UNKNOWN или CRITICAL
    notification_failure_criteria   u,w,c  # Отключить уведомления для service2 при проблемах с service1
}

Заключение

С учетом предложенных изменений, ваша настройка должна работать так, как вы ожидаете. service2 не будет показывать статус WARNING или CRITICAL, если service1 имеет проблемы, но будет продолжать активные проверки для сбора статистики. Не забудьте перезапустить Nagios после внесения изменений в конфигурацию, чтобы они вступили в силу.

Таким образом, вы сможете зарубежить излишние уведомления, при этом обеспечивая стабильную работу мониторинга в Nagios.

Оцените материал
Добавить комментарий

Капча загружается...