Dapatkan pemberitahuan dari pengawas ketika suatu pekerjaan keluar

36

Apakah ada cara supervisorduntuk secara otomatis memulai kembali pekerjaan yang gagal / keluar / dihentikan dan mengirimi saya email pemberitahuan dengan dump x baris terakhir file log?

Sebastian Hoitz
sumber

Jawaban:

49

Ada sebuah plugin bernama superlance.

Anda menginstalnya pip install superlanceatau mengunduhnya di: http://pypi.python.org/pypi/superlance

Hal berikutnya yang Anda lakukan adalah masuk ke Anda supervisord.confdan menambahkan baris berikut:

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

Ini harus diikuti oleh "pembaruan supervisorctl". Saat proses "keluar" Anda sekarang akan mendapatkan notifikasi yang dikirim ke [email protected].

Jika Anda hanya ingin mendengarkan beberapa aplikasi yang dipilih Anda dapat bertukar -auntuk -p program1atau jika itu adalah kelompok group1:program2Salah satu contoh akan

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

Mengenai restart otomatis: Anda harus memastikan bahwa autorestartdiatur ke true(diatur ke unexpecteddefault). Dengan cara ini paket akan di-restart 3 kali. Jika setelah itu masih keluar, itu menyerah, tetapi Anda dapat mengubahnya dengan startretries.

Contoh program:

[program:cat]
command=/bin/cat
autorestart=true
startretries=10
Thomaschaaf
sumber
Meskipun tidak aktif selama beberapa tahun utas ini masih valid - Saya baru saja menguji superlance 1.0.0 (tanggal Oktober 2016) dengan pengawas 3.1.4 (CentOS7) dan crashmail bekerja dengan baik.
David Ramirez
0

Saya mencoba menginstal superlance dan menjalankan crashmail seperti ini:

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

setelah saya lakukan:

sudo nano /etc/supervisor/supervisord.conf

dan setelah saya menambahkan:

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

dan aku tidak menerima apapun ....

File crashmail saya adalah:

#!/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
sumber