Überwachung von C# (.NET)-Anwendungen mit AppMetrics

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

Die Bibliothek AppMetrics zur Überwachung von C# (.NET)-Anwendungen



Bei der Entwicklung moderner .NET-Anwendungen ist es entscheidend, deren Zustand, Leistung zu verfolgen und Engpässe zu identifizieren. Die Bibliothek AppMetrics ist ein leistungsstarkes und flexibles Werkzeug zur Erfassung, Aggregation und zum Export von Metriken in Echtzeit. Sie ermöglicht Entwicklern und Administratoren ein vollständiges Bild des Dienstbetriebs: von der Ausführungszeit von Anfragen bis zur Fehlerhäufigkeit.



AppMetrics unterstützt zahlreiche Backends zur Speicherung von Metriken: Prometheus, InfluxDB, Graphite, Elasticsearch und andere. Dank der integrierten Health Checks können Sie nicht nur Statistiken sammeln, sondern auch die Funktionsfähigkeit von Abhängigkeiten (Datenbanken, externe APIs) überprüfen.



Hauptfunktionen

  • Zähler (Counters) – Anzahl der Anfragen, Fehler, Ereignisse.
  • Histogramme (Histograms) – Verteilung der Ausführungszeiten von Operationen.
  • Timer (Timers) – Messung der Ausführungsdauer von Code.
  • Messer (Meters) – Ereignisrate pro Sekunde.
  • Health Checks – Überprüfung der Verfügbarkeit externer Dienste.
  • Metrik-Export – nach Prometheus (Format /metrics), InfluxDB und andere.


Installation und Einrichtung

Installieren Sie das Paket über NuGet:

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


Fügen Sie dann die Dienste in Program.cs (oder Startup.cs) hinzu:

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

var builder = WebApplication.CreateBuilder(args);

// Metrik-Konfigurationvar 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();


Nach dem Start der Anwendung sind die Metriken unter der Adresse /metrics im Prometheus-Format verfügbar.



Erstellung benutzerdefinierter Metriken

Definieren Sie eine Klasse zum Speichern von Metriken:

public class MyMetrics{    private readonly IMetrics _metrics;

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

// Anfragenzähler private readonly CounterOptions _requestCounter = new CounterOptions { Name = "myapp_requests_total", MeasurementUnit = Unit.Requests };

// Timer zur Messung der Ausführungszeit 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); }}


Verwenden Sie die Metriken in Controllern:

[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 der Arbeit Thread.Sleep(100); }

return Ok("Metrics tracked"); }}


Health Checks

Empfehlungen