Métricas Prometheus em C# (.NET) — biblioteca prometheus-net

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Métricas Prometheus em C# (.NET) — biblioteca prometheus-net



No desenvolvimento moderno de aplicações web e microsserviços na plataforma .NET, o monitoramento e a observability (observabilidade) tornaram-se elementos obrigatórios em ambientes de produção. A biblioteca prometheus-net é a biblioteca cliente oficial para .NET, que permite exportar facilmente as métricas da aplicação em um formato compreensível para o servidor de monitoramento Prometheus.



Com o prometheus-net, você pode coletar dados de desempenho (tempo de resposta, número de requisições, erros, uso de memória) e enviá-los para o Prometheus para posterior visualização no Grafana ou outras ferramentas. A biblioteca suporta tanto versões antigas do .NET Framework (4.6.1+) quanto as modernas .NET Core / .NET 5/6/7/8.



Instalação

A biblioteca pode ser instalada através do NuGet Package Manager ou usando a CLI do .NET:

dotnet add package prometheus-net

Para aplicações ASP.NET Core, o pacote prometheus-net.AspNetCore também é necessário:

dotnet add package prometheus-net.AspNetCore


Tipos principais de métricas

O Prometheus suporta quatro tipos principais de métricas. No prometheus-net, eles são implementados como fábricas estáticas na classe Metrics:

  • Counter — um contador que só pode aumentar (por exemplo, número de requisições processadas).
  • Gauge — uma métrica que pode tanto aumentar quanto diminuir (por exemplo, número de conexões ativas ou temperatura atual).
  • Histogram — um histograma que conta o número de observações em intervalos definidos (buckets). Usado para medir a distribuição do tempo de resposta ou tamanho dos dados.
  • Summary — uma métrica resumida que calcula quantis (p50, p95, p99) com base em um fluxo de observações.


Exemplo de uso do Counter

Vamos criar um contador simples para contar o número de requisições HTTP processadas:

using Prometheus;

// Criamos um contador com nome e descriçãoprivate static readonly Counter RequestCount = Metrics .CreateCounter("myapp_requests_total", "Total number of HTTP requests.");

// No manipulador da requisição, incrementamos o contadorpublic IActionResult Index(){ RequestCount.Inc(); // incrementar em 1 // Ou RequestCount.Inc(5); // incrementar em 5 return View();}


Exemplo de uso do Gauge

O Gauge é útil para monitorar o estado atual, por exemplo, o número de usuários ativos:

private static readonly Gauge ActiveUsers = Metrics    .CreateGauge("myapp_active_users", "Number of active users.");

// Quando um usuário entraActiveUsers.Inc();

// Quando um usuário saiActiveUsers.Dec();


Exemplo de uso do Histogram

O histograma é ideal para medir o tempo de execução das requisições:

private static readonly Histogram RequestDuration = Metrics    .CreateHistogram("myapp_request_duration_seconds",                      "Histogram of request duration.",                     new HistogramConfiguration                     {                         // Configuramos os limites dos buckets                         Buckets = new[] { 0.1, 0.25, 0.5, 1.0, 2.5 }                     });

// No middleware ou na ação do controladorusing (RequestDuration.NewTimer()){ // execução da requisição await Next(context);}


Integração com ASP.NET Core

Para que seu endpoint /metrics comece a fornecer dados no formato Prometheus, basta adicionar o middleware no Program.cs:

using Prometheus;

var builder = WebApplication.CreateBuilder(args);var app = builder.Build();

// Adicionamos o middleware para coleta de

Recommendations