Ricevi una notifica da Supervord quando esce un lavoro


36

Esiste un modo per supervisordriavviare automaticamente un processo non riuscito / uscito / terminato e inviarmi un'e-mail di notifica con un dump delle ultime x righe del file di registro?

Risposte:


49

C'è un plugin chiamato superlance.

Lo installi pip install superlanceo lo scarichi all'indirizzo: http://pypi.python.org/pypi/superlance

La prossima cosa che fai è andare nel tuo supervisord.confe aggiungere le seguenti righe:

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m email1@example.com
events=PROCESS_STATE

Questo dovrebbe essere seguito da un "aggiornamento supervisore". Quando un processo "termina" ora riceverai una notifica inviata a email1@example.com.

Se desideri solo ascoltare alcune app selezionate, puoi scambiarle -acon una -p program1o se si tratta di un gruppo group1:program2Un esempio potrebbe essere

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p program1 -p group1:program2  -m email1@example.com
events=PROCESS_STATE

Per quanto riguarda il riavvio automatico: accertarsi che autorestartsia impostato su true(è impostato per unexpectedimpostazione predefinita). In questo modo il pacchetto verrà riavviato 3 volte. Se dopo ciò esce ancora, si arrende, ma puoi cambiarlo con startretries.

Esempio di programma:

[program:cat]
command=/bin/cat
autorestart=true
startretries=10

Nonostante sia inattivo da alcuni anni questo thread è ancora valido - ho appena testato la superlance 1.0.0 (datata ottobre 2016) con il supervisore 3.1.4 (CentOS7) e il crashmail ha funzionato bene.
David Ramirez,

0

Ho provato a installare superlance ed eseguire crashmail in questo modo:

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

dopo che lo faccio:

sudo nano /etc/supervisor/supervisord.conf

e dopo aver aggiunto:

[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m mymail@mail.fr
events=PROCESS_STATE

e non ricevo nulla ....

Il mio file crashmail è:

#!/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())
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.