มีวิธีใดบ้างที่supervisord
สามารถรีสตาร์ทงานที่ล้มเหลว / ออก / สิ้นสุดโดยอัตโนมัติและส่งอีเมลแจ้งเตือนพร้อมกับดัมพ์ของไฟล์บันทึกการทำงาน x บรรทัดสุดท้าย?
มีวิธีใดบ้างที่supervisord
สามารถรีสตาร์ทงานที่ล้มเหลว / ออก / สิ้นสุดโดยอัตโนมัติและส่งอีเมลแจ้งเตือนพร้อมกับดัมพ์ของไฟล์บันทึกการทำงาน x บรรทัดสุดท้าย?
คำตอบ:
มีปลั๊กอินที่เรียกว่า 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 และใช้ crashmail แบบนี้:
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
และฉันไม่ได้รับอะไรเลย ....
ไฟล์ 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())