Динамическая установка параметра check_interval на основе Service_State в Icinga2

У меня есть требование, где интервал проверки составляет 180 минут, а интервал уведомления - 10 минут. Означает, что владелец сервиса хочет, если он пропустит какое-либо предупреждение, которое обычно приходит через 180 минут, если обслуживание является критическим, то Icinga продолжает проверять и информировать их каждые 10 минут, пока сервис не вернется в нормальное состояние.

Я старался interval = 0 параметр в tification.conf, но это не соответствует требованию.

Он отправляет оповещение каждые 10 минут, если служба не в порядке, но не проверяет службу.

Например, если обслуживание приходит в норму до 180 минут (т.е. при следующей проверке), оно будет продолжать оповещение до следующей проверки.

Нашел похожий вопрос здесь, но это для Nagios, и я не могу объединить его с Icinga2.

Я уверен, что это будет сделано с помощью CHANGE_NORMAL_SVC_CHECK_INTERVAL параметр, но не знаю, как его реализовать.

Я также нашел ниже страницы Icinga:

Icinga внешняя команда ссылка

Пожалуйста, помогите.

1 ответ

Решение

Это то, что я сделал, чтобы решить мою проблему.

1. Создан скрипт/icinga/plugins/change_check_interval.sh

#!/bin/bash

now=`date +%s`
commandfile='/var/run/icinga2/cmd/icinga2.cmd'
case "$1" in
    OK)
        /usr/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;servername;servicename;180\n" $now >> $commandfile
    ;;
    WARNING)
        ;;
    UNKNOWN)
        ;;
    CRITICAL)
        /usr/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;servername;servicename;10\n" $now >> $commandfile
        ;;
esac

exit 0

2. Затем использовал этот скрипт, чтобы определить event_command в commands.conf

object EventCommand  "change_check_interval"{
  import "plugin-event-command"
    command = [ "/icinga/plugins/change_check_interval.sh", "$service.state$" ]
}

3. И использовал event_command в services.conf

apply Service "Service-Name" {
 import "template"
  check_command = "nrpe-arg"
  vars.remote_nrpe_command = "nrpe command"
  vars.remote_nrpe_arguments = "arg1"
  event_command = "change_check_interval"
  assign where host.name == "servername"
}

Этот обработчик событий запускается каждые 180 минут, когда служба исправна, и каждые 10 минут, когда служба критична.

Другие вопросы по тегам