supervisorctl stop start how conf linux ubuntu monit supervisord

linux - start - supervisord stop



¿Cuál es la ventaja de usar supervisord over monit? (2)

No he usado monit pero hay algunos defectos significativos con supervisord.

  1. Los programas deben ejecutarse en primer plano

Esto significa que no puede simplemente ejecutar /etc/init.d/apache2 start. La mayoría de las veces puede simplemente escribir un trazador de líneas, por ejemplo, "source / etc / apache2 / envvars && exec / usr / sbin / apache2 -DFOREGROUND", pero a veces necesita su propio script de contenedor. El problema con los scripts de envoltura es que terminas con dos procesos, un padre y un hijo. Mira el próximo defecto ...

  1. supervisord no administra procesos secundarios

Si su programa inicia el proceso secundario, el supervisor no detectará esto. Si el proceso padre muere (o si se reinicia usando supervisorctl), los procesos hijo siguen ejecutándose pero serán "adoptados" por el proceso init y se mantendrán en ejecución. Esto podría evitar futuras invocaciones de su programa en ejecución o consumir recursos adicionales. Se supone que las opciones de configuración recientes stopasgroup y killasgroup arreglan esto, pero no funcionó para mí.

  1. supervisord no tiene administración de dependencia - ver #122

Recientemente configuré squid con qlproxy. qlproxyd necesita comenzar primero; de lo contrario, el calamar puede fallar. Aunque ambos programas se administraron con supervisión, no había forma de garantizar esto. Necesitaba escribir un script de inicio para squid que lo hizo esperar por el proceso qlproxyd. Agregar el script de inicio resultó en el problema del proceso huérfano descrito en el error 2

  1. supervisord no le permite controlar el retraso entre las noticias de inicio

A veces, cuando un proceso no se inicia (o se bloquea), es porque no puede acceder a otro recurso, posiblemente debido a un bamboleo de la red. El supervisor se puede configurar para reiniciar el proceso varias veces. Entre reinicios, el proceso entrará en un estado "BACKOFF" pero no hay documentación o control sobre la duración del receso.

En su defensa, el supervisor satisface nuestras necesidades el 80% del tiempo. La configuración es sensata y la documentación es bastante buena.

Tenemos una configuración personalizada que tiene varios daemons (aplicaciones web + tareas en segundo plano) ejecutándose. Estoy buscando usar un servicio que nos ayude a monitorear esos daemons y reiniciarlos si su consumo de recursos excede un nivel.

Apreciaré cualquier idea sobre cuándo uno es mejor que el otro. Como entiendo Monit lanza un nuevo proceso mientras supervisord inicia un subproceso. ¿Cuáles son los pros y los contras de este enfoque?

También usaré advenedizo para monitorear Monit o Supervisar. La implementación de webapp se realizará usando capistrano.

Gracias


Si desea supervisar adicionalmente los recursos, debe conformarse con Monit. Además de simplemente verificar si un proceso se está ejecutando (disponibilidad), Monit también puede realizar algunas comprobaciones del uso de recursos (rendimiento, uso de capacidad), niveles de carga e incluso comprobaciones de seguridad básicas (md5sum de un archivo bianual, archivo de configuración, etc.). Tiene una configuración basada en reglas que es bastante fácil de comprender. También hay muchas configuraciones listas para usar: http://mmonit.com/wiki/Monit/ConfigurationExamples

Monit requiere procesos para crear archivos PID, lo que puede ser un error, porque si un proceso no crea un archivo pid, debe crear algunos contenedores. Ver http://mmonit.com/wiki/Monit/FAQ#pidfile

Supervisord por otro lado está más ligado a un proceso, lo engendra por sí mismo. No puede realizar comprobaciones basadas en recursos como monit. Sin embargo, tiene un buen servicio CLI y una GUI web.