Porovnání rozhraní API pro metriky

Při přidávání nové instrumentace metrik do aplikace nebo knihovny .NET existují různá rozhraní API, ze které si můžete vybrat. Tento článek vám pomůže pochopit možnosti.

rozhraní API .NET

System.Diagnostics.Metrics

Rozhraní API System.Diagnostics.Metrics jsou nejnovější multiplatformní rozhraní API a byla navržena v úzké spolupráci s projektem OpenTelemetry . Pokud nemáte konkrétní důvod k použití některého ze starších rozhraní API popsaných níže, system.Diagnostics.Metrics je dobrou výchozí volbou pro novou práci. Je dostupné pro .NET 6+ nebo ve starších aplikacích .NET Core a .NET Framework přidáním odkazu na balíček NuGet .NET System.Diagnostics.DiagnosticsSource verze 6.0+. Kromě zaměření na širokou kompatibilitu toto rozhraní API přidává podporu mnoha věcí, které v dřívějších rozhraních API chyběly, například:

  • Histogramy a percentily
  • Multidimenzionální metriky
  • API staticky typovaného vysoce výkonného naslouchacího rozhraní
  • Více současných posluchačů
  • Přístup posluchače k neagregovaným měřením

I když bylo toto rozhraní API navrženo tak, aby dobře fungovalo s OpenTelemetry a jeho rostoucím ekosystémem zásuvných knihoven integrace dodavatelů, aplikace mají také možnost používat přímo rozhraní pro naslouchání zabudovaná v .NET. Pomocí této možnosti můžete vytvořit vlastní nástroje metrik, aniž byste museli záviset na jakýchkoli externích knihovnách.

PerformanceCounter

System.Diagnostics.PerformanceCounter Rozhraní API jsou nejstarší rozhraní API pro metriky .NET. Jsou podporovány jenom ve Windows a poskytují spravovaný obal pro technologii čítače výkonu operačního systému Windows. Jsou k dispozici ve všech podporovaných verzích .NET.

Tato rozhraní API jsou poskytována především kvůli kompatibilitě; tým .NET považuje tuto stabilní oblast, která pravděpodobně nebude dostávat další vylepšení kromě oprav chyb. Tato rozhraní API nejsou doporučována pro nové vývojové projekty, pokud projekt není určen pouze pro Windows nebo pokud nechcete použít nástroje čítače výkonu systému Windows.

Další informace naleznete v tématu Čítače výkonu v rozhraní .NET Framework.

Událostní počítadla

EventCounters byly první rozhraní .NET API pro podporu prostředí metrik napříč platformami. Rozhraní API jsou dostupná tak, že cílí na .NET Core 3.1 nebo novější a malá podmnožina je k dispozici v rozhraní .NET Framework 4.7.1 a novějším. Tato rozhraní API jsou plně podporovaná a stále používají klíčové knihovny .NET, ale mají méně funkcí než novější System.Diagnostics.Metrics rozhraní API. EventCounters můžou hlásit míru změn a průměrů, ale nepodporují histogramy a percentily. Pro multidimenzionální metriky také neexistuje žádná podpora. Prostřednictvím EventListener rozhraní API je možné vytvořit vlastní nástroje, i když není silně typováno, poskytuje přístup pouze k agregovaným hodnotám, a má omezení při použití více než jednoho posluchače současně. EventCountery podporují přímo Visual Studio, Application Insights, dotnet-counters a dotnet-monitor. Informace o podpoře nástrojů třetích stran najdete v dokumentaci dodavatele nebo projektu a zjistěte, jestli je k dispozici.

Tým .NET neočekává, že bude do tohoto rozhraní API dál investovat, ale stejně jako PerformanceCountersv případě , rozhraní API zůstane podporováno pro všechny aktuální a budoucí uživatele.

Rozhraní API třetích stran

Většina dodavatelů monitorování výkonu aplikací (APM), jako je AppDynamics, Application Insights, DataDog, DynaTrace a NewRelic, zahrnuje metriková API jako součást svých instrumentačních knihoven. Prometheus a AppMetrics jsou také oblíbené projekty .NET OSS. Další informace o těchto projektech najdete na různých webových stránkách projektů.