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

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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



En el desarrollo moderno de aplicaciones web y microservicios en la plataforma .NET, el monitoreo y la observabilidad se han convertido en elementos obligatorios en entornos de producción. La biblioteca prometheus-net es la biblioteca cliente oficial para .NET, que permite exportar fácilmente las métricas de la aplicación en un formato comprensible para el servidor de monitoreo Prometheus.



Con prometheus-net puedes recopilar datos sobre el rendimiento (tiempo de respuesta, número de solicitudes, errores, uso de memoria) y transmitirlos a Prometheus para su posterior visualización en Grafana u otras herramientas. La biblioteca es compatible tanto con versiones antiguas de .NET Framework (4.6.1+) como con las modernas .NET Core / .NET 5/6/7/8.



Instalación

Puedes instalar la biblioteca a través del Administrador de paquetes NuGet o mediante la CLI de .NET:

dotnet add package prometheus-net

Para aplicaciones ASP.NET Core, también se requiere el paquete prometheus-net.AspNetCore:

dotnet add package prometheus-net.AspNetCore


Tipos principales de métricas

Prometheus admite cuatro tipos principales de métricas. En prometheus-net se implementan como fábricas estáticas en la clase Metrics:

  • Counter — un contador que solo puede aumentar (por ejemplo, el número de solicitudes procesadas).
  • Gauge — una métrica que puede tanto aumentar como disminuir (por ejemplo, el número de conexiones activas o la temperatura actual).
  • Histogram — un histograma que cuenta el número de observaciones en intervalos definidos (buckets). Se utiliza para medir la distribución del tiempo de respuesta o el tamaño de los datos.
  • Summary — una métrica resumida que calcula cuantiles (p50, p95, p99) basándose en un flujo de observaciones.


Ejemplo de uso de Counter

Creemos un contador simple para contar el número de solicitudes HTTP procesadas:

using Prometheus;

// Creamos un contador con nombre y descripciónprivate static readonly Counter RequestCount = Metrics .CreateCounter("myapp_requests_total", "Número total de solicitudes HTTP.");

// En el manejador de la solicitud incrementamos el contadorpublic IActionResult Index(){ RequestCount.Inc(); // incrementar en 1 // O RequestCount.Inc(5); // incrementar en 5 return View();}


Ejemplo de uso de Gauge

Gauge es útil para rastrear el estado actual, por ejemplo, el número de usuarios activos:

private static readonly Gauge ActiveUsers = Metrics    .CreateGauge("myapp_active_users", "Número de usuarios activos.");

// Al iniciar sesión de un usuarioActiveUsers.Inc();

// Al cerrar sesión de un usuarioActiveUsers.Dec();


Ejemplo de uso de Histogram

El histograma es ideal para medir el tiempo de ejecución de las solicitudes:

private static readonly Histogram RequestDuration = Metrics    .CreateHistogram("myapp_request_duration_seconds",                      "Histograma de la duración de las solicitudes.",                     new HistogramConfiguration                     {                         // Configuramos los límites de los buckets                         Buckets = new[] { 0.1, 0.25, 0.5, 1.0, 2.5 }                     });

// En un middleware o en una acción de controladorusing (RequestDuration.NewTimer()){ // ejecución de la solicitud await Next(context);}


Integración con ASP.NET Core

Para que tu endpoint /metrics comience a entregar datos en formato Prometheus, basta con agregar el middleware en Program.cs:

using Prometheus;

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

// Agregamos el middleware para recopilar mét

Recommendations