Substituir o AppSignal pelo Datadog

TLDR: Remove o AppSignal e adiciona APM e logs do Datadog ao trgclub-api, para ter observabilidade funcional e investigar o bug de 500 em meetings para usuários moderator.

Contexto

O AppSignal está configurado mas não está funcionando em produção — erros 500 não aparecem com stacktrace acessível. O Datadog já é o padrão adotado nos outros projetos wehive (onion-backend). Sem observabilidade funcional não é possível investigar o bug #1215042900567341 (500 para usuários moderator e standard ao acessar /avo/resources/meetings/:id).

Objetivos

  • Remover o AppSignal (gem + config + variáveis de ambiente)
  • Adicionar a gem datadog com APM e coleta de logs
  • Configurar o Datadog nos ambientes de produção/staging via variáveis de ambiente
  • Adicionar labels do Datadog no compose local (seguindo o padrão do onion-backend)
  • Ter stacktraces visíveis no Datadog para investigar o bug de 500

Fora de escopo

— (não registrado na spec original)

Mudanças

  • Gemfile — remover gem "appsignal", adicionar gem "datadog"
  • config/appsignal.rb — remover o arquivo
  • config/initializers/datadog.rb — criar o inicializador com APM e log injection
  • .project/docker/compose/overrides.yml — criar com labels do Datadog para app e worker (seguindo o padrão do onion-backend)
  • .env.example — substituir APPSIGNAL_API_KEY por DD_API_KEY, DD_ENV, DD_SERVICE, DD_AGENT_HOST
  • .bundler-audit.yml — remover o ignore de CVEs do appsignal, se houver

Como verificar

  1. Em staging: acessar /avo/resources/meetings/:id como usuário moderator — o erro 500 deve aparecer no Datadog APM com stacktrace completo
  2. Confirmar que traces aparecem em service:trgclub-api no Datadog
  3. Confirmar que os logs de produção chegam com source:ruby

Documentação

Nenhuma mudança de documentação necessária.