当作业退出时从 Supervisord 获取通知

当作业退出时从 Supervisord 获取通知

有什么方法supervisord可以自动重启失败/退出/终止的工作向我发送一封包含日志文件最后 x 行转储的通知电子邮件?

答案1

有一个插件叫 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”。当进程“退出”时,您将收到一条通知,发送至[电子邮件保护]

如果你只想收听一些选定的应用程序,你可以将 换成-a-p program1如果是一组应用group1:program2程序,例如

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

关于自动重启:您应该确保autorestart设置为true(默认情况下设置为unexpected)。这样,包将重新启动 3 次。如果此后它仍然退出,则放弃,但您可以使用 进行更改startretries

示例程序:

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

答案2

我尝试安装 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

但我什么也没收到……

我的崩溃邮件文件是:

#!/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())

相关内容