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ê.
🖥️
Essa aula é pra mexer no computador
O visualizador é interativo e fica muito melhor numa tela grande. Abra no desktop pra rodar e ver o custo acontecer. A teoria, o código em Go e o Desafio seguem aqui embaixo, dá pra ler tranquilo no celular.
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.