React Academy · Oppitunti

Käyttöliittymän ja taustan tracejen yhdistäminen

Välitä tracen konteksti fetch-pyyntöjen mukana, jotta taustajärjestelmän span-arvot näkyvät samassa tracessa käynnistävän käyttöliittymätoiminnon kanssa.

Oppitunti 4/413 vaihetta

Käyttöliittymän ja taustan tracejen yhdistäminen on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

Hajautetun tracen tavoite

Frontendin observabilityn perimmäinen tavoite on yksittäinen trace, joka yhdistää käyttäjän Reactissa tekemän napsautuksen verkon, API-käsittelijöiden ja palvelukutsujen kautta aina hitauden aiheuttaneeseen tietokantakyselyyn asti. Tämä päästä päähän ulottuva trace tekee juurisyyanalyysistä välitöntä.

W3C TraceContext -standardi

W3C TraceContext -määritys määrittelee traceparent-otsakkeen muodon: version-traceId-parentSpanId-flags. Esimerkkiarvo on: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. Trace ID jaetaan koko hajautetun tracen kesken, kun taas parent span ID vaihtuu jokaisessa siirtymässä.

Otsakkeen automaattinen lisääminen

OTel:n fetch-instrumentointi lisää traceparent-otsakkeen automaattisesti jokaiseen lähtevään fetch-pyyntöön. Otsake sisältää nykyisen trace ID:n sekä frontendin fetch-spanin span ID:n parentina, minkä ansiosta backend voi luoda frontend-spaniin linkitetyn lapsispanin.

Backend-tracen jatkaminen

Palvelimella Node.js/Expressin OTel HTTP -instrumentointi lukee saapuvan traceparent-otsakkeen ja luo spanit frontendin fetch-spanin lapsiksi. Trace ID säilyy samana, joten Jaeger tai Grafana Tempo näyttää koko ketjun — selaimen spanin → Express-spanin → tietokantapanin — yhdessä waterfall-näkymässä.

Tracejen tarkastelu Jaegerissa tai Grafana Tempossa

Kun sekä frontend että backend on instrumentoitu, avaa Jaeger tai Grafana Tempo ja hae trace ID:n perusteella. Näet koko waterfallin: ylimpänä React-komponentin spanin, sen alapuolella fetch-spanin, sitten Express-reititinkäsittelijän spanin ja lopuksi tietokantakyselyn spanin — kaikilla omat kestonsa ja attribuuttinsa.

Korrelointi käyttäjän perusteella

Aseta user.id attribuutiksi kaikkiin React-sovelluksen span-objekteihin käyttämällä span.setAttribute('user.id', userId). Tee sama backendissä. Nyt voit suodattaa observability-backendissäsi kaikki tietyn käyttäjän ID:n tracet, mikä auttaa tietyn asiakkaan ilmoittamien ongelmien diagnosoinnissa.

Korrelointi istunnon perusteella

Luo sivun latautuessa yksilöllinen istunto-ID ja aseta se kaikkien frontend-spanien session.id-attribuutiksi. Sisällytä se pyyntöjen otsakkeisiin, jotta backend lisää sen myös backend-spanien attribuutiksi. Istunnon perusteella tehtävän korreloinnin avulla voit muodostaa uudelleen kaikki käyttäjän yhden istunnon aikana tekemät toimet.

RUM-istuntojen yhdistäminen traceihin

Kaupalliset työkalut, kuten Datadog, integroivat RUM-istunnot APM-traceihin natiivisti. Datadog RUM SDK lisää fetch-pyyntöihin tietyn otsakkeen (X-Datadog-Trace-Id), ja backendin Datadog APM SDK lukee sen yhdistääkseen RUM-istunnon toiston hajautettuun traceen — voit tarkastella istunnon toistoa ja tracea samanaikaisesti.

Korreloinnin hyödyt

Oletetaan, että käyttäjä ilmoittaa kassatoiminnon olevan hidas. Korreloitujen tracejen avulla haet observability-backendistä user.id:n perusteella kassatoiminnon tracen ja näet heti, että hidastumisen aiheutti 900 millisekunnin tietokantakysely, joka yhdisti kaksi suurta taulua — asia, jota frontend-metriikat eivät yksin paljasta.

OpenTelemetry Collector välityspalvelimena

Selaimet eivät voi lähettää traceja suoraan Jaegeriin tai muihin backendeihin CORS-rajoitusten ja tunnistetietojen paljastumisen vuoksi. Suorita sen sijaan OTel Collector välityspalvelimena: määritä OTLPTraceExporter lähettämään tiedot Collector-päätepisteeseesi, joka välittää ne edelleen Jaegeriin, Grafana Tempoon tai mihin tahansa muuhun backendiin.

Tietosuojaan liittyvät näkökohdat

Frontend-tracet voivat vahingossa kerätä arkaluonteisia tietoja: lomakekenttien arvoja URL-osoitteissa, henkilötietoja span-attribuuteissa ja istuntotunnuksia otsakkeissa. Tarkista instrumentointisi varmistaaksesi, ettei span-attribuutteihin sisälly arkaluonteisia tietoja. Käytä span.setAttributea harkiten ja puhdista URL-kyselyparametrit ennen niiden tallentamista.

traceparent-otsakkeen muoto

Millainen on W3C TraceContextin traceparent-otsakkeen muoto?

Oppitunnin yhteenveto

Frontend- ja backend-tracejen korrelointi tarjoaa näkyvyyden käyttäjän koko pyyntöpolkuun päästä päähän. W3C TraceContextin traceparent-otsakkeet yhdistävät selaimen fetch-spanit backend-spanien kanssa automaattisesti OTel-instrumentoinnin avulla. Rikasta kaikki spanit user.id- ja session.id-attribuuteilla kohdennettua vianmääritystä varten. Käytä OTel Collectoria selaimen ja backendin välisenä välityspalvelimena CORS-ongelmien ja tunnistetietojen paljastumisen välttämiseksi.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Käyttöliittymän ja taustan tracejen yhdistäminen” ilmainen?

Kyllä – oppitunnin ”Käyttöliittymän ja taustan tracejen yhdistäminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Käyttöliittymän ja taustan tracejen yhdistäminen”?

Välitä tracen konteksti fetch-pyyntöjen mukana, jotta taustajärjestelmän span-arvot näkyvät samassa tracessa käynnistävän käyttöliittymätoiminnon kanssa. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Käyttöliittymän ja taustan tracejen yhdistäminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Käyttöliittymän observability: mitä ja miksi
  2. OpenTelemetry-tracet selaimesta
  3. Todellisten käyttäjien seuranta ja Web Vitals
  4. Käyttöliittymän ja taustan tracejen yhdistäminen
← Takaisin: React Academy