Sdílet prostřednictvím


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, co je k dispozici, a některé související kompromisy.

Existují dvě hlavní kategorie rozhraní API, specifická pro dodavatele a specifická pro dodavatele. Rozhraní API specifická pro dodavatele mají výhodu, že dodavatel může rychle iterovat své návrhy, přidat specializované funkce a dosáhnout těsné integrace mezi rozhraními API instrumentace a back-endovými systémy. Pokud jste například aplikaci instrumentovali pomocí rozhraní API metrik poskytovaných aplikací Přehledy, očekávali byste, že při práci s analytickými nástroji najdete dobře integrované funkce a všechny nejnovější funkce Application Insights. Knihovna nebo aplikace by se ale teď také s tímto dodavatelem propošla a změna na jinou v budoucnu by vyžadovala přepsání instrumentace. U knihoven může být toto propojení obzvláště problematické, protože vývojář knihovny může používat rozhraní API jednoho dodavatele a vývojáře aplikací, který odkazuje na knihovnu, která chce pracovat s jiným dodavatelem. Pokud chcete tento problém s párování vyřešit, poskytují standardní fasády rozhraní API a rozšiřitelnost body pro směrování dat do různých back-endových systémů dodavatele v závislosti na konfiguraci. Rozhraní API neutrální pro dodavatele ale můžou poskytovat méně funkcí a stále máte omezení, abyste vybrali dodavatele, který je integrovaný s mechanismem rozšiřitelnosti fasády.

Rozhraní .NET API

Přes. V historii 20 let rozhraní NET jsme několikrát iterovali návrh pro rozhraní API metrik, z nichž všechna jsou podporovaná a neutrální pro dodavatele:

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 k dispozici tak, že cílí na .NET 6 nebo ve starších aplikacích .NET Core a .NET Framework přidáním odkazu na balíček NuGet .NET System.DiagnosticsSource 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
  • Rozhraní API vysoce výkonného naslouchacího procesu silného typu
  • Více souběžných naslouchacích procesů
  • Přístup naslouchacího procesu k neagregovaným měřením

I když bylo toto rozhraní API navržené tak, aby dobře fungovalo s OpenTelemetry a jeho rostoucím ekosystémem integrovaných knihoven dodavatelů, aplikace mají také možnost používat přímo integrovaná rozhraní API naslouchacího procesu .NET. Pomocí této možnosti můžete vytvořit vlastní nástroje metrik, aniž byste museli provádět jakékoli závislosti externí knihovny.

Performancecounter

System.Diagnostics.PerformanceCounter Rozhraní API jsou nejstarší rozhraní API pro metriky. Podporují se jenom ve Windows a poskytují spravovaný obálka 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 navržena pro nové vývojové projekty, pokud projekt není jen pro Windows a nemáte zájem používat nástroje čítače výkonu systému Windows.

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

EventCounters

Rozhraní API EventCounters přišlo dále po PerformanceCounters. Toto rozhraní API je zaměřené na zajištění jednotného prostředí pro různé platformy. 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 aktivně je 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. Vlastní nástroje je možné prostřednictvím EventListener rozhraní API, i když není silného typu, poskytuje přístup pouze k agregovaným hodnotám a má omezení při použití více než jednoho naslouchacího procesu současně. EventCounters jsou podporovány přímo v sadě Visual Studio, application Přehledy, 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 posílat značné nové investice, ale stejně jako v PerformanceCounterspřípadě , rozhraní API zůstává aktivně 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 jsou AppDynamics, Application Přehledy, DataDog, DynaTrace a NewRelic, zahrnují rozhraní API metrik jako součást svých knihoven instrumentace. Prometheus a AppMetrics jsou také oblíbené projekty .NET OSS. Další informace o těchtoprojektechch