Métriques Prometheus en C# (.NET) — bibliothèque prometheus-net

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Métriques Prometheus en C# (.NET) — bibliothèque prometheus-net



Dans le développement moderne d'applications web et de microservices sur la plateforme .NET, la surveillance et l'observabilité sont devenues des éléments obligatoires de l'environnement de production. La bibliothèque prometheus-net est la bibliothèque cliente officielle pour .NET, qui permet d'exporter facilement les métriques d'application dans un format compréhensible par le serveur de surveillance Prometheus.



Avec prometheus-net, vous pouvez collecter des données de performance (temps de réponse, nombre de requêtes, erreurs, utilisation de la mémoire) et les transmettre à Prometheus pour une visualisation ultérieure dans Grafana ou d'autres outils. La bibliothèque prend en charge à la fois les anciennes versions de .NET Framework (4.6.1+) et les versions modernes .NET Core / .NET 5/6/7/8.



Installation

Vous pouvez installer la bibliothèque via le gestionnaire de packages NuGet ou avec .NET CLI :

dotnet add package prometheus-net

Pour les applications ASP.NET Core, le package prometheus-net.AspNetCore est également requis :

dotnet add package prometheus-net.AspNetCore


Types de métriques principaux

Prometheus prend en charge quatre types de métriques principaux. Dans prometheus-net, ils sont implémentés comme des fabriques statiques dans la classe Metrics :

  • Counter — un compteur qui ne peut qu'augmenter (par exemple, le nombre de requêtes traitées).
  • Gauge — une métrique qui peut à la fois augmenter et diminuer (par exemple, le nombre de connexions actives ou la température actuelle).
  • Histogram — un histogramme qui compte le nombre d'observations dans des intervalles définis (buckets). Utilisé pour mesurer la distribution du temps de réponse ou de la taille des données.
  • Summary — une métrique sommaire qui calcule les quantiles (p50, p95, p99) à partir d'un flux d'observations.


Exemple d'utilisation de Counter

Créons un compteur simple pour compter le nombre de requêtes HTTP traitées :

using Prometheus;

// Création d'un compteur avec un nom et une descriptionprivate static readonly Counter RequestCount = Metrics .CreateCounter("myapp_requests_total", "Total number of HTTP requests.");

// Dans le gestionnaire de requête, on incrémente le compteurpublic IActionResult Index(){ RequestCount.Inc(); // incrémenter de 1 // Ou RequestCount.Inc(5); // incrémenter de 5 return View();}


Exemple d'utilisation de Gauge

Gauge est pratique pour suivre l'état actuel, par exemple le nombre d'utilisateurs actifs :

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

// Lors de la connexion d'un utilisateurActiveUsers.Inc();

// Lors de la déconnexion d'un utilisateurActiveUsers.Dec();


Exemple d'utilisation de Histogram

L'histogramme est idéal pour mesurer le temps d'exécution des requêtes :

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

// Dans un middleware ou une action de contrôleurusing (RequestDuration.NewTimer()){ // exécution de la requête await Next(context);}


Intégration avec ASP.NET Core

Pour que votre endpoint /metrics commence à fournir des données au format Prometheus, il suffit d'ajouter un middleware dans Program.cs :

using Prometheus;

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

// Ajout du middleware pour la collecte des

Recommendations