Udostępnij za pośrednictwem


Porównanie interfejsów API metryk

Podczas dodawania nowej instrumentacji metryk do aplikacji lub biblioteki platformy .NET istnieją różne interfejsy API do wyboru. Ten artykuł pomoże Ci zrozumieć opcje.

Interfejsy API platformy .NET

System.Diagnostics.Metrics

Interfejsy API System.Diagnostics.Metrics to najnowsze interfejsy API międzyplatformowe i zostały zaprojektowane we ścisłej współpracy z projektem OpenTelemetry . Jeśli nie masz konkretnego powodu, aby użyć jednego ze starszych interfejsów API opisanych poniżej, system.Diagnostics.Metrics jest dobrym wyborem domyślnym dla nowej pracy. Jest ona dostępna, odwołując się do platformy .NET 6 lub starszej wersji aplikacji .NET Core i .NET Framework, dodając odwołanie do pakietu NuGet .NET System.Diagnostics.DiagnosticsSource 6.0 lub nowszego. Oprócz zapewnienia szerokiej zgodności ten interfejs API dodaje obsługę wielu rzeczy, których brakowało we wcześniejszych interfejsach API, takich jak:

  • Histogramy i percentyle
  • Metryki wielowymiarowe
  • Silnie typizowane interfejs API odbiornika o wysokiej wydajności
  • Wiele równoczesnych odbiorników
  • Dostęp odbiornika do nieagregowanych pomiarów

Mimo że ten interfejs API został zaprojektowany tak, aby działał dobrze z usługą OpenTelemetry i jej rosnącym ekosystemem wtyczek bibliotek integracji dostawców, aplikacje mają również możliwość bezpośredniego używania wbudowanych interfejsów API odbiornika platformy .NET. Dzięki tej opcji można utworzyć niestandardowe narzędzia metryk bez konieczności podejmowania żadnych zależności bibliotek zewnętrznych.

PerformanceCounter

System.Diagnostics.PerformanceCounter Interfejsy API to najstarsze interfejsy API metryk platformy .NET. Są one obsługiwane tylko w systemie Windows i zapewniają zarządzaną otokę dla technologii licznika wydajności systemu operacyjnego Windows. Są one dostępne we wszystkich obsługiwanych wersjach platformy .NET.

Te interfejsy API są udostępniane głównie pod kątem zgodności; zespół platformy .NET uważa, że jest to stabilny obszar, który jest mało prawdopodobne, aby otrzymać dalszą poprawę oprócz poprawek błędów. Te interfejsy API nie są sugerowane dla nowych projektów programistycznych, chyba że projekt jest przeznaczony tylko dla systemu Windows i chcesz używać narzędzi licznika wydajności systemu Windows.

Aby uzyskać więcej informacji, zobacz Liczniki wydajności w programie .NET Framework.

EventCounters

EventCounters były pierwszymi interfejsami API platformy .NET, które obsługują środowisko metryk międzyplatformowych. Interfejsy API są dostępne dla platformy .NET Core 3.1 lub nowszej, a niewielki podzbiór jest dostępny w programie .NET Framework 4.7.1 lub nowszym. Te interfejsy API są w pełni obsługiwane i nadal używane przez kluczowe biblioteki platformy .NET, ale mają mniej funkcji niż nowsze System.Diagnostics.Metrics interfejsy API. EventCounters są w stanie zgłaszać współczynniki zmian i średnich, ale nie obsługują histogramów i percentyli. Nie ma również obsługi metryk wielowymiarowych. Niestandardowe narzędzia są możliwe za pośrednictwem interfejsu EventListener API, choć nie jest silnie typizowane, zapewnia dostęp tylko do zagregowanych wartości i ma ograniczenia dotyczące korzystania z więcej niż jednego odbiornika jednocześnie. Usługa EventCounters jest obsługiwana bezpośrednio przez program Visual Studio, usługę Application Insights, liczniki dotnet-counter i dotnet-monitor. Aby uzyskać pomoc techniczną dla narzędzi innych firm, zapoznaj się z dokumentacją dostawcy lub projektu, aby sprawdzić, czy jest dostępna.

Zespół platformy .NET nie spodziewa się nowych inwestycji w ten interfejs API w przyszłości, ale podobnie jak w przypadku PerformanceCountersinterfejsu API, interfejs API pozostaje obsługiwany dla wszystkich bieżących i przyszłych użytkowników.

Interfejsy API innych firm

Większość dostawców monitorowania wydajności aplikacji (APM), takich jak AppDynamics, Application Insights, DataDog, DynaTrace i NewRelic , obejmują interfejsy API metryk w ramach bibliotek instrumentacji. Prometheus i AppMetrics są również popularnymi projektami systemu operacyjnego .NET. Aby dowiedzieć się więcej o tych projektach, zapoznaj się z różnymi witrynami internetowymi projektów.