mmonit examples deployment node.js monit upstart

deployment - examples - ¿Hay algún beneficio al usar Monit en lugar de una configuración Upstart básica?



monit matching examples (2)

Dado que Upstart simplemente verifica el PID, una herramienta como Monit que hace una solicitud real le proporcionará una respuesta de sensatez de la aplicación de manera más fiel. Un proceso puede estar felizmente ejecutándose pero atorado de alguna manera, de modo que no está sirviendo solicitudes.

Estoy configurando mi servidor para ejecutar node.js como daemon. Configuré Upstart para manejar el inicio y el apagado del nodo, que funciona de maravilla. El siguiente paso es asegurarse de que node.js se reinicie si muere. Algunas de las guides han sugerido usar Monit (o Fugue ) para monitorear el proceso (en el caso de Monit haciendo una solicitud HTTP al servidor y esperando una respuesta).

Me complace 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. Supongo que Upstart controlará el PID del proceso lanzado y lo pondrá en marcha de nuevo si se muere. ¿Qué le ofrece Monit o Fuga que Upstart no ofrece?


Recomiendo usar tanto Monit AND advenedizo . Upstart hace que sea fácil desamonizar node.js y Monit viene repleto de toneladas de valiosas verificaciones de aplicaciones que incluyen 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 podría agregar fácilmente otra configuración monit (con el mismo script de inicio y detención) pero utilizando el archivo PID y las estadísticas del proceso de supervisión.

Para la configuración siguiente, cree un controlador de solicitud simple y solo local en su aplicación que simplemente responda con el 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

Script upstart (/ etc / init / nombre_apl):

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