RousselTMLEARNING

Observabilité

Faro : erreurs JavaScript, logs, événements métier et sessions

Exploiter l'API Faro : capture automatique des erreurs, envoi manuel d'erreurs, logs, événements et mesures métier, identification des sessions et des utilisateurs, et source maps.

1. Les erreurs #

Automatiques et manuelles.

Capture #

Les instrumentations web capturent automatiquement les exceptions non gérées (window.onerror) et les promesses rejetées. Pour une erreur gérée, envoyez-la explicitement :

import { faro } from '@grafana/faro-web-sdk';

try {
  await payer(panier);
} catch (err) {
  faro.api.pushError(err, { context: { etape: 'paiement', montant: String(panier.total) } });
  afficherMessage('Le paiement a échoué');
}

Source maps #

En production, le code est minifié : une pile d'appels pointe vers main.4f3a.js:1:20345. Avec les source maps, la pile est traduite vers le fichier et la ligne d'origine. Alloy peut les télécharger depuis votre site ou les lire sur disque :

faro.receiver "front" {
  sourcemaps {
    download = false
    location {
      path                 = "/var/www/sourcemaps"
      minified_path_prefix = "https://boutique.example.org/assets/"
    }
  }
  // ...
}
Erreur Courante : Ne publiez pas forcément vos source maps sur le site public : elles révèlent le code source. Déposez-les plutôt sur le disque du récepteur.

2. Logs, événements, mesures #

Instrumenter le métier.

API #

// Événement métier (tunnel de conversion)
faro.api.pushEvent('ajout_panier', { produit: 'casque-x', quantite: '1' });

// Mesure personnalisée (valeurs numériques)
faro.api.pushMeasurement({ type: 'panier', values: { articles: 3, total: 129.9 } });

// Log applicatif
faro.api.pushLog(['Filtre appliqué', JSON.stringify(filtres)]);

Les événements permettent de construire des entonnoirs (pages vues → ajout au panier → paiement) et de relier une baisse de conversion à une erreur ou une lenteur.

3. Sessions et utilisateurs #

Avec prudence.

Sessions #

Faro crée un identifiant de session et l'ajoute à tous les signaux : on retrouve tout ce qu'a vécu une session (pages, erreurs, requêtes lentes).

initializeFaro({
  // ...
  sessionTracking: { enabled: true, samplingRate: 0.2 },   // 20 % des sessions
});

// Après connexion : identifiant technique, jamais l'e-mail
faro.api.setUser({ id: 'u-7f3a', attributes: { offre: 'premium' } });
Erreur Courante : N'envoyez ni e-mail, ni nom, ni contenu de formulaire. L'identifiant doit être pseudonyme et la collecte couverte par votre politique de confidentialité (voir la leçon sur l'exploitation).

Articles liés

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…

Grafana Faro : architecture et installation

Installer Grafana Faro : le SDK web (npm ou CDN), le récepteur faro.receiver d'Alloy, l'envoi vers Loki et Te…

Pour aller plus loin