Instalando e configurando o supervisor no Ubuntu 16.04

Você está aqui:
Tempo estimado de leitura: 4 min

Supervisor é um sistema cliente / servidor usado para controlar vários processos UNIX, mais especificamente processos relacionados a um projeto ou a um cliente. Por exemplo, você poderia usar o supervisor para gerar e monitorar um número arbitrário de filas de trabalhadores de seu aplicativo da web.

Os componentes deste sistema são:

  • supervisord: a parte do servidor do sistema.
  • supervisorctl: A interface da linha de comandos usada para interagir com o servidor.
  • Servidor da Web: Um servidor da Web simples e uma interface com o usuário da Web com funcionalidade básica comparada ao supervisorctl .
  • Interface XML-RPC: O mesmo servidor HTTP usado pelo web client, serve uma interface XML-RPC que pode ser usada para controlar programas de supervisor.

Neste tutorial vamos instalar a versão mais atualizada do supervisor, demonstrar como gerar e gerenciar programas supervisorctle configurar uma interface da web para gerenciar nossos programas.

Instalação e configuração básica

Nós iremos instalar o supervisor através easy_install, um recurso das setuptools do python.

Primeiro, atualize sua lista de pacotes locais e instale o python setuptools.

sudo apt-get update && sudo apt-get install python-setuptools

Agora podemos instalar o supervisor.

sudo easy_install supervisor

Quando a instalação estiver completa, temos que gerar nosso arquivo de configuração. Crie uma pasta com o nome supervisordentro /etc.

sudo mkdir /etc/supervisor

E então execute o seguinte.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Se você não está logado com o rootusuário, você pode receber um Permission deniederro (mesmo com sudo). Isto é devido ao redirecionamento. Para superar isso, faça o login como root.

sudo su

Então você pode executar o comando novamente.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Agora você pode deixar o rootusuário com o exitcomando. O echo_supervisord_confcomando foi fornecido pela nossa instalação de supervisor.

Configuração básica

Abra o /etc/supervisor/supervisord.confarquivo e verifique seu conteúdo. Você notará que este arquivo de configuração segue a INIsintaxe e é dividido por seções (representend por parênteses como em [section-name]).

Para adicionar programas para serem gerenciados pelo supervisor, precisamos apenas criar as [program]seções apropriadas . No entanto, para evitar confusão com o arquivo de configuração principal sempre que precisarmos adicionar (ou alterar) um programa, usaremos a [include]seção. Encontre esta seção, descomente-a e edite-a para se parecer com o seguinte.

[include]
files=conf.d/*.conf

Agora, para cada programa que desejamos adicionar, criaremos um .iniarquivo dentro do /etc/supervisor/conf.d/diretório. Vamos criar esta pasta.

sudo mkdir /etc/supervisor/conf.d

Iniciando o supervisor server

Como observado anteriormente, o supervisor é composto por um servidor e clientes que se conectam a ele. Para poder gerenciar e controlar programas, precisamos iniciar o servidor. Para fazer isso, estaremos registrando o supervisor no servidor systemd, para que o servidor possa ser iniciado na inicialização do sistema.

Para fazer isso, crie um arquivo chamado supervisord.serviceno /etc/systemd/systemdiretório.

sudo touch /etc/systemd/system/supervisord.service

Adicione o seguinte conteúdo ao arquivo.

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

Ative o serviço de supervisão.

sudo systemctl start supervisord.service

Contanto que o arquivo de serviço esteja localizado no /etc/systemd/systemdiretório, ele será iniciado automaticamente na inicialização do sistema.

Você pode verificar o status do serviço.

systemctl status supervisord.service

Além disso, você pode conferir os logs.

sudo journalctl -u supervisord.service

Adicionando programas

Os programas controlados pelo supervisor são dados por [program]seções diferentes na configuração. Para cada programa que queremos gerenciar, criaremos um arquivo de configuração autônomo informando o caminho do comando executável, quaisquer variáveis ambientais, como executar no caso de um desligamento.

Primeiro, vamos criar um script simples que registre um timestamp. Crie um arquivo chamado hello_supervisor.sh(em qualquer lugar que você desejar, estaremos fazendo referência ao caminho completo deste script).

touch hello_supervisor.sh

Agora, coloque o seguinte conteúdo nele

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

Agora torne-o executável

chmod +x hello_supervisor.sh

Em termos práticos, esse script é praticamente inútil. No entanto, podemos usá-lo para demonstrar o poder do supervisor. Crie o arquivo de configuração correspondente executando o seguinte.

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

Agora coloque o seguinte conteúdo neste arquivo.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Nota: Certifique-se de substituir USERpor seu nome de usuário.

Vamos rever esta configuração passo a passo.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

Primeiro, a configuração começa definindo um programa de nome hello_supervisor . Também informa o caminho completo do executável a ser executado.

autostart=true

Esta linha indica que este programa deve ser iniciado automaticamente quando o supervisor é iniciado.

autorestart=true

Se o programa for encerrado, por qualquer motivo, esta linha informa ao supervisor para reiniciar automaticamente o processo.

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Essas linhas definem o local do arquivo de log para stderrstdout, respectivamente.

Gerenciando programas

Agora que instalamos e configuramos o supervisor, podemos gerenciar nossos processos.

Depois de adicionar um novo programa, devemos executar os dois comandos a seguir, para informar o servidor para reler os arquivos de configuração e aplicar quaisquer alterações.

sudo supervisorctl reread
sudo supervisorctl update

Agora execute o supervisorctlcliente.

sudo supervisorctl

Você será saudado com uma lista dos processos registrados. Você verá um processo chamado hello_supervisorcom um RUNNINGstatus.

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

Digite helppara uma lista de comandos disponíveis.

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

Em poucas palavras, nós podemos startstoprestartprogramas, passando o nome do programa como um argumento para o respectivo comando.

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

Podemos também dar uma olhada na saída do programa com o tailcomando.

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

Para a stderrsaída, você também pode usar tail.

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

Invocando o statuscomando, você pode ver o status de todos os programas registrados.

Quando terminar, você pode sair.

supervisor> quit

O cliente do servidor web

Para permitir o acesso ao servidor web do supervisord, abra o arquivo de configuração do supervisord e localize a [inet_http_server]seção.

nano /etc/supervisor/supervisord.conf

Agora atualize a configuração desta seção com o seguinte.

[inet_http_server]
port=*:9001
username=your_username
password=your_password

Substitua your_usernameyour_passwordcom suas credenciais desejadas, salve suas modificações e reinicie o serviço do supervisor.

sudo systemctl restart supervisord.service

Lembre-se de permitir o TCPacesso à porta 9001no seu firewall e, em seguida, acessar a http://{server-ip}:9001partir do seu navegador. Quando perguntado, forneça seu usernamepassword. Agora você pode controlar seus processos da web.

Conclusão

Nós instalamos a versão mais atualizada do supervisord, aprendemos como configurá-lo para o sistema iniciar automaticamente com o systemd e também revisamos um uso básico do supervisorctl. Para configurações e casos de uso mais avançados, você pode consultar a documentação oficial do supervisor .

Esse artigo foi útil?
Não Gostei 0
Visualizações: 743

Ainda não Têm uma Conta?

Então Cadastre-se

Nome de Usuário*
E-mail*
Senha*
Confirmar Senha*

Já têm Uma Conta? Click Aqui.

Já tem uma Conta?

Ainda não tem Conta?