¿Hay algún beneficio al usar Monit en lugar de una configuración básica de advenimiento?


Estoy configurando mi servidor para ejecutar node.js como un demonio. He configurado Upstart para manejar el inicio y el apagado del nodo, lo que funciona maravillosamente. El siguiente paso es asegurarse de que el nodo.js se reinicia si muere. Algunas de las guías han sugerido usar Monit (o Fuga) para monitorear el proceso (en el caso de Monit haciendo una solicitud HTTP al servidor y esperando una respuesta).

Estoy feliz de usar algo como Monit o Fuga, pero no estoy seguro de por qué uno no usaría (o no podría) la función de reaparición de Upstart . Asumo que Upstart monitoreará el PID del proceso iniciado y lo pondrá en marcha de nuevo si muere. ¿Qué te da Monit o Fuga que el advenedizo no te da?

Author: this.lau_, 2011-01-18

2 answers

Dado que Upstart solo comprueba el PID, una herramienta como Monit que hace una solicitud real le proporcionará una respuesta de la cordura de la aplicación más fielmente. Un proceso puede estar felizmente en ejecución pero atascado de alguna manera tal que no está sirviendo solicitudes.

 39
Author: flq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-21 06:49:37

Recomiendo usar tanto Monit COMO upstart. Upstart hace que sea fácil de desamonizar nodo.js y Monit viene repleto de toneladas de comprobaciones de aplicaciones útiles, incluyendo el uso de memoria, solicitudes http, uso de cpu, ...

Este es un ejemplo de la configuración más básica que puede obtener. También puede agregar fácilmente otra configuración de monit (con el mismo script de inicio y parada), pero utilizando el archivo PID y las estadísticas del proceso de monitoreo.

Para la siguiente configuración, cree una simple solicitud solo local manejador en su aplicación que solo responde con estado 200 si todo está bien.

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
 76
Author: Daniel Beardsley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-18 22:37:57