Obtenga una notificación del supervisor cuando finalice un trabajo

36

¿Hay alguna manera de supervisordreiniciar automáticamente un trabajo fallido / salido / terminado y enviarme un correo electrónico de notificación con un volcado de las últimas x líneas del archivo de registro?

Sebastian Hoitz
fuente

Respuestas:

49

Hay un complemento llamado superlance.

Lo instala pip install superlanceo lo descarga en: http://pypi.python.org/pypi/superlance

Lo siguiente que debes hacer es entrar en tu supervisord.confy agregar las siguientes líneas:

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m [email protected]
events=PROCESS_STATE

Esto debe ser seguido por una "actualización de supervisorctl". Cuando un proceso "finaliza", ahora recibirá una notificación enviada a [email protected].

Si solo desea escuchar algunas aplicaciones seleccionadas, puede cambiarlas -apor -p program1o si es un grupo. group1:program2Un ejemplo sería

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p program1 -p group1:program2  -m [email protected]
events=PROCESS_STATE

Con respecto al reinicio automático: debe asegurarse de que autorestartesté configurado en true(está configurado unexpectedde forma predeterminada). De esta manera, el paquete se reiniciará 3 veces. Si después de eso todavía sale, se da por vencido, pero puede cambiar eso con startretries.

Programa de ejemplo:

[program:cat]
command=/bin/cat
autorestart=true
startretries=10
Thomaschaaf
fuente
A pesar de estar inactivo durante algunos años, este hilo sigue siendo válido: acabo de probar Superlance 1.0.0 (con fecha de octubre de 2016) con el supervisor 3.1.4 (CentOS7) y el crashmail funcionó bien.
David Ramirez el
0

Intenté instalar superlance y ejecutar crashmail de esta manera:

sudo apt-get install python-pip
sudo pip install superlance

después de que lo haga:

sudo nano /etc/supervisor/supervisord.conf

y luego agregué:

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m [email protected]
events=PROCESS_STATE

y no recibo nada ...

Mi archivo crashmail es:

#!/usr/bin/python

-- coding: utf-8 --
import re
import sys

from superlance.crashmail import main

if name == 'main':
sys.argv[0] = re.sub(r'(-script.pyw?|.exe)?$', '', sys.argv[0])
sys.exit(main())
Ben Pgm
fuente