Apakah ada cara supervisord
untuk secara otomatis memulai kembali pekerjaan yang gagal / keluar / dihentikan dan mengirimi saya email pemberitahuan dengan dump x baris terakhir file log?
Apakah ada cara supervisord
untuk secara otomatis memulai kembali pekerjaan yang gagal / keluar / dihentikan dan mengirimi saya email pemberitahuan dengan dump x baris terakhir file log?
Jawaban:
Ada sebuah plugin bernama superlance.
Anda menginstalnya pip install superlance
atau mengunduhnya di: http://pypi.python.org/pypi/superlance
Hal berikutnya yang Anda lakukan adalah masuk ke Anda supervisord.conf
dan menambahkan baris berikut:
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m email1@example.com
events=PROCESS_STATE
Ini harus diikuti oleh "pembaruan supervisorctl". Saat proses "keluar" Anda sekarang akan mendapatkan notifikasi yang dikirim ke email1@example.com.
Jika Anda hanya ingin mendengarkan beberapa aplikasi yang dipilih Anda dapat bertukar -a
untuk -p program1
atau jika itu adalah kelompok group1:program2
Salah satu contoh akan
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -p program1 -p group1:program2 -m email1@example.com
events=PROCESS_STATE
Mengenai restart otomatis: Anda harus memastikan bahwa autorestart
diatur ke true
(diatur ke unexpected
default). 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
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 mymail@mail.fr
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())