See the full picture
Step 7. See the full picture
Section titled “Step 7. See the full picture”Reload http://localhost:5173. Click Add twice, Checkout, Call broken API, then Throw error. In the Network tab, POST /v1/replay/chunks on port 4319 answers 202 every few seconds. Switch to another tab for a moment, then wait up to a minute.
Your visit is now one session in ouo11y. Every signal in it carries the same session.id, so rum-api puts them on one line:
0s8s15s23s30s
0s
session.start0s
navigation(entry) -> /1s
GET /api/products2s
web_vitalTTFB, FCP5s
cart.addedCoffee7s
cart.addedTea9s
POST /api/checkout13s
GET /api/fail14s
http.request.failedGET /api/fail 50018s
exceptionError: Button exploded, fatal24s
web_vitalLCP, INP, CLS, when hiddenWhat you should see
Section titled “What you should see”In Grafana, More apps → ouo11y RUM → Sessions, open the newest session:
- the header says
crashed, with 1 crash, 1 failed request and its traces; - the activity list next to the replay has the navigation, the Web Vitals, both
cart.added, the failed request and the exception; - the Replay panel plays what you clicked;
- each trace opens in Tempo, from the browser’s
fetchspan to the API’scharge card.
- tiny-shop-otel-frontend
POST190 ms - tiny-shop-otel-backend
POST /api/checkout158 ms checkout151 msvalidate cart30 mscharge card121 ms
This is the same session the ouo11y SDK would have produced, from code you own. Nothing in your browser bundle is ouo11y code: open frontend/package.json and every dependency is React, OpenTelemetry, rrweb or web-vitals.
Next: what the SDK adds on top.