mmonit for examples alert restart monit

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:

  1. 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.

  1. 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?