Prometheus-Metriken in C# (.NET) — Bibliothek prometheus-net

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Prometheus-Metriken in C# (.NET) — Bibliothek prometheus-net



In der modernen Entwicklung von Webanwendungen und Microservices auf der .NET-Plattform sind Monitoring und Observability (Beobachtbarkeit) zu obligatorischen Elementen der Produktionsumgebung geworden. Die Bibliothek prometheus-net ist die offizielle Client-Bibliothek für .NET, die es ermöglicht, Anwendungsmetriken einfach in einem Format zu exportieren, das der Monitoring-Server Prometheus versteht.



Mit prometheus-net können Sie Daten zur Leistung (Antwortzeit, Anzahl der Anfragen, Fehler, Speichernutzung) sammeln und an Prometheus zur späteren Visualisierung in Grafana oder anderen Tools übermitteln. Die Bibliothek unterstützt sowohl ältere Versionen von .NET Framework (4.6.1+) als auch moderne .NET Core / .NET 5/6/7/8.



Installation

Die Bibliothek kann über den NuGet Package Manager oder mit der .NET CLI installiert werden:

dotnet add package prometheus-net

Für ASP.NET Core-Anwendungen wird zusätzlich das Paket prometheus-net.AspNetCore benötigt:

dotnet add package prometheus-net.AspNetCore


Wichtige Metriktypen

Prometheus unterstützt vier Hauptmetriktypen. In prometheus-net sind sie als statische Fabriken in der Klasse Metrics implementiert:

  • Counter — ein Zähler, der nur erhöht werden kann (z. B. Anzahl der verarbeiteten Anfragen).
  • Gauge — eine Metrik, die sowohl erhöht als auch verringert werden kann (z. B. Anzahl der aktiven Verbindungen oder aktuelle Temperatur).
  • Histogram — ein Histogramm, das die Anzahl der Beobachtungen in bestimmten Intervallen (Buckets) zählt. Es wird zur Messung der Verteilung von Antwortzeiten oder Datengrößen verwendet.
  • Summary — eine zusammenfassende Metrik, die Quantile (p50, p95, p99) basierend auf einem Beobachtungsstrom berechnet.


Beispiel zur Verwendung von Counter

Erstellen wir einen einfachen Zähler für die Anzahl der verarbeiteten HTTP-Anfragen:

using Prometheus;

// Erstellen eines Zählers mit Name und Beschreibungprivate static readonly Counter RequestCount = Metrics .CreateCounter("myapp_requests_total", "Total number of HTTP requests.");

// Im Anfragen-Handler den Zähler erhöhenpublic IActionResult Index(){ RequestCount.Inc(); // um 1 erhöhen // Oder RequestCount.Inc(5); // um 5 erhöhen return View();}


Beispiel zur Verwendung von Gauge

Gauge eignet sich zur Verfolgung des aktuellen Zustands, z. B. der Anzahl aktiver Benutzer:

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

// Bei BenutzeranmeldungActiveUsers.Inc();

// Bei BenutzerabmeldungActiveUsers.Dec();


Beispiel zur Verwendung von Histogram

Ein Histogramm ist ideal zur Messung der Ausführungszeit von Anfragen:

private static readonly Histogram RequestDuration = Metrics    .CreateHistogram("myapp_request_duration_seconds",                      "Histogram of request duration.",                     new HistogramConfiguration                     {                         // Bucket-Grenzen konfigurieren                         Buckets = new[] { 0.1, 0.25, 0.5, 1.0, 2.5 }                     });

// In Middleware oder Controller-Aktionusing (RequestDuration.NewTimer()){ // Anfrage ausführen await Next(context);}


Integration mit ASP.NET Core

Damit Ihr Endpunkt /metrics Daten im Prometheus-Format ausgibt, reicht es, Middleware in Program.cs hinzuzufügen:

using Prometheus;

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

// Middleware zur Erfassung von Metriken hinzufügen

Empfehlungen