Otrzymuj powiadomienia od przełożonego, gdy kończy pracę

36

Czy jest jakiś sposób, supervisordaby automatycznie zrestartować nieudane / zakończone / zakończone zadanie i wysłać mi powiadomienie e-mailem ze zrzutem ostatnich x wierszy pliku dziennika?

Sebastian Hoitz
źródło

Odpowiedzi:

49

Istnieje wtyczka o nazwie superlance.

Instalujesz go pip install superlancelub pobierasz ze strony : http://pypi.python.org/pypi/superlance

Następną rzeczą, którą robisz, jest przejście do supervisord.confi dodanie następujących wierszy:

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

Po tym powinna nastąpić „aktualizacja supervisorctl”. Po zakończeniu procesu otrzymasz powiadomienie na adres [email protected].

Jeśli chcesz słuchać tylko wybranych aplikacji, możesz wymienić je -ana a -p program1lub jeśli jest to grupa group1:program2Jednym z nich byłby

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p program1 -p group1:program2  -m [email protected]
events=PROCESS_STATE

Odnośnie automatycznego restartu: powinieneś upewnić się, że autorestartjest ustawiony na true(jest ustawiony unexpecteddomyślnie). W ten sposób pakiet zostanie ponownie uruchomiony 3 razy. Jeśli po tym nadal wychodzi, poddaje się, ale możesz to zmienić za pomocą startretries.

Przykładowy program:

[program:cat]
command=/bin/cat
autorestart=true
startretries=10
Thomaschaaf
źródło
Pomimo braku aktywności przez kilka lat ten wątek jest nadal aktualny - właśnie przetestowałem superlance 1.0.0 (datowany na październik 2016 r.) Z superwizorem 3.1.4 (CentOS7), a crashmail działał dobrze.
David Ramirez
0

Próbowałem zainstalować superlance i uruchomić crashmail w następujący sposób:

sudo apt-get install python-pip
sudo pip install superlance

po zrobieniu:

sudo nano /etc/supervisor/supervisord.conf

i po dodaniu:

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

i nic nie otrzymuję ....

Mój plik crashmail to:

#!/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())
Ben Pgm
źródło