Eu configuro verificações passivas no nagios para vários eventos. Então, no final do evento, a verificação passiva é enviada para nagios (seja via script wrapper ou embutida no próprio evento). Se a verificação passiva não tiver sido recebida em renewal_threshold segundos, ela executará check_command localmente. check_command é configurado como um script de shell simples que retorna crítico e as informações da descrição do serviço.
Eu não tenho exemplos de código à mão, mas se eu pudesse, se o interesse é mostrado.
EDIT ONE exemplos de código adicionados:
Isso pressupõe que você tenha feito a configuração básica para NSCA e send_nsca (certifique-se de que password e encryption_method sejam os mesmos em send_nsca.cfg no cliente e nsca.cfg no servidor nagios. Em seguida, inicie o daemon nsca no servidor nagios. )
Primeiro, definimos um modelo que outras verificações passivas podem usar. Isso vai para services.cfg.
define service {
name standard-passive-service-template
active_checks_enabled 0
passive_checks_enabled 1
check_freshness 1
max_check_attempts 1
normal_check_interval 10
retry_check_interval 5
contact_groups sysadmins
notification_interval 0
notification_options w,u,c,r
notification_period 24x7
check_period 24x7
check_command check_failed!$SERVICEDESC$
register 0
}
Isso diz que, se uma notificação não chegar, execute check_failed com $ SERVICEDESC $ como argumento. Vamos definir o comando check_failed em commands.cfg.
define command {
command_name check_failed
command_line /usr/lib/nagios/plugins/check_failed $ARG1$
}
Aqui está o script /usr/lib/nagios/plugins/check_failed
.
#!/bin/bash
/bin/echo "No update from $*. Is NSCA running?"
exit 2
Ter uma saída de 2 torna esse serviço crítico de acordo com os nagios (veja abaixo todos os estados de serviço do nagios.) O fornecimento de /usr/lib/nagios/plugins/utils.sh
é uma outra maneira e, em seguida, você poderia exit $STATE_CRITICAL
. Mas o acima funciona mesmo que você não tenha isso.
Isso fornece o aviso adicional de "A NSCA está em execução" porque pode ser o caso de o serviço não ter feito o check-in corretamente OU pode ser o caso de a NSCA ter falhado. Isso é mais comum do que se imagina. Se várias verificações passivas vierem de uma só vez, verifique se há algum problema com a NSCA.
Agora precisamos de uma verificação passiva para aceitar os resultados. Neste exemplo, tenho uma tarefa cron especialmente criada que conhece todos os diferentes tipos de controladores RAID em nosso ambiente. Quando executado, envia uma notificação para esta verificação passiva. Neste exemplo, não quero ser acordado no meio da noite (edite notification_period conforme necessário).
define service {
use standard-passive-service-template
hostgroup_name all
service_description raidcheck
notification_period daytime
flap_detection_enabled 1
freshness_threshold 7500 # 125 minutes
notification_options c
is_volatile 0
servicegroups raidcheck
}
Agora, há o cronjob que envia informações de volta ao servidor nagios. Aqui está a linha em /etc/cron.d/raidcheck
0 * * * * root /usr/local/bin/raidcheck --cron | /usr/sbin/send_nsca -H nagios -to 1000 >> /dev/null 2>&1
Veja man send_nsca
para opções, mas as partes importantes são 'nagios' é o nome do meu servidor nagios e a string que é impressa no final deste script. send_nsca
espera uma linha no stdin do formulário (perl aqui)
print "$hostname\t$check\t$state\t$status_info\n";
$ hostname é óbvio, $ check neste caso é 'raidcheck', $ state é o estado do serviço nagios (0 = OK, 1 = aviso, 2 = crítico, 3 = desconhecido, 4 = dependente.) e $ status_info é uma mensagem opcional para enviar como informações de status.
Agora podemos testar a verificação na linha de comando do cliente:
echo -e "$HOSTNAME\traidcheck\t2\tUh oh, raid degraded (just kidding..)" | /usr/sbin/send_nsca -H nagios
Isso nos dá uma verificação passiva nagios que espera ser atualizada a cada frescura_o segundo período. Se a verificação não for atualizada, check_command (check_failed neste caso) será executado. O exemplo acima é para uma instalação do nagios 2.X, mas provavelmente funcionará (talvez com pequenas modificações) para o nagios 3.X.