DEV Community

Cover image for 📝 Mapeando Logs do .NET com Grafana
Danilo O. Pinheiro, dopme.io
Danilo O. Pinheiro, dopme.io

Posted on

📝 Mapeando Logs do .NET com Grafana

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();
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Passo 2 – Configurar o Loki como Data Source no Grafana

  1. Acesse http://localhost:3000
  2. Vá em Connections > Data Sources
  3. 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"}
Enter fullscreen mode Exit fullscreen mode

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)