DEV Community

Cover image for Mapeando API .NET com Prometheus
Danilo O. Pinheiro, dopme.io
Danilo O. Pinheiro, dopme.io

Posted on

Mapeando API .NET com Prometheus

No cenário moderno de aplicações distribuídas, a observabilidade é um dos pilares mais importantes para garantir estabilidade, performance e confiabilidade. Ao desenvolver APIs com .NET moderno, é fundamental expor métricas que permitam monitorar o comportamento da aplicação em produção.

Uma das ferramentas mais utilizadas para esse propósito é o Prometheus, que coleta métricas em tempo real e oferece suporte à análise e integração com dashboards como o Grafana.

Neste artigo, vamos ver como mapear métricas de uma API .NET utilizando Prometheus.


📌 Por que utilizar Prometheus com .NET?

  • 📊 Coleta de métricas em tempo real.
  • 🚀 Baixa sobrecarga para aplicações em produção.
  • 🔗 Integração fácil com Grafana e outros sistemas de observabilidade.
  • ✅ Suporte a alertas customizáveis com base em queries PromQL.
  • 🔍 Monitoramento de APIs REST, gRPC, workers e microservices.

⚙️ Preparando o projeto .NET

Primeiro, crie uma API simples com .NET 7+:

dotnet new webapi -n ApiPrometheusDemo
cd ApiPrometheusDemo
Enter fullscreen mode Exit fullscreen mode

Adicione o pacote Prometheus.Net.AspNetCore:

dotnet add package prometheus-net.AspNetCore
Enter fullscreen mode Exit fullscreen mode

🛠️ Configurando métricas na API

No arquivo Program.cs, configure o middleware do Prometheus:

using Prometheus;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();

app.UseRouting();

// Exposição do endpoint padrão do Prometheus
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    endpoints.MapMetrics(); // expõe /metrics
});

app.Run();
Enter fullscreen mode Exit fullscreen mode

Agora, ao rodar a aplicação, as métricas estarão disponíveis em:
👉 http://localhost:5000/metrics


📡 Criando métricas customizadas

Além das métricas padrão, é possível definir métricas específicas para sua API.

Exemplo: contador de requisições de um endpoint de pedidos:

using Microsoft.AspNetCore.Mvc;
using Prometheus;

namespace ApiPrometheusDemo.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class OrdersController : ControllerBase
    {
        private static readonly Counter OrdersCounter =
            Metrics.CreateCounter("orders_created_total", "Número total de pedidos criados");

        [HttpPost]
        public IActionResult CreateOrder()
        {
            OrdersCounter.Inc(); // Incrementa a métrica
            return Ok(new { Message = "Pedido criado com sucesso!" });
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Agora, cada chamada a POST /orders será refletida em orders_created_total.


🧩 Configurando Prometheus

Crie o arquivo prometheus.yml:

global:
  scrape_interval: 5s

scrape_configs:
  - job_name: "dotnet-api"
    metrics_path: /metrics
    static_configs:
      - targets: ["host.docker.internal:5000"]
Enter fullscreen mode Exit fullscreen mode

Inicie o Prometheus via Docker:

docker run -d --name=prometheus -p 9090:9090 -v ./prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
Enter fullscreen mode Exit fullscreen mode

📊 Visualizando métricas no Grafana

  • Configure o Prometheus como Data Source no Grafana.
  • Crie dashboards para acompanhar:

    • 🔹 Latência das requisições.
    • 🔹 Número de pedidos criados.
    • 🔹 Consumo de memória e CPU da API.

✅ Conclusão

Integrar o Prometheus com uma API .NET é uma prática essencial para equipes que desejam garantir observabilidade e confiabilidade em produção. Além das métricas padrão, o poder está em criar métricas customizadas que refletem diretamente o negócio, como número de pedidos, falhas ou tempo médio de resposta.

Combinado ao Grafana, o Prometheus oferece uma visão clara da saúde e do desempenho da aplicação, ajudando a antecipar problemas antes que impactem os usuários.


🤝 Conecte-se Comigo

Se você trabalha com .NET moderno e quer dominar arquitetura, C#, observabilidade, DevOps ou interoperabilidade, vamos conversar:

💼 LinkedIn
✍️ Medium
📬 contato@dopme.io


¹⁰ Não confieis na opressão, nem vos ensoberbeçais na rapina; se as vossas riquezas aumentam, não ponhais nelas o coração.
Salmos 62:10

Top comments (0)