У меня есть супервизор, который запускает программу, и когда программа вылетает из строя, я бы хотел, чтобы мне пришло письмо от crashmail. Я создал свой собственный двоичный файл, который отправляет почту, и я хотел бы, чтобы он использовал crashmail. Если я запускаю двоичный файл отдельно со своего сервера, он отправляет мне электронное письмо.
Я убиваю процесс с помощью PID, но электронные письма не отправляются.
Вот моя конфигурация:
[eventlistener:crashmail]
command=crashmail -a -m dev@example.com -s /usr/local/bin/mailer
stdout_logfile = /var/www/services/crashmail.log
events=PROCESS_STATE_EXITED, PROCESS_STATE_STOPPED, PROCESS_STATE_STOPPING
Мой двоичный файл не принимает ничего от STDIN, так как электронные письма для отправки уведомлений жестко запрограммированы. Это влияет на аварийную почту?
Мне не удалось заставить работать аварийную почту, поэтому вот два решения, которые я попробовал.
Вот конфигурация:
[eventlistener:monitoring]
command = /usr/bin/nodejs /etc/supervisor/monitoring.js
events = PROCESS_STATE,PROCESS_COMMUNICATION,SUPERVISOR_STATE_CHANGE
Из документации Вот, вы можете прослушивать любое событие и отправлять электронное письмо в рамках этого обратного вызова функции.
Так как сервис, который нужно отслеживать, является веб-сервисом. Я использую 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
Ссылка: получить код ответа команда curl