supervisord
失敗/終了/終了したジョブを自動的に再起動し、ログファイルの最後のx行のダンプを含む通知メールを送信する方法はありますか?
supervisord
失敗/終了/終了したジョブを自動的に再起動し、ログファイルの最後のx行のダンプを含む通知メールを送信する方法はありますか?
回答:
superlanceと呼ばれるプラグインがあります。
http://pypi.python.org/pypi/superlancepip install superlance
でインストールまたはダウンロードします。
次に行うことはsupervisord.conf
、次の行を追加して追加することです。
[eventlistener:crashmail]
command=/usr/local/bin/crashmail -a -m email1@example.com
events=PROCESS_STATE
これに続いて、「supervisorctl update」が必要です。プロセスが「終了」すると、email1 @ example.comに通知が送信されます。
いくつかの選択したアプリだけを聴きたい場合は、に交換-a
する-p program1
か、グループでgroup1:program2
ある場合は1つの例です
[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
スーパーランスをインストールして、次のように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())