web-dev-qa-db-ja.com

ジョブが終了したときに監督者から通知を受け取る

supervisordが失敗/終了/終了したジョブを自動的に再開できる方法はありますかおよびログファイルの最後のx行のダンプを含む通知メールを私に送信しますか?

36
Sebastian Hoitz

Superlanceと呼ばれるプラグインがあります。

pip install superlanceを使用してインストールするか、次の場所からダウンロードします。 http://pypi.python.org/pypi/superlance

次に、supervisord.confに移動して、次の行を追加します。

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

この後に「supervisorctl update」が続くはずです。プロセスが「終了」すると、email1 @ example.comに通知が送信されます。

選択した一部のアプリのみを聴きたい場合は、-a-p program1と交換するか、グループの場合はgroup1:program2を使用できます

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

自動再起動について:autorestarttrueに設定されていることを確認する必要があります(デフォルトではunexpectedに設定されています)。これにより、パッケージが3回再起動されます。それでも終了する場合はあきらめますが、startretriesで変更できます。

プログラム例:

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

私は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 [email protected]
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())
0
Ben Pgm