Есть ли польза от использования Monit вместо базовой настройки выскочки?


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

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

2   52  

2 ответа:

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

я настоятельно рекомендую использовать как Монит и выскочка. Выскочка позволяет легко деамонизировать узел.js и Monit поставляется с множеством полезных проверок приложений, включая использование памяти, http-запросы ,использование ЦП...

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

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

Монит конфиг:

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

скрипт выскочки (/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