Synthetic & RUM
Synthetic monitors check availability from outside. RUM (Real User Monitoring) captures actual user experience from browsers and mobile apps.
Synthetic Monitoring
HTTP Monitors
Simple availability checks โ hit a URL, check the response:
What They Check Frequency
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโ
URL returns HTTP 200 Every 1-5 minutes
Response time under threshold From multiple locations
Response body contains expected text 24/7, even when no users
SSL certificate validity Detects outages before users
๐ Try it: Ctrl+K โ "Synthetic" โ Create HTTP monitor โ Enter your website URL โ Select locations โ Save. You'll see availability data within minutes.
Browser Monitors (Clickpaths)
Simulate real user journeys โ login, search, checkout:
- Record a clickpath in the Dynatrace recorder
- Runs on Chromium from selected locations
- Captures screenshots, response times, errors at each step
- Alerts if any step fails or exceeds time threshold
Real User Monitoring (RUM)
RUM captures data from actual users visiting your application:
What RUM Captures How
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Page load times OneAgent injects JavaScript
User actions (clicks, scrolls) Automatic instrumentation
JavaScript errors Captured in real-time
User sessions Tracked across pages
Core Web Vitals (LCP, FID, CLS) Browser performance metrics
Geographic distribution User location from IP
RUM is enabled automatically when OneAgent is installed in full-stack mode and serves web pages.
Querying Synthetic & RUM Data
// Synthetic monitor results
fetch dt.entity.http_check
| fields entity.name, id
// User sessions (if RUM is configured)
fetch user.sessions
| summarize count=count()
// User actions
fetch user.events
| fields timestamp, type, name
| limit 10
Synthetic vs RUM
Synthetic RUM
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Simulated users from fixed locations Real users from everywhere
Runs 24/7 even with zero traffic Only when users visit
Detects outages proactively Shows actual user experience
Consistent baseline for comparison Varies by device, network, location
๐ก Use both: Synthetic for availability SLOs (consistent, 24/7), RUM for user experience insights (real-world performance).
New RUM DQL Patterns
// Core Web Vitals โ LCP P75 timeseries
timeseries LCP = percentile(dt.frontend.web.page.largest_contentful_paint, 75)
// Top clicked elements
fetch user.events
| filter characteristics.has_user_interaction AND in(interaction.name, {"click", "touch"})
| summarize clicks = count(), by:{ui_element.resolved_name}
| sort clicks desc
// Error events
fetch user.events
| filter characteristics.has_error == true
| fields timestamp, page.name, error.message, error.type
| sort timestamp desc
// Most visited pages
fetch user.events
| filter characteristics.has_navigation == true
| summarize sessions = countDistinct(dt.rum.session.id), by:{page.detected_name}
| sort sessions desc
Session Replay Privacy
- All input fields masked by default (privacy-by-default)
- 3 masking levels: mask all, mask user input, allow all
- Per-element control: CSS class
dtrum-maskordtrum-unmask - Permissions:
replay-sessions-with-masking(masked) vsreplay-sessions-without-masking(full)