🧠 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
Tasks
Exemplo de Execução
JAEGER_COLLECTOR_ENDPOINT=http://jaeger:14268/api/traces
PORT=3000
docker compose up --build
🧠 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:
zap) com JSON e campos padrão (service,env,trace_id)/metrics) com contadores e histograma de latênciaJAEGER_COLLECTOR_ENDPOINT)trace_idnos logs e adicionaX-Trace-Idnos headersdocker-compose.ymlcom Prometheus, Grafana e Jaeger +prometheus.ymldocs/observability.md) explicando execução localCritérios de Aceite
zapinicializado e utilizado pela aplicação; logs em JSON com camposserviceetrace_id/metricsexpõe métricas Prometheus (http_requests_total,http_request_duration_seconds)X-Trace-Idnas respostasdocker-compose.ymlcontémgames-api,prometheus,grafanaejaegerdocs/observability.md/metricse/healthrespondem corretamenteTasks
internal/observcomInitObservabilitye middlewarescmd/main.gopara inicializar observability e passar logger/metrics(viapromhttp)docker-compose.ymlemonitoring/prometheus.ymldocs/observability.md)internal/observ/observ_test.go)Exemplo de Execução