This site practises what it teaches: observability. Each visit sends a single anonymous beacon with five performance measurements; they are aggregated into histograms in Redis, exposed in Prometheus format on /metrics and viewable in Grafana.
What is measured
No cookie, no stored IP address, no identifier: only the page type (home, course, lesson, article…) and durations. No consent is required for these anonymous measurements.
- LCP (Largest Contentful Paint)
- INP (Interaction to Next Paint)
- CLS (Cumulative Layout Shift)
- FCP (First Contentful Paint)
- TTFB (Time To First Byte)
Current state (75th percentile)
No data yet: browse the site then come back.
Architecture
PerformanceObserver (navigateur) → sendBeacon → /rum.php → Redis (histogrammes) → /metrics → Grafana Alloy → Prometheus / Mimir → Grafana.
How to reproduce it
// Grafana Alloy : scraper les métriques du site
prometheus.scrape "rtm" {
targets = [{"__address__" = "elearning.rousseltm.fr:443"}]
scheme = "https"
metrics_path = "/metrics"
forward_to = [prometheus.remote_write.cloud.receiver]
}
# PromQL : LCP p75 par type de page
histogram_quantile(0.75, sum by (le, page) (rate(rtm_rum_lcp_bucket[1h])))