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.
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