Interfejsy API telemetrii na platformie .NET
Jak można zbadać zachowanie aplikacji pod kątem rozwiązywania problemów lub optymalizacji wydajności? Tym więcej danych dotyczących tego, co zrobiła aplikacja, tym łatwiej jest zdiagnozować problemy.
Wyobraź sobie, że pracujesz dla sprzedawcy sprzętu zewnętrznego. Zespoły kompilują swoje mikrousługi gotowe do fazy testowania. Chcesz mieć pewność, że aplikacja natywna dla chmury emituje dane telemetryczne dotyczące jego zachowania, aby można było diagnozować problemy podczas testowania, przemieszczania i produkcji.
W tej lekcji dowiesz się więcej o telemetrii i różnych rodzajach danych, za pomocą których można je rejestrować.
Co to jest telemetria?
W inżynierii telemetria jest pomiarem danych i automatycznej transmisji do centralnego systemu do monitorowania. Na przykład samochód wyścigowy może rejestrować dane dotyczące jego wydajności i wysyłać go z powrotem do paddock, gdzie inżynierowie je analizują. Podobnie kapsuła kosmiczna może rejestrować informacje o warunkach w kapsułce i wysyłać ją z powrotem do kontroli misji. W ostatnich latach często zdarza się rejestrować i analizować dane telemetryczne w bardziej typowych systemach. Na przykład centralne ogrzewanie może wysyłać dane telemetryczne do producenta, aby pomóc w rozwiązywaniu problemów.
Jeśli piszesz aplikacje natywne dla chmury, dane telemetryczne są przydatne, gdy:
- Opracowujesz mikrousługi i chcesz wiedzieć, czy działają zgodnie z oczekiwaniami.
- Testujesz aplikację i chcesz wiedzieć, co się stanie, gdy test zakończy się niepowodzeniem.
- Przeprowadzasz przemieszczanie aplikacji i chcesz wiedzieć, jak działają.
- Aplikacja jest obsługiwana w środowisku produkcyjnym i chcesz rozwiązać problem z wyjątkiem lub zoptymalizować wydajność.
Możemy opisać system, który emituje bogatą telemetrię jako:
- Obserwowalny: Obserwowalny system jest taki, który umożliwia zrozumienie jego zachowania spoza niego.
- Instrumentowane: instrumentowany system to taki, który emituje wszystkich deweloperów danych, którzy muszą rozwiązać problem.
OpenTelemetry to struktura i zestaw narzędzi do obserwacji, których można używać w aplikacji do tworzenia, przetwarzania i emitowania danych telemetrycznych. Możesz łatwo dodać ją do dowolnej aplikacji platformy .NET, w tym mikrousług w aplikacji natywnej dla chmury. Emituje ona dane w formularzach, których mogą używać i analizować typowe narzędzia do obserwacji, takie jak Jaeger i Prometheus.
Filary obserwacji
Charakter aplikacji natywnych dla chmury, które składają się z rozproszonych mikrousług korzystających z różnych technologii, może utrudnić tworzenie obserwowalnego i właściwie instrumentowanego kodu. Wszystkie zespoły muszą zintegrować wgląd w mikrousługi. W przeciwnym razie może się okazać, że część aplikacji jest trudna do monitorowania i rozwiązywania problemów.
Ważne
Aby upewnić się, że cała aplikacja jest widoczna, należy upewnić się, że wszystkie zespoły programistyczne uwzględniają trzy filary obserwacji w swoich mikrousługach: rejestrowanie, metryki i śledzenie.
Trzy filary obserwacji to trzy różne typy rekordów, które przechowują zachowanie składników oprogramowania do późniejszej analizy:
- Dziennik: sygnatura czasowa rekordu tekstowego tego, co wydarzyło się podczas przetwarzania żądania.
- Metryka: pomiar usługi przechwyconej w czasie wykonywania. Wartości metryk można agregować do statystyk dotyczących procesu, w tym:
- Statystyki środowiska uruchomieniowego platformy .NET, takie jak użyta pamięć lub liczba operacji odzyskiwania pamięci, które wystąpiły.
- ASP.NET lub statystyki pakietów NuGet, takie jak liczba ukończonych żądań, czas trwania żądań lub liczba błędów.
- Niestandardowe statystyki specyficzne dla aplikacji, takie jak liczba złożonych zamówień.
- Rozproszone śledzenie: rekord wszystkich jednostek pracy, często określanych jako Spans, potrzebny do obsługi pojedynczego żądania. W aplikacji natywnej dla chmury wiele mikrousług i usług tworzenia kopii zapasowych może być zaangażowanych w pojedyncze żądanie, a rozproszony ślad będzie pokazywał wszystkie te usługi podczas współpracy w celu przygotowania odpowiedzi.
Uwaga
W usłudze OpenTelemetry wszystkie dane, które nie są częścią rozproszonego śledzenia lub metryki, są uważane za dziennik, na przykład zdarzenia.
Korzystanie z telemetrii na platformie .NET
Platforma .NET ma wbudowane typy reprezentujące trzy filary:
- ILogger: ten interfejs udostępnia standardowy interfejs, którego można użyć podczas rejestrowania zdarzeń z dowolnego kodu platformy .NET.
- Miernik: możesz użyć tej klasy, aby utworzyć grupę instrumentów, z których każda mierzy wartość skojarzona z wydajnością lub zachowaniem kodu. Możesz na przykład dodać instrument, który zlicza sprzedaż produktu lub inny, który mierzy czas oczekiwania komunikatu w kolejce. Platforma .NET udostępnia również wiele wbudowanych metryk.
- Działanie: tej klasy można użyć do rejestrowania informacji śledzenia. Zacznij od utworzenia
ActivitySource
obiektu dla przestrzeni nazw. Następnie wywołaj metodę ,StartActivity
aby rozpocząć rejestrowanie danych.
Można użyć tych klas w dowolnym kodzie platformy .NET. W następnej lekcji dowiesz się, jak platforma .NET Aspire ułatwia korzystanie z klas OpenTelemetry w aplikacjach natywnych dla chmury.