Назад | Перейти на главную страницу

Superlance crashmail не отправляет электронную почту с помощью настраиваемой почтовой программы

У меня есть супервизор, который запускает программу, и когда программа вылетает из строя, я бы хотел, чтобы мне пришло письмо от 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, так как электронные письма для отправки уведомлений жестко запрограммированы. Это влияет на аварийную почту?

Мне не удалось заставить работать аварийную почту, поэтому вот два решения, которые я попробовал.

  1. Мониторинг процесса супервизора с помощью прослушивателя событий на основе узла

супервизор-слушатель событий

Вот конфигурация:

    [eventlistener:monitoring]
    command = /usr/bin/nodejs /etc/supervisor/monitoring.js
    events = PROCESS_STATE,PROCESS_COMMUNICATION,SUPERVISOR_STATE_CHANGE

Из документации Вот, вы можете прослушивать любое событие и отправлять электронное письмо в рамках этого обратного вызова функции.

  1. Так как сервис, который нужно отслеживать, является веб-сервисом. Я использую 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