Skip to content

477 notificar falha backup - #478

Open
JosueModesto wants to merge 2 commits into
developmentfrom
477-notificar-falha-backup
Open

477 notificar falha backup#478
JosueModesto wants to merge 2 commits into
developmentfrom
477-notificar-falha-backup

Conversation

@JosueModesto

Copy link
Copy Markdown
Contributor

Close #477

Descrição

Adiciona notificação automática por e-mail no serviço database-backup em caso de falha durante a execução da rotina de backup (como erros no pg_dump, falhas no upload via rclone ou falha na aplicação de retenção).

O que foi feito

  • Adicionado cliente SMTP (msmtp) ao container:
  • Atualizado o Dockerfile para instalar msmtp e gettext-base.
  • Configuração dinâmica do SMTP no entrypoint.sh:
  • Implementada a geração do arquivo /etc/msmtprc a partir das variáveis de ambiente SMTP_*.
  • Ajustado o envelope do msmtp para utilizar o e-mail puro (SMTP_USER) no envio e manter o nome amigável (SMTP_FROM) apenas nos cabeçalhos de exibição, evitando rejeições (como o erro 555 do Gmail).
  • Tratamento e envio de notificações em falhas no backup.sh:
  • Adicionada função de captura via trap ... EXIT para identificar códigos de erro de execução (exit status != 0).
  • Implementado disparo de e-mail informativo contendo: nome do banco, horário da tentativa (TZ) e as últimas 30 linhas do log de erro.
  • Suporte a múltiplos destinatários configuráveis através de lista separada por vírgula (NOTIFY_EMAIL_TO).
  • Adicionada flag NOTIFY_EMAIL_ENABLED para ligar/desligar alertas sem mover/remover configurações.
  • Garantia de que a falha na entrega do e-mail não mascara a falha original do job de backup (exit status do backup é mantido).
  • Adicionado no docker-compose.yml o extra_hosts: "host.docker.internal:host-gateway" para teste do backup no banco herbario_dev(127.0.0.1).

Documentação:

  • Adicionadas as novas variáveis de ambiente (SMTP_, NOTIFY_) nos arquivos .env.example e README.md.

  • Formato da Notificação
    Assunto
    [FALHA] Backup do banco {DATABASE_NAME} - {CURRENT_TIME}

  • Corpo do E-mail
    Banco de dados: {DATABASE_NAME}

    Data/Horário: {CURRENT_TIME}

    Código de saída: {EXIT_CODE}

    Log: Trecho com as últimas 30 linhas da saída de erro capturada pelo script.

Validações realizadas

  • Falha no backup → Notificação enviada: Testado com erro forçado no pg_dump; e-mail de alerta enviado com sucesso para todos os endereços listados em NOTIFY_EMAIL_TO (smtpstatus=250 exitcode=EX_OK).

  • Múltiplos destinatários: Confirmado recebimento em múltiplos e-mails inseridos simultaneamente na lista separada por vírgula.

  • Sucesso no backup → Nenhum e-mail enviado: Executado o backup completo (dump + upload no Google Drive) com sucesso; o log /var/log/msmtp.log permaneceu intocado e o processo encerrou com exit 0.

  • Preservação do código de erro em falha de SMTP: Testado com SMTP_PASS incorreta; o msmtp falhou, mas a falha do backup foi preservada no container com BACKUP_EXIT=1.

  • Desativação temporária (NOTIFY_EMAIL_ENABLED=false): Confirmado que o envio é ignorado mantendo a falha original no job.

  • Provedor e ambiente real: Validação realizada com containers reais via docker compose build, banco PostgreSQL local e servidor SMTP real do Gmail.

Impacto

Garante observabilidade imediata para a equipe em caso de quebra nas rotinas automáticas de backup do banco de dados, reduzindo o tempo de resposta a incidentes de desastre/restore sem acrescentar dependências pesadas ao container.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Notificar por e-mail quando o backup do PostgreSQL falhar

1 participant