RousselTMLEARNING

Observabilité

Du clic à la base de données : traces front-end vers back-end avec Faro

Relier les requêtes du navigateur aux traces du back-end : TracingInstrumentation, propagation de l'en-tête traceparent, CORS, et navigation dans Grafana de la session au span SQL.

1. Le principe #

Le navigateur commence la trace.

Propagation #

Trace de bout en bout
Le même trace_id relie le span du navigateur et ceux du back-end.

TracingInstrumentation crée un span pour chaque requête fetch ou XMLHttpRequest et ajoute l'en-tête W3C traceparent. Si le back-end est instrumenté avec OpenTelemetry (SDK ou Beyla), il continue la même trace.

2. Configurer #

SDK, CORS et back-end.

Côté navigateur #

new TracingInstrumentation({
  instrumentationOptions: {
    // En-tête ajouté aussi pour ces domaines (sinon seulement pour l'origine de la page)
    propagateTraceHeaderCorsUrls: [/https:\/\/api\.example\.org\/.*/],
  },
})

Côté API #

Pour une API sur un autre domaine, le navigateur envoie une requête préliminaire CORS : l'API doit autoriser l'en-tête traceparent.

# nginx devant l'API
add_header Access-Control-Allow-Origin "https://boutique.example.org" always;
add_header Access-Control-Allow-Headers "content-type, traceparent, tracestate" always;
Erreur Courante : Si l'en-tête n'est pas autorisé, le navigateur bloque la requête : déployez la configuration CORS côté API avant d'activer la propagation côté front.

3. Naviguer dans Grafana #

De la lenteur ressentie à la requête SQL.

Parcours #

  1. Un LCP dégradé sur la page panier (requête Loki sur les mesures).
  2. Les requêtes fetch lentes de cette page (traces Tempo avec service.name du front).
  3. La trace complète : le span du navigateur, l'API, puis une requête SQL de 1,8 s.
  4. Le profil CPU du service API pendant ce span (voir la formation Pyroscope).
{ resource.service.name = "boutique" && span.http.url =~ ".*/api/panier.*" && duration > 1s }

Articles liés

Tunnels de conversion en RUM : mesurer où les utilisateurs abandonnent

Construire et lire un tunnel de conversion (funnel) avec les données RUM : étapes, taux, ordre, pièges, et mi…

Monitoring de site web : disponibilité, surveillance HTTPS, certificats et performances

Mettre en place le monitoring d'un site web : surveillance de la disponibilité et du HTTPS, expiration des ce…

Real User Monitoring (RUM) et Core Web Vitals : mesurer ce que vivent les utilisateurs

Pourquoi observer le front-end, ce que mesure le RUM, les Core Web Vitals (LCP, INP, CLS) et leurs seuils, et…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !