No Nagios, como posso ter um contato que recebe apenas uma notificação para cada falha?

1

Tenho o que acredito ser uma configuração comum do Nagios: quando um host ou serviço tem um problema, ele envia um e-mail para a pessoa de plantão e continua enviando e-mails a cada hora até que o problema seja confirmado ou desapareça próprio.

Gostaria agora de alimentar problemas (e resoluções, etc.) num sistema de registo e não quero ver as mensagens horárias de "serviço ainda está quebrado". Eu só quero ver o inicial, "Serviço está quebrado", seguido (talvez) por "Problema é reconhecido", seguido, eventualmente, por "Serviço está OK". (Especificamente, estou registrando em um canal do Slack, mas não acho que esse detalhe faça diferença na solução.)

Existe uma maneira fácil de configurar um contato "log" que receberá uma notificação para o primeiro serviço ou uma falha de host, mas não as repetidas?

Uma maneira teoricamente possível de fazer isso é através de escalações. Veja um exemplo de notificações de serviço:

define serviceescalation {
    host_name            *
    service_description  *

    contacts  slack

    first_notification  1
    last_notification   1
    escalation_options  w,c,u
}
define serviceescalation {
    host_name            *
    service_description  *

    contacts  slack

    first_notification  1
    last_notification   0
    escalation_options  r
}

Infelizmente, isso só recebe notificações de aviso, críticas, desconhecidas e de recuperação. Eu também gostaria de registrar as notificações de flapping e downtime, que não parecem ser passadas pelo sistema de escalonamento.

    
por asciiphil 05.01.2017 / 21:40

3 respostas

1

Você pode ativar o registro do syslog no arquivo de configuração principal e usar uma ferramenta como syslack , log-to-slack , ou similar para enviar para o Slack.

Além disso, como você suspeitava / insinuou, você pode fazer isso por meio de escalonamentos de host / serviço aplicados a grupos de hosts, grupos de serviço e / ou usando curingas.

A página de documentos "Truques de economia de tempo" mostra algumas formas de escalonamento pode ser aplicado amplamente.

Você também pode escrever um script de notificação personalizado (geralmente a solução para requisitos complexos de notificação) ou usar um o manipulador de eventos (se você precisar de mais flexibilidade).

    
por 09.01.2017 / 18:57
0

Desde que não entendi mal a questão, talvez você queira examinar as definições de objetos de hosts e serviços:

Definição do host

Você pode definir o valor notification_interval como 0, o Nagios chamará os x_notification_commands quando um Serviço ou um Host sair do estado HARD.

Exemplo de modelo:

define host{
notification_interval 0
...
_log_level 1
register 0
}

Você pode até brincar com variáveis personalizadas para definir seus próprios níveis de registro aqui.

    
por 09.01.2017 / 16:36
0

Por que você não pode simplesmente escrever um script de comando de notificação personalizado para o contato? Então você pode analisar os fluxos de mensagens usando macros da maneira que desejar.

define contact{
        name                            log-contact
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options       d,u,r,f,s
        service_notification_commands   logger-notify-service
        host_notification_commands      logger-notify-host
        register                        0
        }
    
por 09.01.2017 / 23:09

Tags