Camada Zero · 32 · Logs, Métricas & Traces

Os 3 pilares da observabilidade. Cada um responde uma pergunta diferente sobre o mesmo sistema. Envia uma request aqui embaixo e olha os três sendo gerados ao mesmo tempo. Depois injeta um erro e veja qual pilar te conta o quê.
0Linhas de log
0Pontos de métrica
0Spans de trace
Mesmo evento, três lentes. Você usa métrica pra DETECTAR (o alerta dispara), trace pra LOCALIZAR (qual serviço/span comeu o tempo ou falhou), e log pra DIAGNOSTICAR (a mensagem exata daquela request). O segredo é o trace ID amarrando os três.
LogsO que exatamente aconteceu. Eventos discretos, ricos em detalhe, caros em volume.
MétricasComo o sistema está ao longo do tempo. Agregados baratos, tendência, base de alerta.
TracesOnde foi o tempo e onde falhou. O caminho da request entre serviços, em spans.

Os 3 pilares em Go

// trace ID propagado via context (aula 11)
ctx := context.WithValue(ctx, traceKey, traceID)

// LOG estruturado: carimba o trace ID
slog.InfoContext(ctx, "pedido criado",
    "trace_id", traceID, "user", uid)

// MÉTRICA: contador agregado, label de baixa cardinalidade
reqTotal.WithLabelValues("orders", "200").Inc()

// TRACE: um span por serviço
ctx, span := tracer.Start(ctx, "orders.create")
defer span.End()

A regra prática

// métrica detecta -> trace localiza -> log diagnostica
// o mesmo trace_id aparece nos três
// e te deixa pivotar de um pro outro

🧠 Desafio · Observabilidade

Envia algumas requests e injeta um erro aqui de cima antes de responder. As duas últimas são de reflexão: escreve a sua e só então revela o modelo.