Отримуйте повідомлення від нагляду, коли робота закінчується


36

Чи може якийсь спосіб supervisordавтоматично перезапустити невдалу / виїзну / припинену роботу та надіслати мені повідомлення електронною поштою з дампами останніх x рядків файла журналу?

Відповіді:


49

Існує плагін під назвою superlance.

Ви встановлюєте pip install superlanceабо завантажуєте його за адресою: http://pypi.python.org/pypi/superlance

Наступне, що ви робите, - це перейти до свого supervisord.confі додати наступні рядки:

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

Після цього слід "оновлення Supervisorctl". Коли процес "завершиться", ви отримаєте сповіщення, надіслане на email1@example.com.

Якщо ви хочете слухати деякі вибрані додатки , які ви можете обміняти -aдля -p program1або , якщо це група group1:program2Приклад може служити

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

Щодо автоматичного перезавантаження: слід переконатися, що autorestartвстановлено значення true(воно встановлено unexpectedза замовчуванням). Таким чином пакет буде перезапущено 3 рази. Якщо після цього вона все-таки закінчується, вона здається, але ви можете змінити це за допомогою startretries.

Приклад програми:

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

Незважаючи на те, що він був неактивним протягом декількох років, цей потік все ще діє - я щойно перевірив superlance 1.0.0 (датований жовтнем 2016 року) з Supervisor 3.1.4 (CentOS7), і аварійна пошта працювала чудово.
Девід Рамірес

0

Я спробував встановити суперлайн та запустити аварійну пошту так:

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

після того як я роблю:

sudo nano /etc/supervisor/supervisord.conf

і після того, як я додав:

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

і я нічого не отримую….

Мій файл аварійної пошти:

#!/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())
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.