Est-il supervisord
possible 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?
Est-il supervisord
possible 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?
Réponses:
Il existe un plugin appelé superlance.
Vous l'installez pip install superlance
ou 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.conf
et ajoutez les lignes suivantes:
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m email1@example.com
events=PROCESS_STATE
Ceci devrait être suivi d'une "mise à jour de supervisorctl". Quand un processus "se termine", vous recevrez maintenant une notification à email1@example.com.
Si vous souhaitez uniquement écouter certaines applications sélectionnées, vous pouvez les échanger -a
contre 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 cette option autorestart
est définie sur true
(elle est définie unexpected
par 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
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 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())