alert - for - monit port
obtener monit para alertar primero y reiniciar más tarde (1)
EDITAR (IMPORTANTE) : vea los comentarios a continuación para las versiones más recientes (de febrero de 2019) de Monit, donde se ha mejorado este comportamiento.
Esta línea:
if does not exist for 3 cycles then restart
Significa lo siguiente:
No realice ninguna acción hasta que haya comprobado 3 veces que el servicio no existe, luego reinícielo. Este comportamiento se describe en la documentación de monit como tolerancia a fallos:
FALTA DE LA TOLERANCIA
De forma predeterminada, la acción se ejecuta si coincide y el servicio se establece en un estado de error. Sin embargo, puede requerir que una prueba falle más de una vez antes de que se desencadene el evento de error y el estado del servicio cambie a falla. Esto es útil para evitar recibir alertas sobre errores espurios, que pueden suceder, especialmente con las pruebas de red.
Sintaxis:
PARA CICLOS ... o:
[TIEMPOS DENTRO DE] CICLOS ...
En consecuencia, Monit no cambiará el estado del servicio hasta que falle dentro de los siguientes X ciclos. Para confirmar esta declaración, simplemente elimine la tolerancia a fallas para este servicio y use solo:
if does not exist then alert
detener manualmente el servicio y confirmar que el comando
monit status
muestra ahora el estado "No existe" tan pronto como lo detienes.
Así que, volviendo a sus preguntas:
- Sí, es posible enviar una alerta (por correo electrónico) dentro de 1 ciclo. Para eso, debe definir la opción "si no existe, entonces alertar" para ese servicio y configurar las Alertas de correo electrónico correctamente. Suponiendo que desea utilizar un servidor de correo electrónico externo, debe definir al menos dos líneas (Ejemplo de configuración con gmail):
CONFIGURACIÓN DEL SERVIDOR SMTP
set mailserver smtp.gmail.com PORT 587 USERNAME "[email protected]" PASSWORD "xxxxx" using TLSV1 with timeout 30 seconds
(Tenga en cuenta que en gmail debe activar el acceso para aplicaciones "no seguras" para permitir que monit utilicen el servicio stmp)
y
RECEPTOR DE CORREO ELECTRÓNICO
set alert [email protected]
tanto en el archivo / etc / monit / monitrc. Consulte la documentación oficial para obtener más información sobre estas dos líneas.
- Por lo que se indica en la documentación, no es posible actualizar el estado del servicio de forma inmediata si se define una tolerancia a fallos (realizar una acción después de X ciclos). Pero aún puede definir las alertas que se enviarán inmediatamente y reiniciar el servicio dentro de los ciclos deseados.
Referencias:
La documentación de Monit: https://mmonit.com/monit/documentation/monit.html
¡Espero eso ayude!
Saludos
Me gustaría manejar un tipo de cadena de acción en monit.
- Compruebe para saber si hay un proceso y alerta inmediatamente.
- reiniciar el proceso después de un número de ciclos.
Mis intentos (hasta ahora):
check process myprocess with pidfile /run/my.pid
start program = "/path/to/binary start" with timeout 60 seconds
stop program = "/path/to/binary stop" with timeout 60 seconds
if not exist for 3 cycles then restart
if not exist then alert
if 3 restarts within 3 cycles then timeout
No alerta y se mantiene en estado "en ejecución" en caso de error de PID pero se reinicia después de los 3 ciclos.
check process myprocess with pidfile /run/my.pid
start program = "/path/to/binary start" with timeout 60 seconds
stop program = "/path/to/binary stop" with timeout 60 seconds
if not exist for 3 cycles then restart
if children < 1 for 1 cycles then alert
if 3 restarts within 3 cycles then timeout
No hay alerta de niños <1, pero reinicie afer 5.
monit.log
[CEST Aug 1 15:09:30] error : ''myprocess'' process is not running
resumen de monit
Process ''myprocess'' Running
Aquí está la parte de monitores:
Existence = if does not exist 3 times within 3 cycle(s) then restart else
if succeeded 1 times within 1 cycle(s) then alert
Pid = if changed 1 times within 1 cycle(s) then alert
Ppid = if changed 1 times within 1 cycle(s) then alert
Children = if less than 1 1 times within 1 cycle(s) then alert else if
succeeded 1 times within 1 cycle(s) then alert
Timeout = If restarted 3 times within 3 cycle(s) then unmonitor
Entonces, la pregunta: ¿es posible enviar una alerta y cambiar el estado a ''No se ejecuta'' dentro de 1 ciclo y reiniciar después de 3?