Introdução ao Supervisor - Gerenciamento de Processos em Sistemas Unix

O que é o Supervisor?

O Supervisor é uma ferramenta poderosa desenvolvida em Python para o gerenciamento e controle de múltiplos processos em sistemas oepracionais do tipo Unix. Esta solução permite que administradores de sistema monitors, reiniciem e controlem diversos processos de forma centralizada, facilitando significativamente a manutenção de serviços e aplicações.

Componentes Principais

Supervisord (Servidor)

O componente servidor é conhecido como supervisord e possui as seguintes responsabilidades:

  • Iniciar automaticamente os processos filhos管理ados durante sua própria inicialização
  • Responder a comandos enviados pelos clientes
  • Reiniciar processos que falham ou terminam inesperadamente
  • Registrar a saída padrão (stdout) e erro (stderr) dos processos filhos
  • Gerar e processar eventos relacionados ao ciclo de vida dos processos

A configuração do Supervisor é realizada através de um arquivo de configuração principal, geralmente localizado em /etc/supervisord.conf. Neste arquivo, é possível definir parâmetros tanto para o próprio servidora quanto para cada processo filho gerenciado.

Supervisorctl (Cliente)

O componente cliente é chamado de supervisorctl e oferece uma interface de linha de comando para interagir com o servidora. Através desta interface, os usuários podem:

  • Conectar-se ao processo servidora do Supervisor
  • Obter o status dos processos filhos
  • Iniciar e parar processos individualmente
  • Visualizar a lista de processos em execução

A comunicação entre cliente e servidor ocorre através de sockets de domínio Unix ou sockets TCP. O servidor possui mecanismos de autenticação para garantir segurança nas comunicações. Quando ambos estão na mesma máquina, compartilham o mesmo arquivo de configuração, distinguindo-se por meio de seções específicas.

Nota: O Supervisor funciona na maioria dos sistemas Unix, mas não possui suporte para Windows. Além disso, é compatível com Python 2.4 ou superior, não oferecendo suporte para Python 3.

Instalação do Supervisor

  1. Verifciar Ambiente Python

Caso não tenha o Python 2.x instalado, efetue a instalação:

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=/usr/local/python-2.7.9
make && make install

  1. Obter o Pacote de Instalação

wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz

  1. Instalar Dependências

yum install python-setuptools-devel

  1. Compilar e Instalar

tar zxvf supervisor-3.1.3.tar.gz
cd supervisor-3.1.3
python setup.py install

Parâmetros de Configuração

O arquivo supervisord.conf aceita os seguintes parâmetros principais:

Parâmetro Descrição
command Comando para iniciar o programa (caminho absoluto ou relativo)
process_name Expressão Python que define o nome do proceso no Supervisor (padrão: %(program_name)s)
numprocs Número de instâncias do programa a serem iniciadas. Se maior que 1, deve incluir %(process_num)s
numprocs_start Valor inteiro de deslocamento para cálculo das instâncias
priority Define a ordem de início e parada (valores menores iniciam primeiro e param por último)
autostart Se verdadeiro, o processo inicia automaticamente com o Supervisor
autorestart Define quando reiniciar: false, true ou unexpected
startsecs Tempo de espera após o início para considerar sucesso
startretries Número de tentativas de início antes de considerar falha
exitcodes Códigos de saída esperados (padrão: 0, 2)
stopsignal Sinal enviado ao processo quando solicitado parada (TERM, HUP, INT, QUIT, KILL, USR1, USR2)
stopwaitsecs Tempo de espera pelo sinal SIGCHILD do sistema operacional
stopasgroup Se verdadeiro, envia sinal para todo o grupo de processos
killasgroup Se verdadeiro, envia SIGKILL para todo o grupo de processos
user Usuário para executar o processo (se executando como root)
redirect_stderr Se verdadeiro, direciona stderr para stdout
stdout_logfile Caminho do arquivo de log de saída (AUTO para automático)
stdout_logfile_maxbytes Tamanho máximo do arquivo de log antes da轮转 (KB, MB, GB)
stdout_logfile_backups Número de backups保留dos arquivos de log
stderr_logfile Caminho do arquivo de log de erros
environment Lista de variáveis de ambiente em formato chave=valor
directory Diretório de trabalho ao gerar o processo filho
umask Máscara de permissões do processo

Comandos Mais Utilizados

Comando Descrição
supervisorctl help Exibir todos os comandos disponíveis
supervisorctl status Listar todos os processos e seus status
supervisorctl update Atualizar configuração sem reiniciar processos existentes
supervisorctl reload Recarregar configuração e reiniciar todos os processos
supervisorctl start processo Iniciar um processo específico
supervisorctl stop processo Parar um processo específico
supervisorctl stop grupo Parar todos os processos de um grupo
supervisorctl stop all Parar todos os processos
supervisorctl reread Reler配置文件 sem aplicar mudanças

Tags: supervisor process-management Python unix Linux

Publicado em 7-26 02:04