Co to jest obserwowanie?
Zanim przejdziesz do kodu, zróbmy krok wstecz i porozmawiajmy o możliwościach obserwacji. Musisz mieć narzędzia, które ułatwiają zrozumienie wewnętrznego stanu systemu na podstawie tego, co jest widoczne zewnętrznie.
Dlaczego warto zaimplementować możliwość obserwacji?
Istnieje kilka powodów, dla których obserwowanie jest kluczowym aspektem tworzenia i ulepszania aplikacji natywnych dla chmury:
- Zrozumienie zachowania systemu: możliwość obserwacji zapewnia wgląd w wydajność aplikacji i miejsce wystąpienia wąskich gardeł lub błędów.
- Debugowanie i rozwiązywanie problemów: gdy wystąpią problemy, narzędzia do obserwacji mogą udostępniać szczegółowe informacje o tym, co działo się w systemie w momencie wystąpienia problemu.
- Ciągłe ulepszanie: Obserwacja nie jest tylko do identyfikowania i rozwiązywania problemów — jest również używana do ciągłego ulepszania. Monitorując wydajność systemu w czasie, można zidentyfikować możliwości optymalizacji kodu, poprawy wydajności systemu i ilościowego ulepszania środowiska dla użytkowników.
- Proaktywne wykrywanie problemów: dzięki odpowiednim narzędziom do obserwacji można często wykrywać problemy, zanim użytkownicy zobaczą je nawet.
Implementowanie możliwości obserwacji w aplikacjach natywnych dla chmury nie jest tylko najlepszym rozwiązaniem, jest to konieczność utrzymywania, optymalizowania i ciągłego ulepszania aplikacji. Umożliwia deweloperom dostarczanie niezawodnych, wydajnych aplikacji i zapewnia szczegółowe informacje potrzebne do świadomego podejmowania decyzji.
Trzy filary obserwacji
Istnieją trzy główne filary obserwacji:
- Dzienniki: dzienniki zawierają szczegółowe rekordy zdarzeń występujących w aplikacji lub systemie. W aplikacji można używać
Microsoft.Extensions.Logging
infrastruktury do rejestrowania zdarzeń. - Metryki: Metryki odnoszą się do pomiarów liczbowych i liczników, które zapewniają wgląd w wydajność i kondycję systemu. Przykłady obejmują współczynniki żądań, czasy odpowiedzi, użycie procesora CPU/pamięci i współczynniki błędów. W aplikacji mogą istnieć konkretne pomiary, które należy śledzić.
- Śledzenie rozproszone: ten proces obejmuje śledzenie żądania podczas propagacji wszystkich mikrousług w aplikacji natywnej dla chmury. Każda usługa rejestruje dane śledzenia, takie jak identyfikatory żądań, które umożliwiają korelowanie zdarzeń między usługami. Śledzenie rozproszone jest również przydatne w przypadku debugowania problemów z wydajnością i błędów w złożonych systemach.
Razem te trzy filary zapewniają kompleksową obserwację systemu.
Źródła danych telemetrycznych
W aplikacji natywnej dla chmury firmy istnieje kilka źródeł danych telemetrycznych, które można zebrać:
- Dzienniki aplikacji: aplikacje generują dzienniki, które zawierają szczegółowe informacje o jego operacji i błędach, jeśli wystąpią. Rejestrowanie to bogate źródło danych telemetrycznych.
- Bazy danych: Bazy danych mogą udostępniać dane telemetryczne dotyczące zapytań, które przetwarzają, czas wykonywania i wszelkie występujące błędy.
- Żądania i odpowiedzi HTTP: żądania HTTP i odpowiedzi między mikrousługami zapewniają zaawansowane i cenne dane telemetryczne. Te dane obejmują nagłówki żądania i odpowiedzi, zawartość treści, kody stanu i informacje o chronometrażu.
- Dane wydajności po stronie klienta: w aplikacjach natywnych dla chmury z frontonem można zbierać dane wydajności po stronie klienta. Te dane mogą obejmować trafienia strony, czasy ładowania i czasy interakcji interfejsu użytkownika.
- Metryki infrastruktury: jeśli aplikacja jest hostowana w środowisku chmury, możesz zbierać metryki infrastruktury, takie jak użycie procesora CPU, użycie pamięci, ruch sieciowy i operacje we/wy dysku.
Zbierając i analizując te dane telemetryczne, możesz uzyskać cenny wgląd w wydajność i kondycję aplikacji.
Implementowanie możliwości obserwacji
Aby dodać wgląd w aplikację natywną dla chmury, wykonaj następujące kroki:
- Dodaj rejestrowanie.
- Włącz metryki i zdefiniuj metryki niestandardowe do przechwytywania.
- Włącz śledzenie rozproszone za pomocą technologii OpenTelemetry i Zipkin.
- Ponownie instrumentuj aplikację za pomocą funkcji OpenTelemetry i dodając dane telemetryczne do kodu.
- Przeanalizuj dane telemetryczne przy użyciu rozwiązania Prometheus, Grafana lub application Szczegółowe informacje.
Wprowadzenie do platformy OpenTelemetry
W jaki sposób funkcja OpenTelemetry pomaga w dodawaniu wglądu w aplikację i dlaczego istnieje tak głęboka obsługa tej funkcji na platformie .NET? OpenTelemetry to platforma do obserwacji typu open source. Zapewnia on standardowy, niezależny od dostawcy sposób generowania danych telemetrycznych.
OpenTelemetry standandaryzuje sposób zbierania i przesyłania danych telemetrycznych na platformy zaplecza. Zapewnia ona luki w widoczności, zapewniając wspólny format instrumentacji we wszystkich mikrousługach. Nie musisz ponownie wprowadzać kodu ani instalować różnych zastrzeżonych agentów za każdym razem, gdy zmienia się platforma zaplecza.
Ponieważ jest to otwarty standard, obsługuje wiele innych narzędzi poza platformą .NET. Funkcja OpenTelemetry jest skonfigurowana do używania rozszerzeń, które umożliwiają eksporterom tworzenie danych telemetrycznych we wszystkich różnych narzędziach. Oznacza to, że można używać tych samych narzędzi do monitorowania mikrousług niezależnie od języka, w którym zostały napisane.
Funkcja OpenTelemetry pomaga zbierać i monitorować wszystkie trzy filary obserwacji: dzienniki, metryki i ślady. W poniższych lekcjach zobaczysz, jak wykonywać te zadania.