
Preciso executar um script de shell se um serviço estiver ok com o monit, para vincular ao meu outro sistema de monitoramento (nagios).
Basicamente o que preciso fazer é fazer com que o monit envie um alerta quando um serviço for reiniciado e outro alerta quando o serviço estiver ok.
Eu tentei o seguinte sem sorte:
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
if 0 restarts within 5 cycles then exec "<send OK alert here>"
A reclamação acima sobre "Erro: valores zero ou negativos não permitidos em uma instrução de taxa de ação ''OK''"
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
else if succeeded for 5 cycles then exec "<send OK alert here>"
O texto acima reclama do "else"... Acredito que o "If X Restarts" não suporta um "else"
Alguma sugestão para conseguir isso?
Responder1
Já que você diz que o monit está alimentando o NAGIOS, por que não usar o NAGIOS para fazer o trabalho pesado (ou seja, decidir e enviar notificações)? Se o monit monitorar as reinicializações, ele poderá send_nsca
notificar o NAGIOS que uma reinicialização ocorreu.
O NAGIOS, por sua vez, pode receber isso em um serviço passivo projetado para notificar sobre um único alerta, mas também é definido com um teste de atualização de modo que, se não ouvir nada por um determinado período (aqui, 60 minutos), ele invoca um script que retorna "0 OK" e notificará "OK" nesse período de tempo após uma notificação de reinicialização.
define service{
use <standard template>
host_name foo
service_description bar
active_checks_enabled 0
passive_checks_enabled 1
check_command no-restarts-ok
check_freshness 1
max_check_attempts 1
normal_check_interval 60
}
e
define command{
command_name no-restarts-ok
command_line $USER1$/check_dummy 0 OK
}