Vergleich von Metrik-APIs

Beim Hinzufügen einer neuen Metrikinstrumentierung zu einer .NET-App oder -Bibliothek stehen verschiedene APIs zur Auswahl. In diesem Artikel werden die Optionen erläutert.

.NET-APIs

System.Diagnostics.Metrics

System.Diagnostics.Metrics-APIs sind die neuesten plattformübergreifenden APIs, die in enger Zusammenarbeit mit dem OpenTelemetry-Projekt entwickelt wurden. Wenn Sie keinen besonderen Grund haben, eine der unten beschriebenen älteren APIs zu verwenden, ist System.Diagnostics.Metrics eine gute Standardwahl für neue Arbeiten. Sie ist verfügbar, wenn Sie .NET 6+ verwenden, oder in älteren .NET Core- und .NET Framework-Anwendungen, indem Sie einen Verweis auf das .NET System.Diagnostics.DiagnosticsSource 6.0+ NuGet-Paket hinzufügen. Zusätzlich zur umfassenden Kompatibilität bietet diese API Unterstützung für viele Dinge, die in älteren APIs fehlen, wie z. B.:

  • Histogramme und Perzentile
  • Mehrdimensionale Metriken
  • Stark typisierte API für Hochleistungs-Listener
  • Mehrere gleichzeitige Listener
  • Listenerzugriff auf nicht aggregierte Messungen

Obwohl diese API erfolgreich für OpenTelemetry und das wachsende Ökosystem von pluggierbaren Anbieterintegrationsbibliotheken konzipiert wurde, haben Anwendungen auch die Möglichkeit, die integrierten .NET-Listener-APIs direkt zu verwenden. Mit dieser Option können Sie benutzerdefinierte Metriktools erstellen, ohne externe Bibliotheksabhängigkeiten zu verwenden.

PerformanceCounter

System.Diagnostics.PerformanceCounter-APIs sind die ältesten .NET-Metrik-APIs. Sie werden nur auf Windows unterstützt und stellen einen verwalteten Wrapper für die Leistungsindikator-Technologie des Windows-Betriebssystems bereit. Sie sind in allen unterstützten Versionen von .NET verfügbar.

Diese APIs werden hauptsächlich aus Kompatibilitätsgründen bereitgestellt. Das .NET-Team sieht dies als einen stabilen Bereich an, der abgesehen von Fehlerbehebungen wahrscheinlich keine weitere Verbesserung erhalten wird. Diese APIs werden nur für neue Entwicklungsprojekte vorgeschlagen, wenn das Projekt Windows ist und Sie Windows-Leistungsindikatortools verwenden möchten.

Weitere Informationen finden Sie unter Leistungsindikatoren in .NET Framework.

EventCounters

Die EventCounters-APIs waren die ersten .NET-APIs, die eine plattformübergreifende Metrikumgebung unterstützten. Die APIs sind ab .NET Core 3.1 verfügbar, und eine kleine Teilmenge ist ab .NET Framework 4.7.1 verfügbar. Diese APIs werden vollständig unterstützt und werden immer noch von wichtigen .NET-Bibliotheken genutzt, verfügen jedoch über weniger Funktionalität als die neuerenSystem.Diagnostics.Metrics-APIs. EventCounters können Änderungs- und Durchschnittsraten melden, unterstützen jedoch keine Histogramme und Perzentile. Mehrdimensionale Metriken werden auch nicht unterstützt. Benutzerdefinierte Tools sind über die EventListener API möglich, obwohl sie nicht stark typisiert sind, nur Zugriff auf die aggregierten Werte bieten und Einschränkungen aufweisen, wenn mehrere Listener gleichzeitig verwendet werden. EventCounter werden direkt von Visual Studio, Application Insights, Dotnet-Countersund Dotnet-Monitor unterstützt. Informationen zur Unterstützung von Drittanbietertools finden Sie in der Dokumentation des Anbieters oder Projekts, wo Sie die Verfügbarkeit feststellen können.

Das .NET-Team erwartet in Zukunft keine neuen Investitionen in diese API, aber wie bei PerformanceCounters wird die API weiterhin für alle aktuellen und zukünftigen Benutzer unterstützt.

APIs von Drittanbietern

Die meisten Anbieter der Anwendungsleistungsüberwachung (Application Performance Monitoring, APM) wie AppDynamics, Application Insights, DataDog, DynaTrace und NewRelic enthalten Metrik-APIs als Teil ihrer Instrumentierungsbibliotheken. Prometheus und AppMetrics sind ebenfalls beliebte .NET-OSS-Projekte. Weitere Informationen zu diesen Projekten finden Sie auf den verschiedenen Projektwebseiten.