Gibt es eine Möglichkeit, supervisord
einen fehlgeschlagenen / beendet / abgebrochenen Job automatisch neu zu starten und mir eine Benachrichtigungs-E-Mail mit einem Speicherauszug der letzten x Zeilen der Protokolldatei zu senden?
Gibt es eine Möglichkeit, supervisord
einen fehlgeschlagenen / beendet / abgebrochenen Job automatisch neu zu starten und mir eine Benachrichtigungs-E-Mail mit einem Speicherauszug der letzten x Zeilen der Protokolldatei zu senden?
Antworten:
Es gibt ein Plugin namens Superlance.
Sie installieren es mit pip install superlance
oder laden es herunter unter: http://pypi.python.org/pypi/superlance
Das nächste, was Sie tun, ist, dass Sie in Ihre gehen supervisord.conf
und die folgenden Zeilen hinzufügen:
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m email1@example.com
events=PROCESS_STATE
Darauf sollte ein "supervisorctl update" folgen. Wenn ein Prozess "beendet" wird, wird eine Benachrichtigung an email1@example.com gesendet.
Wenn Sie nur einige ausgewählte Apps anhören möchten, können Sie die -a
gegen eine austauschen, -p program1
oder wenn es sich um eine Gruppe handelt. group1:program2
Ein Beispiel wäre
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p program1 -p group1:program2 -m email1@example.com
events=PROCESS_STATE
In Bezug auf den automatischen Neustart: Sie sollten sicherstellen, dass autorestart
auf true
( unexpected
standardmäßig) eingestellt ist. Auf diese Weise wird das Paket dreimal neu gestartet. Wenn es danach noch existiert, gibt es auf, aber Sie können das mit ändern startretries
.
Beispielprogramm:
[program:cat]
command=/bin/cat
autorestart=true
startretries=10
Ich habe versucht, superlance zu installieren und Crashmail wie folgt auszuführen:
sudo apt-get install python-pip
sudo pip install superlance
nachdem ich es getan habe:
sudo nano /etc/supervisor/supervisord.conf
und nachdem ich hinzugefügt habe:
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m mymail@mail.fr
events=PROCESS_STATE
und ich bekomme nichts ....
Meine crashmail Datei ist:
#!/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())