freemanpivo / freemanpivo/gamesapi

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

Open
#1 0 comments 0 reactions 0 assignees View on GitHub
infra observability
Dominant language
Go
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

# 🧠 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**
```bash
JAEGER_COLLECTOR_ENDPOINT=http://jaeger:14268/api/traces
PORT=3000
docker compose up --build
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.