Skip to content

feat(observability): integrar zap, Prometheus e OpenTelemetry (Jaeger) + compose #1

Description

@freemanpivo

🧠 Issue 1 — Observability (zap + Prometheus + OpenTelemetry/Jaeger)

Descrição

Como time, queremos ter observabilidade mínima da API (logs estruturados, métricas e tracing)
para facilitar debug e SLOs.

Esta tarefa adiciona:

  • Logger estruturado (zap) com JSON e campos padrão (service, env, trace_id)
  • Métricas Prometheus (endpoint /metrics) com contadores e histograma de latência
  • Tracing com OpenTelemetry exportando para Jaeger (JAEGER_COLLECTOR_ENDPOINT)
  • Middleware que injeta trace_id nos logs e adiciona X-Trace-Id nos headers
  • docker-compose.yml com Prometheus, Grafana e Jaeger + prometheus.yml
  • Documentação (docs/observability.md) explicando execução local

Critérios de Aceite

  • zap inicializado e utilizado pela aplicação; logs em JSON com campos service e trace_id
  • Endpoint /metrics expõe métricas Prometheus (http_requests_total, http_request_duration_seconds)
  • Tracing com OpenTelemetry ativo e enviando spans para Jaeger
  • Middleware adiciona header X-Trace-Id nas respostas
  • docker-compose.yml contém games-api, prometheus, grafana e jaeger
  • Documentação adicionada em docs/observability.md
  • Testes unitários garantem que /metrics e /health respondem corretamente

Tasks

  • Criar pacote internal/observ com InitObservability e middlewares
  • Adaptar cmd/main.go para inicializar observability e passar logger
  • Adicionar handler /metrics (via promhttp)
  • Integrar OpenTelemetry/Jaeger
  • Criar docker-compose.yml e monitoring/prometheus.yml
  • Adicionar documentação (docs/observability.md)
  • Escrever testes básicos (internal/observ/observ_test.go)

Exemplo de Execução

JAEGER_COLLECTOR_ENDPOINT=http://jaeger:14268/api/traces
PORT=3000
docker compose up --build

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions