RousselTMLEARNING

Observabilité

How this site is observed

RousselTM Learning’s real Core Web Vitals, measured with no cookie or personal data.

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])))