Ślady OpenTelemetry z przeglądarki
Skonfigurują Państwo SDK OTel dla JavaScriptu w React, utworzą spany dla interakcji użytkownika i wyeksportują je do kolektora backendowego.
Ślady OpenTelemetry z przeglądarki to bezpłatna lekcja React Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
SDK JavaScript OpenTelemetry
SDK JavaScript OpenTelemetry dla przeglądarek składa się z kilku pakietów: @opentelemetry/sdk-trace-web udostępnia podstawową implementację śledzenia, @opentelemetry/instrumentation-fetch automatycznie tworzy spany dla wszystkich wywołań Fetch API, a @opentelemetry/exporter-trace-otlp-http wysyła spany do kolektora.
TracerProvider: podstawa śledzenia OTel
TracerProvider jest centralnym obiektem konfiguracyjnym w OpenTelemetry. Przechowuje listę SpanProcessors (określających, co dzieje się z ukończonymi spanami), zasób opisujący aplikację (nazwę usługi i wersję) oraz konfigurację próbkowania.
BatchSpanProcessor: wydajny eksport
BatchSpanProcessor gromadzi ukończone spany w pamięci i eksportuje je partiami zamiast wysyłać każdy span osobno. Znacznie zmniejsza to liczbę żądań HTTP do kolektora, poprawiając wydajność przeglądarki i zmniejszając obciążenie punktu końcowego kolektora OTel.
OTLPTraceExporter: wysyłanie do kolektora
OTLPTraceExporter wysyła spany zebrane w partiach do kolektora zgodnego z OpenTelemetry za pośrednictwem HTTP w formacie JSON lub protobuf. Należy skonfigurować adres URL kolektora (np. punkt końcowy proxy OTel Collector), a eksporter automatycznie obsłuży serializację i logikę ponawiania prób.
Czym jest span
Span reprezentuje pojedynczą jednostkę pracy w ramach śladu: zamontowanie komponentu, wywołanie API lub interakcję użytkownika. Spany mają nazwę, czas rozpoczęcia, czas zakończenia, status (OK lub ERROR) oraz zestaw atrybutów klucz-wartość. Powiązane spany są łączone wspólnym identyfikatorem śladu i relacjami nadrzędny-podrzędny.
Ręczne rozpoczynanie i kończenie spanów
Należy utworzyć tracer za pomocą provider.getTracer('react-app') i rozpocząć spany za pomocą tracer.startSpan('component-mount'). Po zakończeniu pracy należy wywołać span.end(), aby zapisać czas zakończenia. Spany należy zawsze kończyć — pozostawione spany marnują pamięć i generują niekompletne dane w backendzie obserwowalności.
Dodawanie atrybutów do spanów
Atrybuty wzbogacają spany o dane kontekstowe: span.setAttribute('user.id', userId) lub span.setAttribute('route', location.pathname). Atrybuty można przeszukiwać w backendzie obserwowalności, co umożliwia wykonywanie zapytań takich jak „pokaż wszystkie wolne spany użytkownika 42” lub „pokaż wszystkie błędy na trasie /checkout”.
Automatyczna instrumentacja fetch
@opentelemetry/instrumentation-fetch zastępuje globalną funkcję fetch za pomocą monkey patchingu, aby automatycznie tworzyć spany dla każdego wychodzącego żądania HTTP. Span rejestruje URL, metodę, kod statusu HTTP i czas trwania bez konieczności wprowadzania zmian w istniejących wywołaniach fetch.
Propagacja kontekstu za pomocą W3C TraceContext
Gdy instrumentacja fetch tworzy span dla wychodzącego żądania, wstrzykuje do żądania nagłówek traceparent standardu W3C TraceContext. Backend odbierający żądanie odczytuje ten nagłówek i kontynuuje ten sam trace, tworząc połączony trace obejmujący przeglądarkę i serwer.
Inicjalizacja OTel w aplikacji React
Inicjalizacja OTel musi nastąpić przed zamontowaniem jakichkolwiek komponentów — zwykle w pliku wejściowym aplikacji (main.tsx), przed wywołaniem ReactDOM.createRoot. Należy utworzyć providera, zarejestrować procesory i eksportery oraz wywołać provider.register(), aby ustanowić go globalnym TracerProvider.
Próbkowanie: kontrolowanie liczby trace
Rejestrowanie każdej interakcji użytkownika w aplikacjach o dużym ruchu generuje ogromną ilość danych trace. Aby zmniejszyć ich ilość, należy skonfigurować sampler TraceIdRatioBased (np. próbkować 10% trace) w TracerProvider. Należy zawsze próbkować 100% trace zawierających błędy, używając samplera ParentBased, aby mieć pewność, że żaden błąd nie zostanie pominięty.
Rola OTel BatchSpanProcessor
Dlaczego w aplikacjach przeglądarkowych używa się BatchSpanProcessor zamiast SimpleSpanProcessor?
Podsumowanie lekcji
OpenTelemetry JavaScript SDK instrumentuje przeglądarki za pomocą TracerProvider, BatchSpanProcessor i OTLPTraceExporter. Spany reprezentują jednostki pracy wzbogacone o atrybuty. Instrumentacja fetch automatycznie tworzy spany dla wywołań API i wstrzykuje nagłówki W3C TraceContext, umożliwiając rozproszone śledzenie od początku do końca. Należy inicjalizować OTel odpowiednio wcześnie, właściwie dobierać próbkowanie i zawsze kończyć spany, aby zachować uporządkowane dane trace.
Często zadawane pytania
Czy lekcja „Ślady OpenTelemetry z przeglądarki” jest bezpłatna?
Tak — pełny tekst „Ślady OpenTelemetry z przeglądarki” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Ślady OpenTelemetry z przeglądarki”?
Skonfigurują Państwo SDK OTel dla JavaScriptu w React, utworzą spany dla interakcji użytkownika i wyeksportują je do kolektora backendowego. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Ślady OpenTelemetry z przeglądarki”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Obserwowalność frontendu: co to jest i dlaczego jest ważna
- Ślady OpenTelemetry z przeglądarki
- Monitorowanie rzeczywistych użytkowników i Web Vitals
- Korelowanie śladów frontendu i backendu