DevLog #02 – Instrumentando Observabilidade: Traces, Logs e Métricas
DevLogDevLog #02 – Instrumentando Observabilidade: Traces, Logs e Métricas
📅 Data: 13 de Janeiro de 2026
✍️ Autor: Luís Gabriel Marchió Batista
Os Três Pilares da Observabilidade
Observabilidade é mais do que monitoramento. Está baseada em três pilares fundamentais:
- Traces Distribuídos - Rastreiam uma requisição através de todos os serviços
- Logs Estruturados - Fornecem contexto detalhado dos eventos
- Métricas - Agregam dados quantitativos sobre o sistema
1. Traces Distribuídos com Jaeger
Implementaremos traces distribuídos usando Jaeger integrado ao .NET via OpenTelemetry.
// Configuração do TracerProvider
var tracerProvider = new TracerProviderBuilder()
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddOtlpExporter(opt => {
opt.Endpoint = new Uri("http://jaeger:4317");
})
.Build();
2. Logs Estruturados com Serilog
Utilizaremos Serilog para estruturar os logs com contexto importante.
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Console(new RenderedCompactJsonFormatter())
.WriteTo.ApplicationInsights(new TelemetryClient(), TelemetryConverter.Events)
.CreateLogger();
3. Métricas com Prometheus
Coletaremos métricas usando OpenTelemetry Metrics API e exportando para Prometheus.
var meter = new Meter("OrderPipeline.Metrics");
var orderCounter = meter.CreateCounter<long>(
"orders.created",
unit: "{order}",
description: "Número de pedidos criados"
);
Beneficiando-se da Observabilidade
Com esses três pilares implementados, conseguimos:
- 🔍 Investigar laços de desempenho em produção
- 📄 Entender o contexto completo de cada erro
- 📈 Monitorar tendências de desempenho ao longo do tempo
- 🚨 Alertar sobre anomalias rapidamente
Próximos Passos
No próximo post, exploraremos padrões de resiliência como Retry e Circuit Breaker.