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

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

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

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

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

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

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

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

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

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

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

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

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 минут, когда обслуживание критично.