📋 Documentação de Manutenção

Servidor RPA - ServeMEI Automação

Última atualização: 02/12/2025

🔧 Navegação Rápida

📑 Índice Detalhado

📊 Status e Monitoramento

Verificar Status dos Serviços

# Status detalhado dos serviços
sudo systemctl status xvfb.service
sudo systemctl status servemei-rpa.service

# Status resumido
sudo systemctl is-active xvfb.service servemei-rpa.service

# Verificar se estão habilitados na inicialização
sudo systemctl is-enabled xvfb.service servemei-rpa.service

Monitorar Recursos do Sistema

# CPU, Memória, Processos
htop
top

# Memória detalhada
free -h
cat /proc/meminfo | head -20

# Uso de disco
df -h
du -sh /home/luciano/servemei-rpa/

# Network
ss -tulpn | grep :8001

🔄 Gerenciamento de Serviços Systemd

💡 Importante: Sempre execute sudo systemctl daemon-reload após modificar arquivos de serviço.

Comandos Básicos

# Recarregar configurações (APÓS MODIFICAÇÕES)
sudo systemctl daemon-reload

# Reiniciar serviços
sudo systemctl restart xvfb.service servemei-rpa.service

# Parar serviços
sudo systemctl stop servemei-rpa.service xvfb.service

# Iniciar serviços
sudo systemctl start xvfb.service servemei-rpa.service

# Habilitar na inicialização
sudo systemctl enable xvfb.service servemei-rpa.service

Editar Serviços

# Backup antes de editar
sudo cp /etc/systemd/system/servemei-rpa.service /etc/systemd/system/servemei-rpa.service.backup

# Editar serviço
sudo nano /etc/systemd/system/servemei-rpa.service

# Verificar sintaxe
sudo systemd-analyze verify /etc/systemd/system/servemei-rpa.service

📝 Logs e Debug

Logs dos Serviços

# Logs em tempo real (seguir)
sudo journalctl -u servemei-rpa.service -f
sudo journalctl -u xvfb.service -f

# Últimas 100 linhas
sudo journalctl -u servemei-rpa.service -n 100

# Desde uma data específica
sudo journalctl -u servemei-rpa.service --since "2025-12-01 00:00:00"

# Filtrar por nível
sudo journalctl -u servemei-rpa.service -p err --since "1 hour ago"

Debug Avançado

# Verificar variáveis de ambiente do serviço
sudo systemctl show servemei-rpa.service | grep -E "(Environment|PID|User)"

# Verificar permissões
sudo -u luciano printenv DISPLAY
sudo -u luciano printenv XAUTHORITY

# Testar DISPLAY manualmente
sudo -u luciano DISPLAY=:99 xdpyinfo 2>/dev/null | head -5

⚙️ Processos e Limpeza

⚠️ Atenção: Tenha cuidado ao matar processos. Certifique-se de que são processos órfãos antes de finalizá-los.

Gerenciamento de Processos

# Ver processos Chrome
pgrep -a chrome
ps aux | grep chrome | grep -v grep

# Ver processos Python
pgrep -a python
ps aux | grep python | grep -v grep

# Ver processos Xvfb
pgrep -a Xvfb

# Matar processos problemáticos
sudo pkill -9 chrome
sudo pkill -9 chromedriver
sudo pkill -9 Xvfb

Limpeza de Cache e Temporários

# Limpar cache do Chrome
sudo rm -rf /tmp/chrome-*
sudo rm -rf /tmp/.com.google.Chrome*
sudo rm -rf /tmp/.org.chromium.Chromium*
sudo rm -rf /home/luciano/.cache/google-chrome

# Limpar screenshots antigos (mais de 7 dias)
find /tmp -name "rpa_debug_*.png" -type f -mtime +7 -delete

# Limpar logs temporários
sudo rm -f /tmp/rpa_*.log

🧪 Testes e Diagnóstico

✅ Recomendado: Execute estes testes periodicamente para verificar a saúde do sistema.

Testes do Ambiente

# Teste completo do ambiente
sudo -u luciano bash -c "
echo '=== TESTE DE AMBIENTE RPA ==='
echo '1. DISPLAY: ' \$DISPLAY
echo '2. Python: ' \$(python3 --version)
echo '3. Chrome: ' \$(google-chrome --version 2>/dev/null || echo 'Não encontrado')
echo '4. Xvfb: ' \$(ps aux | grep Xvfb | grep -v grep | wc -l) 'processo(s)'
echo '5. PyAutoGUI Teste:'
source /home/luciano/servemei-rpa/venv/bin/activate
python3 -c '
import pyautogui, os
print(f\"    Tela: {pyautogui.size()}\")
print(f\"    DISPLAY: {os.environ.get(\"DISPLAY\")}\")
'
echo '=== FIM DO TESTE ==='
"

Testes de Funcionalidade

# Testar API localmente
curl -X POST http://localhost:8001/consultar-dasn \
  -H "Content-Type: application/json" \
  -d '{"cnpj": "63856088000168"}' \
  --max-time 120

# Testar com múltiplas requisições
for i in {1..3}; do
  echo "Teste \$i:"
  curl -s -X POST http://localhost:8001/consultar-dasn \
    -H "Content-Type: application/json" \
    -d '{"cnpj": "63856088000168"}' | jq '.status'
  sleep 2
done

💾 Backup e Restauração

🔒 Segurança: Sempre mantenha backups atualizados. Configure backups automáticos no crontab.

Backup Completo

# Criar diretório de backup
BACKUP_DIR="/home/luciano/backups/rpa_$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUP_DIR

# Backup dos serviços
sudo cp /etc/systemd/system/xvfb.service $BACKUP_DIR/
sudo cp /etc/systemd/system/servemei-rpa.service $BACKUP_DIR/

# Backup do código
cp -r /home/luciano/servemei-rpa $BACKUP_DIR/codigo/

# Compactar backup
tar -czf $BACKUP_DIR.tar.gz $BACKUP_DIR
rm -rf $BACKUP_DIR

echo "Backup criado: $BACKUP_DIR.tar.gz"

Script de Backup Diário

#!/bin/bash
# /home/luciano/scripts/backup_rpa_diario.sh
DATE=$(date +%Y%m%d)
BACKUP_FILE="/home/luciano/backups/rpa_backup_$DATE.tar.gz"

# Criar backup
tar -czf $BACKUP_FILE \
  /home/luciano/servemei-rpa \
  /etc/systemd/system/xvfb.service \
  /etc/systemd/system/servemei-rpa.service \
  2>/dev/null

# Manter apenas últimos 7 backups
find /home/luciano/backups -name "rpa_backup_*.tar.gz" -mtime +7 -delete

echo "Backup diário criado: $BACKUP_FILE"
📅 Para agendar no Crontab:
0 2 * * * /home/luciano/scripts/backup_rpa_diario.sh

🔄 Atualização e Manutenção

Atualização do Sistema

# Atualizar lista de pacotes
sudo apt-get update

# Atualizar pacotes instalados
sudo apt-get upgrade -y

# Limpar pacotes desnecessários
sudo apt-get autoremove -y
sudo apt-get autoclean

# Verificar atualizações de segurança
sudo unattended-upgrades --dry-run

Atualização do Ambiente Python

# Ativar ambiente virtual
source /home/luciano/servemei-rpa/venv/bin/activate

# Atualizar pip
pip install --upgrade pip

# Verificar pacotes desatualizados
pip list --outdated --format=columns

# Congelar requirements atual
pip freeze > /home/luciano/servemei-rpa/requirements.txt

🤖 Scripts Automáticos

Monitoramento Automático

#!/bin/bash
# /usr/local/bin/monitor-rpa.sh

LOG_FILE="/var/log/rpa-monitor.log"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] \$1" | tee -a "$LOG_FILE"
}

check_service() {
    SERVICE="\$1"
    if systemctl is-active --quiet "$SERVICE"; then
        log "✅ $SERVICE está rodando"
        return 0
    else
        log "❌ $SERVICE está parado - Tentando reiniciar..."
        systemctl restart "$SERVICE"
        sleep 5
        if systemctl is-active --quiet "$SERVICE"; then
            log "✅ $SERVICE reiniciado com sucesso"
            return 0
        else
            log "⚠️ Falha ao reiniciar $SERVICE"
            return 1
        fi
    fi
}

# Executar verificações
log "=== INICIANDO MONITORAMENTO RPA ==="
check_service xvfb.service
check_service servemei-rpa.service

# Verificar processos Chrome
CHROME_COUNT=$(pgrep chrome | wc -l)
if [ "$CHROME_COUNT" -gt 10 ]; then
    log "⚠️ Muitos processos Chrome: $CHROME_COUNT"
    sudo pkill -9 chrome
fi

log "=== MONITORAMENTO CONCLUÍDO ==="
⏰ Para agendar no Crontab:
*/15 * * * * /usr/local/bin/monitor-rpa.sh

Reinicialização Completa

#!/bin/bash
# /usr/local/bin/restart-rpa-complete.sh

echo "=== REINICIALIZAÇÃO COMPLETA RPA ==="
echo "Data/Hora: $(date)"

# 1. Parar serviços
echo "1. Parando serviços..."
sudo systemctl stop servemei-rpa.service
sleep 2

# 2. Matar todos os processos relacionados
echo "2. Finalizando processos..."
sudo pkill -9 chrome 2>/dev/null
sudo pkill -9 chromedriver 2>/dev/null
sudo pkill -9 python 2>/dev/null
sudo pkill -9 Xvfb 2>/dev/null
sleep 3

# 3. Limpar cache
echo "3. Limpando cache..."
sudo rm -rf /tmp/chrome-*
sudo rm -rf /tmp/.com.google.Chrome*
sudo rm -rf /tmp/rpa_debug_*.png

# 4. Reiniciar Xvfb
echo "4. Reiniciando Xvfb..."
sudo systemctl restart xvfb.service
sleep 3

# 5. Verificar Xvfb
echo "5. Verificando Xvfb..."
if sudo -u luciano DISPLAY=:99 xdpyinfo 2>/dev/null; then
    echo "✅ Xvfb funcionando"
else
    echo "❌ Xvfb falhou"
    exit 1
fi

# 6. Reiniciar serviço principal
echo "6. Iniciando serviço RPA..."
sudo systemctl start servemei-rpa.service
sleep 5

# 7. Verificar status final
echo "7. Status final:"
sudo systemctl status servemei-rpa.service --no-pager | head -20

echo "=== REINICIALIZAÇÃO CONCLUÍDA ==="

🚨 Problemas Comuns e Soluções

Problema: "Missing X server or $DISPLAY"

# Soluções: 1. Verificar se Xvfb está rodando: sudo systemctl status xvfb.service 2. Verificar DISPLAY: sudo -u luciano printenv DISPLAY 3. Reiniciar Xvfb: sudo systemctl restart xvfb.service 4. Verificar socket X11: ls -la /tmp/.X11-unix/ 5. Testar manualmente: sudo -u luciano DISPLAY=:99 xdpyinfo

Problema: Chrome não inicia

# Soluções: 1. Matar processos Chrome antigos: sudo pkill -9 chrome 2. Limpar cache do Chrome: sudo rm -rf /tmp/chrome-* 3. Verificar se Chrome está instalado: which google-chrome 4. Testar Chrome manualmente: sudo -u luciano DISPLAY=:99 google-chrome --version

Problema: PyAutoGUI não funciona

# Soluções: 1. Verificar DISPLAY: echo $DISPLAY 2. Testar PyAutoGUI no venv: source venv/bin/activate && python3 -c "import pyautogui; print(pyautogui.size())" 3. Verificar instalação do Pillow: pip list | grep -i pillow 4. Verificar permissões: sudo -u luciano DISPLAY=:99 python3 -c "import pyautogui; print(pyautogui.size())"

Problema: API não responde

# Soluções: 1. Verificar logs: sudo journalctl -u servemei-rpa.service --since "5 minutes ago" 2. Verificar porta: netstat -tlnp | grep 8001 3. Testar API localmente: curl http://localhost:8001/ 4. Verificar processo uvicorn: ps aux | grep uvicorn

✅ Checklist Diário de Manutenção

Rotina de Verificação Diária

📞 Contatos e Suporte

Informações do Servidor

Servidor: srv700714
IP: 103.199.186.179
Porta API: 8001
Usuário: luciano
Serviços: xvfb, servemei-rpa
Logs: /var/log/syslog, journalctl
Backups: /home/luciano/backups/
Código: /home/luciano/servemei-rpa/
🚨 Em Caso de Emergência:
1. Execute: sudo /usr/local/bin/restart-rpa-complete.sh
2. Verifique logs: sudo journalctl -u servemei-rpa.service -f
3. Restaure do backup mais recente se necessário