A observabilidade tornou-se um dos pilares fundamentais em aplicações modernas. Garantir que logs, métricas e traces estejam disponíveis e correlacionados é essencial para diagnosticar problemas, melhorar a performance e tomar decisões estratégicas.
Neste artigo, vamos explorar como mapear logs do .NET utilizando o ILogger
e integrá-los ao Grafana, uma das ferramentas mais populares do mercado para visualização e monitoramento.
📌 Por que integrar .NET com Grafana?
O Grafana é uma ferramenta flexível e extensível que pode consumir dados de múltiplas fontes, como:
- Loki (para logs distribuídos)
- Prometheus (para métricas)
- ElasticSearch
- Tempo (para traces)
No contexto de .NET moderno, o uso do ILogger
integrado com Serilog ou Elastic/Loki sinks permite enviar logs diretamente para backends que o Grafana consegue consumir e visualizar.
⚙️ Configurando o projeto .NET com ILogger
O ILogger
já está embutido no .NET e pode ser configurado com provedores de logging. Um exemplo simples para direcionar logs ao console e ao Loki:
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Sinks.Grafana.Loki;
var builder = WebApplication.CreateBuilder(args);
// Configuração do Serilog com Loki
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.GrafanaLoki("http://localhost:3100") // Loki endpoint
.CreateLogger();
builder.Host.UseSerilog();
var app = builder.Build();
app.MapGet("/", (ILogger<Program> logger) =>
{
logger.LogInformation("🌍 API chamada com sucesso em {time}", DateTime.UtcNow);
return "Hello Observability!";
});
app.Run();
Nesse exemplo:
- Logs são enviados tanto para o console quanto para o Grafana Loki.
- Grafana será responsável por visualizar os logs enviados.
🛠️ 3. Configurando o Loki + Grafana
Passo 1 – Subir Loki + Grafana com Docker Compose
version: "3.9"
services:
loki:
image: grafana/loki:2.9.0
ports:
- "3100:3100"
grafana:
image: grafana/grafana:10.0.0
ports:
- "3000:3000"
depends_on:
- loki
Passo 2 – Configurar o Loki como Data Source no Grafana
- Acesse
http://localhost:3000
- Vá em Connections > Data Sources
- Adicione Loki com a URL:
http://loki:3100
📊 Visualizando Logs no Grafana
Após a configuração:
- Vá em Explore no Grafana
- Selecione Loki como fonte
- Filtre logs por labels definidos no Serilog (
app
,env
,level
, etc.)
Exemplo de query no Grafana Loki:
{app="my-dotnet-api", level="Information"}
Isso retorna todos os logs da aplicação no nível Information.
🏗️ Boas práticas para Logging com Grafana e .NET
✔️ Estruture logs em JSON para fácil indexação.
✔️ Use Correlation IDs para rastrear requisições entre serviços.
✔️ Defina níveis adequados (Information
, Warning
, Error
, Critical
).
✔️ Evite logging excessivo (custo de armazenamento).
✔️ Combine logs + métricas + traces (observabilidade 360º).
✅ Conclusão
Integrar .NET com Grafana via Loki fornece uma solução poderosa para centralizar logs e permitir diagnósticos rápidos em arquiteturas modernas.
Com poucos passos, você consegue estruturar logs, visualizar no Grafana e evoluir sua observabilidade.
🤝 Conecte-se Comigo
Se você trabalha com .NET moderno e quer dominar observabilidade, arquitetura, C#, DevOps ou interoperabilidade, vamos conversar:
💼 LinkedIn
✍️ Medium
📬 contato@dopme.io
¹⁰ Mas, quando vier o que é perfeito, então o que o é em parte será aniquilado.
1 Coríntios 13:10
Top comments (0)