Как запустить проверку службы при изменении статуса хоста ?

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

define host {
        host_name       foo1
        contacts        medium-priority
        use     default-host
}
...

Однако мы ' Я хотел бы получать уведомление с более высоким приоритетом, когда более двух таких серверов в беде. С этой целью мы создали отдельное определение службы, используя Nagios '/ Icinga check_cluster -utility:

define service {
        service_description     foo-cluster
        servicegroups   cluster-checks
        display_name    Foo Cluster
        check_command   check_cluster_host!Foo Cluster!0!3!$HOSTSTATEID:foo1$,$HOSTSTATEID:foo2,...$HOSTSTATEID:fooN$
        contacts        high-priority
        hostgroup_name  clusters
        notes   Check, that no more than 2 hosts in group foo are in trouble
        use     default-service
}

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

Мы генерируем конфигурационные файлы Icinga с помощью Ansible и поэтому можем создавать сложные зависимости программно - но может ли такой запуск быть реализован вообще ?

2
задан 8 September 2017 в 21:06
1 ответ

Вы можете определить обработчик событий на хосте, который в основном представляет собой небольшой скрипт, «выполняющий что-то на основе параметров». Вы можете передать атрибуты состояния хоста из макросов времени выполнения в качестве параметров команды.

https://www.icinga.com/docs/icinga1/latest/en/eventhandlers.html

Я бы пошел по маршруту и ​​определил пользовательский var на хосте, который определяет службы, запускаемые при запуске обработчика событий. Таким образом, вам не нужно жестко кодировать их внутри сценария.

Затем ваш сценарий может решить принудительно выполнить новую проверку службы через внешний командный канал. Вероятно, вам следует определить, достаточно ли состояний HARD или SOFT - имейте в виду, что обработчики событий запускаются только при изменении состояния, а не, например, при DOWN-> DOWN-> DOWN.

Пример: https: / /github.com/Icinga/icinga-core/blob/master/contrib/eventhandlers/submit_check_result.in

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

(такая отправка результатов проверки происходила в старом мире Nagios / Icinga1 для несколько хакерского распределенного мониторинга, если вы ищете больше примеров с командным конвейером и обработчиками событий).

1
ответ дан 3 December 2019 в 12:35

Теги

Похожие вопросы