0Pricing
React Academy · Lekcja

Korelowanie śladów frontendu i backendu

Przekażą Państwo kontekst śladu w żądaniach fetch, aby spany backendu pojawiały się w tym samym śladzie co wywołująca je akcja interfejsu.

Korelowanie śladów frontendu i backendu to bezpłatna lekcja React Academy na CoddyKit. To lekcja 4 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.

Cel rozproszonego trace

Ostatecznym celem obserwowalności frontendu jest pojedynczy trace łączący kliknięcie użytkownika w React z siecią, handlerami API, wywołaniami usług oraz zapytaniem do bazy danych, które spowodowało wolną odpowiedź. Taki trace od początku do końca umożliwia natychmiastową analizę przyczyny źródłowej.

Standard W3C TraceContext

Specyfikacja W3C TraceContext definiuje format nagłówka traceparent: version-traceId-parentSpanId-flags. Przykładowa wartość wygląda tak: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. Identyfikator trace jest współdzielony w całym rozproszonym trace, natomiast identyfikator parent span zmienia się na każdym etapie.

Automatyczne wstrzykiwanie nagłówka

Instrumentacja fetch w OTel automatycznie wstrzykuje nagłówek traceparent do każdego wychodzącego żądania fetch. Nagłówek zawiera bieżący identyfikator trace oraz identyfikator spanu frontendowego fetch jako parent, dzięki czemu backend może utworzyć span podrzędny powiązany ze spanem frontendu.

Kontynuowanie trace po stronie backendu

Po stronie serwera instrumentacja HTTP OTel dla Node.js/Express odczytuje przychodzący nagłówek traceparent i tworzy spany podrzędne wobec frontendowego spanu fetch. Identyfikator trace zostaje zachowany, więc Jaeger lub Grafana Tempo pokazuje cały łańcuch — span przeglądarki → span Express → span bazy danych — w jednym widoku waterfall.

Wyświetlanie trace w Jaeger lub Grafana Tempo

Po zinstrumentowaniu frontendu i backendu należy otworzyć Jaeger lub Grafana Tempo i wyszukać identyfikator trace. Zobaczą Państwo pełny widok waterfall: na górze span komponentu React, pod nim span fetch, następnie span handlera trasy Express, a na końcu span zapytania do bazy danych — wszystkie wraz z czasami trwania i atrybutami.

Korelacja według użytkownika

Należy ustawić user.id jako atrybut wszystkich spanów w aplikacji React za pomocą span.setAttribute('user.id', userId). To samo należy zrobić po stronie backendu. Dzięki temu można filtrować backend obserwowalności, aby wyświetlić wszystkie trace dla konkretnego identyfikatora użytkownika i diagnozować problemy zgłoszone przez określonego klienta.

Korelacja według sesji

Przy ładowaniu strony należy wygenerować unikatowy identyfikator sesji i ustawić go jako session.id we wszystkich spanach frontendu. Należy dołączać go do nagłówków żądań, aby backend również dodawał go do swoich spanów. Korelacja sesji pozwala odtworzyć pełną sekwencję działań użytkownika wykonanych w ramach jednej sesji.

Łączenie sesji RUM z trace

Narzędzia komercyjne, takie jak Datadog, natywnie integrują sesje RUM z trace APM. Datadog RUM SDK wstrzykuje do żądań fetch określony nagłówek (X-Datadog-Trace-Id), a Datadog APM SDK po stronie backendu odczytuje go, aby połączyć nagranie sesji RUM z rozproszonym trace — można jednocześnie oglądać nagranie sesji i trace.

Korzyści z korelacji

Załóżmy, że użytkownik zgłasza, iż realizacja zakupu trwa zbyt długo. Dzięki skorelowanym trace można wyszukać user.id w backendzie obserwowalności, znaleźć trace realizacji zakupu i od razu zobaczyć, że przyczyną spowolnienia było trwające 900 ms zapytanie do bazy danych, łączące dwie duże tabele — coś, czego same metryki frontendu nie pozwoliłyby wykryć.

OpenTelemetry Collector jako proxy

Przeglądarki nie mogą wysyłać trace bezpośrednio do Jaeger ani innych backendów (ze względu na ograniczenia CORS i ryzyko ujawnienia danych uwierzytelniających). Zamiast tego należy uruchomić OTel Collector jako proxy: skonfigurować OTLPTraceExporter tak, aby wysyłał dane do endpointu Collectora, który następnie przekazuje je do Jaeger, Grafana Tempo lub dowolnego innego backendu.

Kwestie prywatności

Trace frontendu mogą przypadkowo przechwytywać dane wrażliwe: wartości pól formularzy w adresach URL, dane osobowe w atrybutach spanów czy tokeny sesji w nagłówkach. Należy sprawdzić instrumentację, aby upewnić się, że atrybuty spanów nie zawierają danych wrażliwych. Z span.setAttribute należy korzystać oszczędnie, a przed zapisaniem parametrów zapytania URL należy je oczyścić.

Format nagłówka traceparent

Jaki jest format nagłówka traceparent standardu W3C TraceContext?

Podsumowanie lekcji

Korelacja trace frontendu i backendu zapewnia widoczność od początku do końca pełnej drogi żądania użytkownika. Nagłówki traceparent standardu W3C TraceContext automatycznie łączą spany fetch przeglądarki ze spanami backendu dzięki instrumentacji OTel. Należy wzbogacać wszystkie spany o user.id i session.id, aby ułatwić ukierunkowane debugowanie. OTel Collector należy wykorzystywać jako proxy między przeglądarką a backendem, aby uniknąć problemów z CORS i ujawniania danych uwierzytelniających.

Często zadawane pytania

Czy lekcja „Korelowanie śladów frontendu i backendu” jest bezpłatna?

Tak — pełny tekst „Korelowanie śladów frontendu i backendu” 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 „Korelowanie śladów frontendu i backendu”?

Przekażą Państwo kontekst śladu w żądaniach fetch, aby spany backendu pojawiały się w tym samym śladzie co wywołująca je akcja interfejsu. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Korelowanie śladów frontendu i backendu”?

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

  1. Obserwowalność frontendu: co to jest i dlaczego jest ważna
  2. Ślady OpenTelemetry z przeglądarki
  3. Monitorowanie rzeczywistych użytkowników i Web Vitals
  4. Korelowanie śladów frontendu i backendu
← Powrót do React Academy