Integração com Datadog
TLDR: Adiciona o Datadog Agent ao ambiente de dev via Docker e instrumenta a aplicação com
ddtraceem todos os ambientes, identificando serviços porDD_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
ddtracee variáveisDD_* - Identificar cada tipo de processo via
DD_SERVICEno 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)