Surveillance des applications .NET avec Prometheus et OpenTelemetry

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

Surveillance des applications C# (.NET) : des métriques à l'alerting



Les applications .NET modernes nécessitent une surveillance constante des performances, de la disponibilité et de l'état des processus internes. Dans cet article, nous examinerons les outils clés pour organiser la surveillance : Prometheus pour la collecte de métriques, OpenTelemetry pour le traçage et Serilog pour la journalisation structurée. Vous apprendrez comment intégrer l'observabilité dans votre application C#.



Pourquoi la surveillance des applications .NET est-elle nécessaire ?

L'absence de surveillance transforme le débogage en devinette. Sans métriques, vous ne saurez pas si le temps de réponse augmente ; sans traces, vous ne trouverez pas le goulot d'étranglement dans la chaîne d'appels ; sans logs, vous ne comprendrez pas la cause d'une erreur. Une surveillance correctement configurée permet de :

  • Détecter les anomalies avant qu'elles n'affectent les utilisateurs.
  • Analyser les performances de composants individuels (bases de données, API, cache).
  • Collecter des métriques métier (nombre de commandes, sessions actives).
  • Automatiser les alertes en cas d'incidents.


Outils pour la surveillance .NET

Nous utiliserons trois composants principaux :

  • Prometheus — système de collecte et de stockage de métriques avec un langage de requête puissant, PromQL.
  • OpenTelemetry — standard pour la collecte de télémétrie (traces, métriques, logs).
  • Serilog — bibliothèque de journalisation structurée pour .NET.


Étape 1 : Installation et configuration de Prometheus avec .NET

Pour intégrer Prometheus avec C#, utilisez le package prometheus-net. Installez-le via NuGet :

dotnet add package prometheus-net

Ensuite, ajoutez le middleware dans votre Program.cs :

using Prometheus;

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

// Activer le point de terminaison /metrics pour Prometheusapp.UseHttpMetrics();app.MapMetrics();

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

Après avoir lancé l'application, accédez à http://localhost:5000/metrics. Vous verrez les métriques standard : http_requests_total, http_request_duration_seconds et autres.



Étape 2 : Création de métriques personnalisées

Il est souvent nécessaire de suivre des indicateurs métier. Par exemple, le nombre de commandes traitées :

using Prometheus;

public class OrderMetrics{ private static readonly Counter OrdersCounter = Metrics .CreateCounter("orders_processed_total", "Total number of processed orders");

public static void RecordOrder() { OrdersCounter.Inc(); }}

// Utilisation dans un contrôleur[ApiController][Route("api/orders")]public class OrdersController : ControllerBase{ [HttpPost] public IActionResult CreateOrder() { // ... logique de création de commande OrderMetrics.RecordOrder(); return Ok(); }}

Maintenant, dans /metrics, la ligne orders_processed_total 1 apparaîtra.



Étape 3 : Traçage avec OpenTelemetry

Le traçage aide à comprendre combien de temps chaque étape du traitement d'une requête prend. Installez les packages :

dotnet add package OpenTelemetry.Extensions.Hostingdotnet add package OpenTelemetry.Instrumentation.AspNetCoredotnet add package OpenTelemetry.Exporter.Console

Configurez OpenTelemetry dans Program.cs :

using OpenTelemetry.Trace;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOpenTelemetry() .WithTracing(tracing => tracing .AddAspNetCoreInstrumentation() .AddConsoleExporter());

var app = builder.Build();app.Run();

Désormais, chaque requête HTTP créera automatiquement une trace avec des informations sur le temps d'exécution. Pour l'exportation

Recommendations