
Necesito ejecutar un script de shell si un servicio está bien con monit, para vincularlo a mi otro sistema de monitoreo (nagios).
Básicamente lo que necesito lograr es hacer que monit envíe una alerta cuando se reinicie un servicio y otra alerta cuando el servicio esté bien.
He probado lo siguiente sin suerte:
if 1 restarts within 1 cycles then exec "<send WARNING alert here>"
if 0 restarts within 5 cycles then exec "<send OK alert here>"
Lo anterior se queja del "Error: valores cero o negativos no permitidos en una declaración de tasa de acción ''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>"
Lo anterior se queja del "más"... Creo que "Si X se reinicia" no admite un "más"
¿Alguna sugerencia para lograr esto?
Respuesta1
Ya que usted dice que monit alimenta NAGIOS, ¿por qué no usar NAGIOS para hacer el trabajo pesado (es decir, decidir y enviar notificaciones)? Si monit monitorea los reinicios, puede usarlo send_nsca
para notificar a NAGIOS que se ha producido un reinicio.
NAGIOS, a su vez, puede recibir esto en un servicio pasivo que está diseñado para notificar sobre una sola alerta, pero también se define con una prueba de actualización tal que si no escucha nada durante un período determinado (aquí, 60 minutos), invoca un script que devuelve "0 OK", por lo que notificará "OK" ese período de tiempo después de una notificación de reinicio.
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
}
y
define command{
command_name no-restarts-ok
command_line $USER1$/check_dummy 0 OK
}