Integração com Datadog

TLDR: Adiciona o Datadog Agent ao ambiente de dev via Docker e instrumenta a aplicação com ddtrace em todos os ambientes, identificando serviços por DD_SERVICE.

Contexto

O projeto não tinha observabilidade centralizada. A integração com Datadog permite rastrear traces, logs e métricas tanto no ambiente local (via Docker) quanto nos servidores de staging e production (via supervisor + ddtrace).

A identificação dos processos usa DD_SERVICE por perfil (não DD_HOSTNAME por máquina), o que economiza no billing do Datadog (todos os hosts compartilham o mesmo DD_HOSTNAME vindo do Parameter Store) e prepara a estrutura para a migração futura para k8s.

Objetivos

  • Adicionar o Datadog Agent como serviço opt-in no Docker (profile monitoring)
  • Instrumentar gunicorn, celery worker e celery beat com ddtrace
  • Padronizar as confs do supervisor de production com ddtrace e variáveis DD_*
  • Identificar cada tipo de processo via DD_SERVICE no Datadog

Fora de escopo

Os arquivos do supervisor são linkados via symlink nas máquinas. Os symlinks existentes precisarão ser atualizados para os novos nomes. Decidido não fazer agora, dado que a migração para k8s está próxima.

Mudanças

Docker / compose: - Datadog Agent adicionado em .commons/docker/ como profile monitoring - overrides.yml e dependencies.yml para configuração local - Labels de log do Datadog nos containers - Autodiscovery para Redis com porta customizada

Supervisor de production: - backend-production.conf — path → onion-backend/, ddtrace, nome onion-backend-production, DD_SERVICE=onion-backend - celery-production.conf — ddtrace, nome onion-celery-production, DD_SERVICE=onion-worker, pidfile próprio - celery-habits-production.conf — novo (era production-onion-habits.conf), DD_SERVICE=onion-worker-habits, pidfile próprio - celery-beat-production.conf — ddtrace, DD_SERVICE=onion-beat - production-onion-habits.conf — removido

Variáveis de ambiente: - DD_AGENT_HOST, DD_ENV, DD_SERVICE em todas as confs - DD_HOSTNAME não hardcodado — herdado do sistema via AWS Parameter Store - PARENT_HOST adicionado ao .env.example

Como verificar

Local: 1. COMPOSE_PROFILES=monitoring make up 2. Confirmar que o DD Agent está healthy: docker compose ps 3. Checar traces no Datadog APM local ou via ddtrace-run

Production/Staging: 1. Copiar a conf do perfil correto para a máquina alvo 2. Garantir que /etc/environment tem DD_HOSTNAME=onion-production 3. sudo supervisorctl reread && sudo supervisorctl update 4. sudo supervisorctl status — todos os programas em RUNNING 5. Datadog APM: filtrar por service:onion-worker, service:onion-backend, etc.

Documentação

— (não registrado na spec original)