有什么方法supervisord
可以自动重新启动失败/退出/终止的作业,并向我发送通知电子邮件,其中包含日志文件的最后x行的转储?
有什么方法supervisord
可以自动重新启动失败/退出/终止的作业,并向我发送通知电子邮件,其中包含日志文件的最后x行的转储?
Answers:
有一个名为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并运行崩溃邮件,如下所示:
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
而且我什么也没收到。
我的崩溃邮件文件是:
#!/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())