Capítulo 12.1 - Administração em produção
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Aplicar as melhores práticas de produção
- Configurar a manutenção do sistema
- Gerenciar atualizações
- Implementar alta disponibilidade
- Documentar procedimentos
- Criar runbooks
Melhores Práticas de Produção
Segurança
# 1. Usuários e permissões
# - Menor privilégio
# - Sem acesso root direto
# - sudo configurado
# 2. Firewall
# - Regras restritivas
# - Apenas portas necessárias
# - Monitoramento de conexões
# 3. Atualizações
# - Regulares
# - Testadas em staging
# - Agendadas
# 4. Monitoramento
# - Monitoramento contínuo
# - Alertas configurados
# - Logs centralizados
Performance
# 1. Recursos
# - Monitoramento CPU, RAM, disco
# - Alertas de limite
# - Scaling planejado
# 2. Otimização
# - Apenas serviços necessários
# - Cache configurado
# - Compressão ativada
# 3. Manutenção
# - Limpeza regular
# - Rotação de logs
# - Arquivamento de dados
Manutenção do Sistema
Planejamento
# Janela de manutenção
# - Horários de menor uso
# - Comunicação com equipe
# - Rollback planejado
# Checklist de manutenção
# 1. Backup antes
# 2. Testes em staging
# 3. Notificação aos usuários
# 4. Execução da manutenção
# 5. Verificação pós-manutenção
# 6. Documentação das mudanças
Scripts de Manutenção
#!/bin/bash
# Script de manutenção semanal
LOG="/var/log/maintenance-$(date +%Y%m%d).log"
{
echo "=== Manutenção $(date) ==="
# Atualização do sistema
echo "Atualizando pacotes..."
apt update && apt upgrade -y
# Limpeza
echo "Limpando..."
apt autoremove -y
apt autoclean
# Rotação de logs
echo "Rotação de logs..."
logrotate -f /etc/logrotate.conf
# Limpeza de logs antigos
echo "Limpando logs antigos..."
find /var/log -name "*.log" -mtime +30 -delete
# Verificação de espaço em disco
echo "Espaço em disco:"
df -h
echo "=== Fim da manutenção ==="
} | tee "$LOG"
Estratégias de Backup
Tipos de Backup
# 1. Full (Completo)
# - Todos os dados
# - Demorado, muito espaço
# - Restauração rápida
# 2. Incremental (Incremental)
# - Apenas alterações
# - Rápido, pouco espaço
# - Restauração mais lenta
# 3. Differential (Diferencial)
# - Desde o último full
# - Equilíbrio tempo/espaço
Script de Backup
#!/bin/bash
# Backup automático
BACKUP_DIR="/backup"
SOURCE_DIR="/data"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
# Criar backup
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"
# Verificar
if [ $? -eq 0 ]; then
echo "Backup realizado com sucesso: $BACKUP_FILE"
# Remover backups > 7 dias
find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +7 -delete
else
echo "ERRO: Falha no backup" | mail -s "Alerta Backup" admin@example.com
exit 1
fi
Backup com Cron
# Crontab
# Backup diário às 2h
0 2 * * * /usr/local/bin/backup.sh
# Backup full semanal
0 1 * * 0 /usr/local/bin/backup-full.sh
Alta Disponibilidade
Redundância
# 1. Múltiplos servidores
# - Load balancing
# - Failover automático
# - Replicação de dados
# 2. Monitoramento
# - Health checks
# - Detecção de falhas
# - Failover automático
# 3. Backup
# - Múltiplas cópias
# - Sites diferentes
# - Testes de restauração
Health Checks
#!/bin/bash
# Health check do servidor
CHECKS_FAILED=0
# Verificar serviços
for service in nginx mysql redis; do
if ! systemctl is-active --quiet "$service"; then
echo "ERRO: $service inativo"
CHECKS_FAILED=$((CHECKS_FAILED + 1))
fi
done
# Verificar espaço em disco
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt 90 ]; then
echo "ERRO: Disco em ${DISK}%"
CHECKS_FAILED=$((CHECKS_FAILED + 1))
fi
# Alerta se houver problema
if [ "$CHECKS_FAILED" -gt 0 ]; then
echo "ALERTA: $CHECKS_FAILED check(s) falhou(aram)" | \
mail -s "Alerta Health Check" admin@example.com
exit 1
fi
Documentação
Runbooks
Procedimentos operacionais:
# Runbook: Reinício de Serviço
## Objetivo
Reiniciar um serviço em produção
## Pré-requisitos
- Acesso SSH
- Permissões sudo
## Procedimento
1. Verificar estado atual
systemctl status service-name
2. Notificar equipe
# Slack/Email
3. Reiniciar
sudo systemctl restart service-name
4. Verificar
systemctl status service-name
journalctl -u service-name -n 50
5. Documentar
# Log de incidente
Documentação do Sistema
# Arquivos a documentar:
# - Configuração de serviços
# - Procedimentos de manutenção
# - Contatos da equipe
# - Senhas (gerenciadas de forma segura)
# - Arquitetura do sistema
Automação
Scripts de Automação
#!/bin/bash
# Automação de tarefas de produção
# 1. Monitoramento
/usr/local/bin/monitor.sh
# 2. Backup
/usr/local/bin/backup.sh
# 3. Limpeza
/usr/local/bin/cleanup.sh
# 4. Relatórios
/usr/local/bin/report.sh
Cron Produção
# /etc/cron.d/production
# Monitoramento a cada 5 minutos
*/5 * * * * root /usr/local/bin/monitor.sh
# Backup diário
0 2 * * * root /usr/local/bin/backup.sh
# Limpeza semanal
0 3 * * 0 root /usr/local/bin/cleanup.sh
# Relatório diário
0 8 * * * root /usr/local/bin/report.sh
Resumo
Neste capítulo, você aprendeu:
Melhores práticas: Segurança, performance, manutenção
Manutenção: Planejamento, scripts, procedimentos
Backup: Estratégias, scripts, automação
HA: Redundância, health checks, failover
Documentação: Runbooks, procedimentos
Automação: Scripts, cron de produção
Próximos Passos
Capítulo 12.2: Performance Tuning
Capítulo 12.3: Automação Completa
Capítulo criado em: Dezembro 2024