Monitoramento de processos e gerenciador de serviços para aplicativos da Web em Python [closed]

4

Estamos configurando um aplicativo da Web em Python usando o servidor da web CherryPy em vários servidores Linux (está por trás de um balanceador de carga nginx que envia tráfego para os vários servidores). Estamos no processo de mudar de servidores Windows para servidores Linux e estaremos rodando no CentOS 6.5.

No Windows, tivemos um gerenciador de serviços personalizado que iniciou e parou os executáveis do Python e os reiniciaram se falharam ou saíram por qualquer motivo.

Minha pergunta é: o que é uma boa ferramenta para fazer a mesma coisa no Linux? Idealmente seria:

  1. Ser capaz de iniciar e parar manualmente um programa em Python (nosso servidor e aplicativo baseados em CherryPy) usando algo como service our_app start ou /etc/init.d/our_app start .
  2. Reinicie o programa automaticamente se ele sair ou travar
  3. Iniciar o serviço na inicialização do sistema

Até agora eu criei várias possibilidades, do tipo mais simples ao mais complexo:

  • python-daemon com um script /etc/init.d
  • upstart com um script inicial simples como este: um , dois , três
  • O supervisor : parece interessante, mas como isso seria melhor para nós do que apenas usar upstart?
  • monit : mais do que precisamos neste estágio, mas talvez possamos usar isso em cima de uma das opções acima?

Observação: sou um desenvolvedor que tem mais experiência com o Windows do que com o Linux e mais experiência em desenvolvimento do que a experiência com ops / sysadmin. Apenas dizendo'. : -)

    
por Ben Hoyt 23.05.2014 / 16:28

1 resposta

3

Eu voto para Monit , e há muitas bom exemplos de configuração para isso.

Não pense em Monit como "mais do que você precisa". Ele faz exatamente o que diz de uma maneira leve e confiável. O daemon é estável e não precisa de babá. Ele executará todos os testes de processo, PID, nome, conexão e arquivo necessários. O comportamento de reinicialização e ação pode ser personalizado. E há uma boa GUI / TUI para o gerenciamento de processos.

    
por 23.05.2014 / 16:33