Definindo dinamicamente o parâmetro check_interval com base no Service_State no Icinga2

3

Eu tenho um requisito em que o intervalo de verificação é de 180 minutos, enquanto o intervalo de notificação é de 10 minutos. Significa que o dono do serviço quer que ele perca algum alerta que geralmente vem depois de 180 minutos se o serviço for crítico, então Icinga continuará checando e informando a cada 10 minutos até que o serviço volte ao normal.

Eu tentei o parâmetro interval = 0 em notification.conf, mas isso não está cumprindo o requisito.

Ele envia um alerta a cada 10 minutos se o serviço não estiver correto, mas não verificar o serviço.

Por exemplo. Se o serviço chegar ao normal antes dos 180 minutos (ou seja, no próximo teste), ele continuará em alerta até o próximo teste.

Encontrou uma questão semelhante aqui mas é para Nagios & Eu não sou capaz de mesclar com Icinga2.

Tenho certeza de que isso será feito usando o parâmetro CHANGE_NORMAL_SVC_CHECK_INTERVAL , mas não sei como implementá-lo.

Também encontrei abaixo a página da Icinga:

Link de comandos externos da Icinga

Por favor, ajude.

    
por Manii 31.05.2016 / 06:21

1 resposta

0

Foi o que fiz para resolver o meu problema.

1. Script criado /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. Então usei este script para definir event_command em commands.conf

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

3. E usei o event_command em 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"
}

Esse manipulador de eventos é executado a cada 180 minutos quando o serviço é aceitável enquanto é executado a cada 10 minutos quando o serviço é crítico.

    
por 17.07.2018 / 19:57