Obserwacja i rozproszona śledztwa: pełne przewodniki
Co to jest Obserwacja?
Obserwacja – to zdolność systemu do dostarczania informacji o swoim stanie wewnętrznym na podstawie zewnętrznych wyjść. Jest oparta na trzech pilarsach: metrykach, logach i śladach.
Śledzenie za pomocą OpenTelemetry
Kod demonstruje podstawowe śledzenie przy użyciu biblioteki OpenTelemetry. Pozwala to na śledzenie żądań, gdy przepływają przez Twoje usługi.
`const { trace } = require('@opentelemetry/api');` inicjuje interfejs do śledzenia, a `trace.getTracer('my-service')` tworzy tracera dla Twojej aplikacji.
Eksport śladów za pomocą Zipkin
Kod używa eksportera Zipkin do wysyłania śladów do usługi Zipkin, która zwykle działa na `http://localhost:9411/api/v2/spans`. Dopuszcza to visualizację i analizę rozproszonych żądań.
`const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin');` importuje eksporter, a kod tworzy nowy wystąpienie skonfigurowane do wysyłania śladów do podanego adresu URL.
Strategie próbkowania
Aby uniknąć nadmiernego obciążenia systemów danymi śladu, stosuje się technikę próbkowania. Ta technika wybiera podzbior requests do pełnego śledzenia.
Przystosowalne próbkowanie dynamicznie dostosowuje stopień próbkowania w zależności od obciążenia systemu, zapewniając jednocześnie, że krytyczne śledzenia są zawsze zbierane, a nadmierna obciążona operacja jest minimalizowana podczas okresów niskiego obciążenia.
Często zadawane pytania
Czym jest adaptatywny próbkowanie?
Adaptatywne próbkowanie dynamicznie dostosowuje ilość próbek w oparciu o obciążenie systemu, co zapewnia zawsze pobieranie kluczowych śladów, jednocześnie minimalizując nakład operacyjny podczas okresów niskiego obciążenia.
Czym jest TraceIdRatioBasedSampler?
TraceIdRatioBasedSampler to strategia próbkowania w OpenTelemetry, która dostosowuje ilość próbek w oparciu o proporcję aktywnych identyfikatorów śladów, co umożliwia inteligentne zarządzanie zbieraniem danych śladu.
Co robi `const sampler = new TraceIdRatioBasedSampler(0.1);`?
Ta linia tworzy instancję TraceIdRatioBasedSampler z ilością próbek równą 10%. Oznacza to, że 10% wszystkich identyfikatorów śladów zostanie pełnozbiorczo pobrane, podczas gdy pozostałe 90% zostaną odrzucone.
Czym jest `const sdk = new NodeSDK({`?
Ta linia tworzy nową instancję NodeSDK, która stanowi jądro OpenTelemetry SDK. Obiekt konfiguracyjny w nawiasach klamrowych pozwala dostosować różne aspekty zachowania SDK.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Hash Function Avalanche Visualizer i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Hash Function Avalanche Visualizer