Surveillance des applications C# (.NET) avec AppMetrics

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

Bibliothèque AppMetrics pour la surveillance des applications C# (.NET)



Lors du développement d'applications .NET modernes, il est essentiel de suivre leur état, leurs performances et d'identifier les goulots d'étranglement. La bibliothèque AppMetrics est un outil puissant et flexible pour la collecte, l'agrégation et l'exportation de métriques en temps réel. Elle permet aux développeurs et aux administrateurs d'obtenir une vue complète du fonctionnement du service : du temps d'exécution des requêtes au taux d'erreurs.



AppMetrics prend en charge de nombreux backends pour le stockage des métriques : Prometheus, InfluxDB, Graphite, Elasticsearch et autres. Grâce aux Health Checks intégrés, vous pouvez non seulement collecter des statistiques, mais aussi vérifier la disponibilité des dépendances (bases de données, API externes).



Fonctionnalités principales

  • Compteurs (Counters) — nombre de requêtes, d'erreurs, d'événements.
  • Histogrammes (Histograms) — distribution des temps d'exécution des opérations.
  • Minuteurs (Timers) — mesure de la durée d'exécution du code.
  • Débitmètres (Meters) — vitesse des événements par seconde.
  • Health Checks — vérification de la disponibilité des services externes.
  • Exportation des métriques — vers Prometheus (format /metrics), InfluxDB et autres.


Installation et configuration

Installez le package via NuGet :

dotnet add package AppMetrics.AspNetCore.Mvcdotnet add package AppMetrics.Reporting.Prometheus.Client


Ajoutez ensuite les services dans Program.cs (ou Startup.cs) :

using App.Metrics;using App.Metrics.AspNetCore;using App.Metrics.Formatters.Prometheus;

var builder = WebApplication.CreateBuilder(args);

// Configuration des métriquesvar metrics = AppMetrics.CreateDefaultBuilder() .OutputMetrics.AsPrometheusPlainText() .Build();

builder.Services.AddMetrics(metrics);builder.Services.AddMetricsTrackingMiddleware();builder.Services.AddMetricsEndpoints();

var app = builder.Build();

app.UseMetricsAllMiddleware();app.UseMetricsAllEndpoints();

app.MapGet("/", () => "Hello World!");

app.Run();


Après le démarrage de l'application, les métriques seront disponibles à l'adresse /metrics au format Prometheus.



Création de métriques personnalisées

Définissez une classe pour stocker les métriques :

public class MyMetrics{    private readonly IMetrics _metrics;

public MyMetrics(IMetrics metrics) { _metrics = metrics; }

// Compteur de requêtes private readonly CounterOptions _requestCounter = new CounterOptions { Name = "myapp_requests_total", MeasurementUnit = Unit.Requests };

// Minuteur pour mesurer le temps d'exécution private readonly TimerOptions _requestTimer = new TimerOptions { Name = "myapp_request_duration_seconds", MeasurementUnit = Unit.Requests, DurationUnit = TimeUnit.Seconds };

public void TrackRequest() { _metrics.Measure.Counter.Increment(_requestCounter); }

public IDisposable MeasureRequestDuration() { return _metrics.Measure.Timer.Time(_requestTimer); }}


Utilisez les métriques dans les contrôleurs :

[ApiController][Route("api/[controller]")]public class SampleController : ControllerBase{    private readonly MyMetrics _myMetrics;

public SampleController(MyMetrics myMetrics) { _myMetrics = myMetrics; }

[HttpGet] public IActionResult Get() { _myMetrics.TrackRequest();

using (_myMetrics.MeasureRequestDuration()) { // Simulation de travail Thread.Sleep(100); }

return Ok("Metrics tracked"); }}


Health Checks

Recommendations