web-dev-qa-db-fra.com

Obtenez une notification de Supervisord lorsqu'un emploi sort

Y a-t-il une façon supervisord peut redémarrer automatiquement un travail échoué/exitéré/terminé et Envoyez-moi un e-mail de notification avec une vidée des dernières lignes X du fichier journal?

36
Sebastian Hoitz

Il y a un plugin appelé superlance.

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

La prochaine chose que vous faites est que vous allez dans votre supervisord.conf et ajouter les lignes suivantes:

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

Cela devrait être suivi d'une "mise à jour de super fichesDCTL". Lorsqu'un processus "sort", vous obtiendrez maintenant une notification envoyée à [email protected].

Si vous souhaitez seulement écouter certaines applications sélectionnées, vous pouvez échanger le -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 [email protected]
events=PROCESS_STATE

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

Exemple de programme:

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

J'ai essayé d'installer la superlusion et de courir des crashmail comme ceci:

Sudo apt-get install python-pip
Sudo pip install superlance

après avoir fait:

Sudo nano /etc/supervisor/supervisord.conf

et après que 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 de 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())
0
Ben Pgm