Lassen Sie sich vom Vorgesetzten benachrichtigen, wenn ein Job beendet wird


36

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:


49

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

Obwohl dieser Thread für einige Jahre inaktiv war, ist er immer noch gültig - ich habe gerade superlance 1.0.0 (vom Oktober 2016) mit Supervisor 3.1.4 (CentOS7) getestet und die Crashmail hat einwandfrei funktioniert.
David Ramirez

0

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())
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.