Pular para o conteúdo principal

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