Gibt es eine Möglichkeit, supervisordeinen 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, supervisordeinen 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 superlanceoder laden es herunter unter: http://pypi.python.org/pypi/superlance
Das nächste, was Sie tun, ist, dass Sie in Ihre gehen supervisord.confund 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 -agegen eine austauschen, -p program1oder wenn es sich um eine Gruppe handelt. group1:program2Ein 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 autorestartauf true( unexpectedstandardmäß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())