我有主管运行一个程序,当程序崩溃时,我希望 crashmail 给我发送一封电子邮件。我已经创建了自己的二进制文件来发送邮件,我希望 crashmail 使用它。如果我从我的服务器独立运行二进制文件,它会给我发送一封电子邮件。
我根据 PID 终止了该进程,但没有发送电子邮件。
这是我的配置:
[eventlistener:crashmail]
command=crashmail -a -m [email protected] -s /usr/local/bin/mailer
stdout_logfile = /var/www/services/crashmail.log
events=PROCESS_STATE_EXITED, PROCESS_STATE_STOPPED, PROCESS_STATE_STOPPING
我的二进制文件不接受来自 STDIN 的任何内容,因为要发送通知的电子邮件是硬编码的。这会影响 crashmail 吗?
答案1
我无法使 crashmail 正常工作,因此我尝试了以下两种解决方案。
- 使用基于节点的事件监听器监控主管进程
配置如下:
[eventlistener:monitoring]
command = /usr/bin/nodejs /etc/supervisor/monitoring.js
events = PROCESS_STATE,PROCESS_COMMUNICATION,SUPERVISOR_STATE_CHANGE
来自文档这里,您可以监听任何事件并在该函数回调内发送电子邮件。
由于需要监控的服务是 Web 服务。我使用 cron 定期检查网站;如果返回非 200 响应代码,则在用于检查响应代码的 bash 脚本中发送电子邮件。
#!/bin/bash httpCode=$(curl -s -o /dev/null -w "%{http_code}" siteUrl) if [ $httpCode -eq "200" ] then echo "OK" else //send email fi