¿Cómo elijo entre advenedizo, runit, supervisor, daemontools,... para reiniciar un proceso si muere? (supervisión/monitoreo de procesos)

¿Cómo elijo entre advenedizo, runit, supervisor, daemontools,... para reiniciar un proceso si muere? (supervisión/monitoreo de procesos)

Tengo un proxy web Nginx, un servidor web gunicorn y una aplicación web python/flask. El proceso Gunicorn aparentemente murió, y quiero mejorar eso en el futuro investigando una utilidad que pueda monitorear y reiniciar el proceso Gunicorn en caso de que vuelva a fallar.

Encontré varias utilidades de supervisión de procesos que pueden hacer el trabajo:

  • Daemon Tools
  • lanzado
  • ejecutarlo
  • s6
  • supervisor
  • SistemaD
  • advenedizo
  • ...

¿Existe un artículo completo que compare y contraste las diversas utilidades utilizadas para monitorear y reiniciar un proceso?

https://en.wikipedia.org/wiki/Process_supervision

Respuesta1

  • runites sucesor de daemontools(ambos están escritos en c)

  • supervisordusos python.

He estado usando runitcon socklogdel mismo autor dentro.Linux alpino lxccontenedores durante unos 10 meses para gestionar web/ databasey otros servicios varios. Es liviano, fácil de administrar y no he tenido fallas en el servicio. El demonio de registro también se ejecuta como su propio usuario y no rootes bueno.

vacíolinuxutiliza runitcomo initsistema y también parasupervisión de servicio(busque archivos en el árbol de paquetes runpara ver ejemplos de runitscripts).

Respuesta2

Si su distribución usa Upstart, hágalo. Tiene soporte muy básico para reiniciar trabajos, pero incluye límites que pueden evitar el bucle de reinicio, como lo menciona @EEAA.

Si su sistema operativo utiliza otro programa de inicio, no lo cambie. Realmente no puedo ayudarte con las otras herramientas que mencionaste, ya que generalmente uso Ubuntu donde Upstart todavía está presente (a partir del último LTS), por lo que tengo poco que ver con ellas. Pero no es una tarea difícil crear un script simple que se ejecute desdecronuna vez por minuto (o con más frecuencia, es decir, en un bucle), que puede verificar si existe un PID y emitir un reinicio en caso de falla.

información relacionada