38 votes

Obtenir une notification du superviseur lorsqu'un travail se termine.

Y a-t-il un moyen supervisord peut redémarrer automatiquement un travail qui a échoué/expiré/terminé. et m'envoyer un email de notification avec un dump des x dernières lignes du fichier journal ?

53voto

Wheelie Points 2365

Il existe un plugin appelé superlance.

Vous l'installez avec pip install superlance ou le télécharger à l'adresse suivante http://pypi.Python.org/pypi/superlance

La prochaine chose que vous faites est d'aller dans votre supervisord.conf et ajoutez les lignes suivantes :

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m email1@example.com
events=PROCESS_STATE

Cette opération doit être suivie d'un "supervisorctl update". Lorsqu'un processus "quitte", vous recevrez désormais une notification envoyée à email1@example.com.

Si vous ne voulez écouter que certaines applications sélectionnées, vous pouvez échanger l'écran de l'appareil contre celui de l'application. -a pour un -p program1 ou s'il s'agit d'un groupe group1:program2 Un exemple serait

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p program1 -p group1:program2  -m email1@example.com
events=PROCESS_STATE

En ce qui concerne le redémarrage automatique : vous devez vous assurer que autorestart est réglé sur true (il est réglé sur unexpected par défaut). De cette façon, le paquet sera redémarré 3 fois. Si après cela il sort toujours, il abandonne, mais vous pouvez changer cela avec startretries .

Exemple de programme :

[program:cat]
command=/bin/cat
autorestart=true
startretries=10

0voto

Ben Pgm Points 1

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

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

après que je l'ai fait :

sudo nano /etc/supervisor/supervisord.conf

et après avoir ajouté :

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m mymail@mail.fr
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())

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X