Skip to content

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

@freemanpivo

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions