Como escolho entre upstart, runit, supervisor, daemontools, ... para reiniciar um processo se ele morrer? (supervisão/monitoramento de processo)

Como escolho entre upstart, runit, supervisor, daemontools, ... para reiniciar um processo se ele morrer? (supervisão/monitoramento de processo)

Eu tenho um proxy web Nginx, um servidor web gunicorn e um aplicativo web python/flask. O processo Gunicorn aparentemente morreu, e quero melhorar isso no futuro, procurando um utilitário que possa monitorar e reiniciar o processo gunicorn caso ele trave novamente.

Encontrei vários utilitários de supervisão de processos que podem fazer o trabalho:

  • Daemon Tools
  • lançamento
  • executá-lo
  • s6
  • Supervisor
  • SistemaD
  • subir na vida
  • ...

Existe um artigo abrangente que compara e contrasta os vários utilitários usados ​​para monitorar e reiniciar um processo?

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

Responder1

  • runité um sucessor de daemontools(ambos estão escritos em c)

  • supervisordusa python.

Tenho usado runitcom socklogo mesmo autor dentroAlpino Linux lxccontêineres por cerca de 10 meses para gerenciar web/ databasee vários outros serviços. É leve, fácil de gerenciar e não tive falhas de serviço. O daemon de registro também é executado como seu próprio usuário, rooto que não é legal.

voidlinuxusa runitcomo initsistema e também parasupervisão de serviço(pesquise na árvore de pacotes por runarquivos para exemplos de runitscripts).

Responder2

Se sua distribuição usa Upstart, vá em frente. Possui suporte muito básico para reinicialização de jobs, mas inclui limites que podem impedir o loop de reinicialização, conforme mencionado por @EEAA.

Se o seu sistema operacional usa outro programa init, não o altere. Na verdade, não posso ajudá-lo com as outras ferramentas que você mencionou, pois geralmente uso o Ubuntu, onde o Upstart ainda está presente (a partir do LTS mais recente), então tenho pouco a ver com elas. Mas não é uma tarefa difícil criar um script simples que seja executado a partir decronuma vez por minuto (ou mais frequentemente em um loop), que pode verificar se existe um PID e emitir reinicialização em caso de falha.

informação relacionada