Назад | Перейти на главную страницу

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

Запуск Nagios Core 4.0.2 и использование последней версии NRPE на клиентах.

У нас есть 3 определения сервисов для проверки одного программного обеспечения на разных уровнях каждую минуту:

  1. Проверка открытого TCP-порта
  2. Процесс идет проверка
  3. Проверка уровня приложения путем отправки данных в сокет и ожидания некоторого возвращаемого значения

При неудачном состоянии любой из этих проверок мы вызываем event_handler для перезапуска службы до 3 раз. Если состояние не в порядке после 3, то увеличьте.

Проблема в том, что существует ряд комбинаций, при которых в случае отказа одной службы ожидается, что другая будет в КРИТИЧЕСКОМ состоянии. Если у нас есть event_handler для каждого из них и два не работают, то скрипт перезапуска через event_handler будет вызываться дважды.

  1. например Если процесс не запущен, порт TCP не будет открыт и проверка на уровне приложения завершится ошибкой.
  2. например Порт TCP может быть КРИТИЧЕСКИМ из-за неправильной настройки правила брандмауэра или состояния сети, и на уровне приложения произойдет сбой, потому что он не может быть достигнут, но процесс все еще выполняется

Вопрос: Как мы можем гарантировать, что обработчик событий вызывается только одной неудачной проверкой службы, а не для каждой отказавшей службы из 3, что приводит к 2 или более перезапускам, когда их состояние меняется на КРИТИЧЕСКИЙ? например если 3 проверки служб входят в КРИТИЧЕСКИЙ, то это будет 3 перезапуска за 1 минуту и ​​6 перезапусков за 2 минуты (при условии, что перезапуск не смог вернуть службы в состояние ОК).

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

Зависимости служб - это способ сделать это.

Вы хотите, чтобы проверка службы уровня приложения зависела от проверки выполнения процесса.

Вы хотите, чтобы проверка выполнения процесса зависела от проверки порта TCP.

Вы хотите, чтобы все это зависело от хозяин (не служебная) проверка - это касается сценария отказа "состояния сети".

Они могут очень быстро усложниться, но основная идея такова:

define servicedependency{
host_name                      TheServer
service_description            The Service I Depend On
dependent_host_name            TheServer
dependent_service_description  The Dependent Service
execution_failure_criteria     n
notification_failure_criteria  w,u,c

}

Execution_failure_criteria действительно является здесь рабочей лошадкой: в нем перечислены состояния, которые могут быть задействованы в главной службе для этой службы не для проверки (в этом случае, если служба "The Service I Depend On" находится в состоянии "notify". Вы можете указать несколько параметров (как в строке ниже).

Вот хорошее объяснение параметров конфигурации nagios. http://nagios.frank4dd.com/docs/en/objectdefinitions.html#servicedependency