Подтвердить что ты не робот

Можно ли использовать Monit вместо базовой установки Upstart?

Я настраиваю свой сервер для запуска node.js в качестве демона. Я настроил Upstart, чтобы обрабатывать запуск и завершение работы node, который отлично работает. Следующий шаг - убедиться, что node.js перезапускается, если он умирает. Несколько руководств предложили использовать Monit ( или Fugue) для контроля процесса (в случае Monit, выполнив HTTP-запрос на сервер и ожидая ответа).

Я рад использовать что-то вроде Monit или Fugue, но я не уверен, почему один не мог (или не мог) просто использовать Upstart респауна. Я предполагаю, что Upstart будет контролировать PID запущенного процесса и просто отталкивать его снова, если он умрет. Что Monit или Fugue дают вам, что Upstart не делает?

4b9b3361

Ответ 1

Учитывая, что Upstart просто проверяет PID, такой инструмент, как Monit, который делает фактический запрос, будет более точно отвечать на ваши вопросы. Процесс может быть успешно запущен, но застрял таким образом, чтобы он не обслуживал запросы.

Ответ 2

Я настоятельно рекомендую использовать как Monit AND upstart. Upstart упрощает деамонизацию node.js и Monit поставляется с множеством полезных проверок приложений, включая использование памяти, HTTP-запросы, использование процессора,...

Это пример самой базовой настройки, которую вы можете получить. Вы также можете легко добавить еще одну конфигурацию monit (с тем же запуском и остановкой script), но используя файл PID и статистику процесса мониторинга.

Для приведенной ниже конфигурации создайте в своем приложении простой обработчик запросов локального типа, который будет отвечать только статусом 200, если все в порядке.

Monit config:

check host app_name with address 127.0.0.1
    start "/sbin/start app_name"
    stop "/sbin/stop app_name"
    if failed port 80 protocol HTTP
        request /ok
        with timeout 5 seconds
        then restart

Upstart script (/etc/init/app_name):

description "app_name"

start on startup
stop on shutdown

script
    # Node needs HOME to be set
    export HOME="path/to/node/app"

    exec sudo -u nodejs /usr/local/bin/node path/to/node/app/server.js production 2>>/var/log/app_name.error.log >>/var/log/app_name.log
end script