0Pricing
React Academy · Leçon

Corréler les traces du frontend et du backend

Propagez le contexte de trace dans les requêtes fetch afin que les étendues du backend apparaissent dans la même trace que l’action d’interface qui les a déclenchées.

Corréler les traces du frontend et du backend est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Objectif du traçage distribué

L’objectif ultime de l’observabilité de l’interface est d’obtenir une seule trace reliant le clic d’un utilisateur dans React au réseau, aux gestionnaires d’API, aux appels de services, puis à la requête de base de données à l’origine d’une réponse lente. Cette trace de bout en bout rend l’analyse de la cause racine immédiate.

Norme W3C TraceContext

La spécification W3C TraceContext définit le format de l’en-tête traceparent : version-traceId-parentSpanId-flags. Un exemple de valeur est : 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. L’identifiant de trace est partagé dans toute la trace distribuée ; l’identifiant du segment parent change à chaque relais.

Injection automatique des en-têtes

L’instrumentation fetch d’OpenTelemetry injecte automatiquement l’en-tête traceparent dans chaque requête fetch sortante. Cet en-tête contient l’identifiant de trace actuel ainsi que l’identifiant du segment fetch de l’interface, utilisé comme parent, ce qui permet au serveur de créer un segment enfant lié au segment de l’interface.

Poursuite de la trace côté serveur

Sur le serveur, l’instrumentation HTTP d’OpenTelemetry pour Node.js/Express lit l’en-tête traceparent entrant et crée des segments enfants du segment fetch de l’interface. L’identifiant de trace est conservé : Jaeger ou Grafana Tempo affiche ainsi toute la chaîne — segment du navigateur → segment Express → segment de base de données — dans une vue en cascade unique.

Affichage des traces dans Jaeger ou Grafana Tempo

Une fois l’interface et le serveur instrumentés, ouvrez Jaeger ou Grafana Tempo et recherchez un identifiant de trace. Vous verrez la cascade complète : le segment du composant React en haut, le segment fetch en dessous, puis le segment du gestionnaire de route Express et enfin le segment de la requête de base de données — tous accompagnés de leur durée et de leurs attributs.

Corrélation par utilisateur

Définissez user.id comme attribut sur tous les segments de votre application React à l’aide de span.setAttribute('user.id', userId). Faites de même sur le serveur. Vous pouvez alors filtrer votre plateforme d’observabilité pour afficher toutes les traces associées à un identifiant utilisateur donné, ce qui vous permet de diagnostiquer les problèmes signalés par un client précis.

Corrélation par session

Générez un identifiant de session unique lors du chargement de la page et définissez-le comme session.id sur tous les segments de l’interface. Incluez-le dans les en-têtes des requêtes afin que le serveur l’ajoute également à ses segments. La corrélation par session vous permet de reconstituer la séquence complète des actions effectuées par un utilisateur au cours d’une même session.

Liaison des sessions RUM aux traces

Les outils commerciaux comme Datadog intègrent nativement les sessions RUM aux traces APM. Le SDK RUM de Datadog injecte un en-tête spécifique (X-Datadog-Trace-Id) dans les requêtes fetch, et le SDK APM de Datadog sur le serveur le lit pour relier la relecture de la session à la trace distribuée — vous pouvez regarder la relecture de la session tout en consultant la trace.

Les bénéfices de la corrélation

Imaginez qu’un utilisateur se plaigne de la lenteur du paiement. Grâce aux traces corrélées, recherchez user.id dans votre plateforme d’observabilité, trouvez la trace du paiement et constatez immédiatement que le ralentissement vient d’une requête de base de données de 900 ms qui joint deux tables volumineuses — un problème invisible dans les seules métriques de l’interface.

Le collecteur OpenTelemetry comme proxy

Les navigateurs ne peuvent pas envoyer directement des traces à Jaeger ou à d’autres plateformes (restrictions CORS et exposition d’informations d’identification). Exécutez plutôt un collecteur OpenTelemetry comme proxy : configurez OTLPTraceExporter pour envoyer les données à votre point de terminaison du collecteur, qui les répartira ensuite vers Jaeger, Grafana Tempo ou toute autre plateforme.

Considérations relatives à la confidentialité

Les traces de l’interface peuvent capturer par inadvertance des données sensibles : valeurs de champs de formulaire dans les URL, PII dans les attributs de segments et jetons de session dans les en-têtes. Examinez votre instrumentation pour vous assurer qu’aucune donnée sensible n’est incluse dans les attributs de segments. Utilisez span.setAttribute avec parcimonie et assainissez les paramètres de requête des URL avant de les enregistrer.

Format de l’en-tête traceparent

Quel est le format de l’en-tête traceparent de W3C TraceContext ?

Récapitulatif de la leçon

La corrélation des traces de l’interface et du serveur offre une visibilité de bout en bout sur l’ensemble du parcours d’une requête utilisateur. Les en-têtes traceparent de W3C TraceContext relient automatiquement les segments fetch du navigateur aux segments du serveur grâce à l’instrumentation OpenTelemetry. Enrichissez tous les segments avec user.id et session.id pour faciliter le débogage ciblé. Utilisez un collecteur OpenTelemetry comme proxy entre le navigateur et le serveur afin d’éviter les problèmes de CORS et l’exposition d’informations d’identification.

Questions Fréquemment Posées

La leçon « Corréler les traces du frontend et du backend » est-elle gratuite ?

Oui — le texte complet de « Corréler les traces du frontend et du backend » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Corréler les traces du frontend et du backend » ?

Propagez le contexte de trace dans les requêtes fetch afin que les étendues du backend apparaissent dans la même trace que l’action d’interface qui les a déclenchées. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Corréler les traces du frontend et du backend » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Observabilité du frontend : quoi et pourquoi
  2. Traces OpenTelemetry depuis le navigateur
  3. Suivi des utilisateurs réels et indicateurs Web Vitals
  4. Corréler les traces du frontend et du backend
← Retour à React Academy