Obtenir une notification du superviseur à la sortie d'un travail

36

Est-il supervisordpossible de redémarrer automatiquement un travail en échec / abandonné / terminé et de m'envoyer un courrier électronique de notification avec un vidage des x dernières lignes du fichier journal?

Sebastian Hoitz
la source

Réponses:

49

Il existe un plugin appelé superlance.

Vous l'installez pip install superlanceou le téléchargez à l' adresse suivante : http://pypi.python.org/pypi/superlance

La prochaine chose que vous faites est que vous allez dans votre supervisord.confet ajoutez les lignes suivantes:

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

Ceci devrait être suivi d'une "mise à jour de supervisorctl". Quand un processus "se termine", vous recevrez maintenant une notification à [email protected].

Si vous souhaitez uniquement écouter certaines applications sélectionnées, vous pouvez les échanger -acontre un -p program1ou s'il s'agit d'un groupe. group1:program2Un exemple serait

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

En ce qui concerne le redémarrage automatique: vous devez vous assurer que cette option autorestartest définie sur true(elle est définie unexpectedpar défaut). De cette façon, le paquet sera redémarré 3 fois. Si, après cela, il existe toujours, il abandonne, mais vous pouvez changer cela avec startretries.

Exemple de programme:

[program:cat]
command=/bin/cat
autorestart=true
startretries=10
Thomaschaaf
la source
Malgré le fait qu'il soit inactif depuis quelques années, ce fil est toujours valide - je viens de tester superlance 1.0.0 (daté d'octobre 2016) avec le superviseur 3.1.4 (CentOS7) et le crash-mail a très bien fonctionné.
David Ramirez
0

J'ai essayé d'installer superlance et de lancer crashmail comme ceci:

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

après je fais:

sudo nano /etc/supervisor/supervisord.conf

et après j'ai ajouté:

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

et je ne reçois rien ....

Mon fichier crashmail est:

#!/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
la source