Skip to content

feat: Real User Monitoring OpenObserve - #154

Merged
cmer81 merged 1 commit into
mainfrom
feat/openobserve-rum
Oct 28, 2026
Merged

cmer81 merged 1 commit into
mainfrom
feat/openobserve-rum

Conversation

@cmer81

@cmer81 cmer81 commented Oct 28, 2026

Copy link
Copy Markdown
Owner

Contexte

Ajoute le RUM OpenObserve (instance openobserve.cmer.fr, org default, application infoclimat-maps) pour mesurer ce que vivent les utilisateurs : Web Vitals, erreurs, temps de téléchargement des .om et temps d'affichage d'une échéance.

Changements

  • SDK @openobserve/browser-rum@0.4.3 (épinglé) initialisé depuis +layout.svelte (src/lib/rum.ts). Import dynamique : sans client token, rien n'est chargé (dev, CI, forks). Chunk séparé (~173 Ko).
  • Échantillonnage : 10 % des sessions ; replay sur 10 % de ces sessions (taux relatif → 1 % du total). Le replay ne montre que l'UI (la carte WebGL n'est pas capturée), saisies masquées.
  • Ressources réseau activées ; beforeSend jette le fond de carte (tiles.openfreemap.org, tiles.mapterhorn.com). Les .om sont lus dans le thread principal → HEAD/range GET visibles avec durée et statut (pas de détail TTFB/taille : pas de Timing-Allow-Origin sur les buckets).
  • Vital om_frame_load (src/lib/frame-timing.ts, pur et testé) : de la demande de rechargement du raster principal au commit groupé des couches. Contexte kind (initial/change), domain, variable, outcome (ok/error). Une seule mesure en vol (le scrubbing remplace sans rapporter).
  • Erreurs MapLibre (om://, décodage dans les workers) relayées par addError, hors fichiers absents (isMissingFileError, exporté de slot-manager.ts) et AbortError.
  • File d'attente avant l'init : vitals et erreurs émis avant le chargement du SDK (premier affichage) sont rejoués après (50 max).
  • Config : getRumConfig() (runtime-env.ts), VITE_OO_RUM_* au build (Workers Builds), OO_RUM_* au runtime Docker. version = SHA court de WORKERS_CI_COMMIT_SHA (vite.config.ts).
  • Docs : .claude/rules/architecture.md, README.md, .env.example.

Déploiement

  • Origine ajoutée à la liste CORS d'OpenObserve
  • VITE_OO_RUM_CLIENT_TOKEN dans les variables de build Workers Builds
  • Optionnel : VITE_OO_RUM_SESSION_SAMPLE_RATE, VITE_OO_RUM_REPLAY_SAMPLE_RATE, VITE_OO_RUM_ENV

Vérification

  • npm run check, npm run test (895 tests), npm run build OK.
  • Essai navigateur (preview, faux token, 100 %/100 %) : cookie de session posé, page toujours crossOriginIsolated, envois rum et replay vers openobserve.cmer.fr/rum/v1/default/* (refusés en CORS depuis localhost, attendu). Lots inspectés : ressources .om présentes, om_frame_load = 541 ms (initial) et 100 ms (change, voisin préchargé), sans autre erreur console.
  • Après déploiement : vérifier l'arrivée des événements application_id = 'infoclimat-maps' dans _rumdata.

Non inclus

Source maps (Enterprise), bannière de consentement, setUser, proxy d'ingestion via le Worker, logs navigateur.

- SDK @openobserve/browser-rum 0.4.3 (épinglé), chargé à la demande et
  inactif sans client token (dev, CI, forks).
- 10 % des sessions, replay sur 10 % de celles-ci, ressources réseau
  (sauf fond de carte), long tasks, interactions.
- Vital om_frame_load : temps d'affichage d'une échéance (demande du
  raster principal → commit groupé), contexte domaine/variable/issue.
- Erreurs MapLibre (om://, workers) relayées par addError, hors 404 et
  AbortError ; appels antérieurs à l'init mis en file puis rejoués.
- Config VITE_OO_RUM_* (Workers Builds) / OO_RUM_* (Docker).
@cmer81
cmer81 merged commit eb1b416 into main Oct 28, 2026
3 checks passed
@cmer81
cmer81 deleted the feat/openobserve-rum branch October 28, 2026 10:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant