Home›Monitoring›Synthetic Monitoring

Synthetic Monitoring: Proactive Performance Testing from Global Locations

Aisha PatelSeptember 20, 202613 min read

Synthetic monitoring uses scripted, automated checks executed from controlled locations around the world to continuously validate that your application is available, functional, and performant — before real users encounter a problem. Unlike Real User Monitoring (RUM) which passively observes actual traffic, synthetic monitoring actively probes your system on a schedule, providing consistent baselines and immediate detection of outages or degradations.

This guide covers the types of synthetic checks, how to design multi-step transaction monitors, global checkpoint strategy, SLA validation, and how synthetic data complements Core Web Vitals and APM telemetry.

Synthetic vs. Real User Monitoring

Synthetic and RUM serve different purposes and work best together. Understanding their strengths clarifies when to use each.

Synthetic Monitoring ✓ Controlled, consistent baselines ✓ Detects outages with zero traffic ✓ Tests from specific global locations ✓ Validates SLAs contractually ✓ Runs during maintenance windows ✗ Cannot capture real user diversity ✗ Limited browser/device coverage Real User Monitoring ✓ Real devices, networks, browsers ✓ True user experience metrics ✓ Captures long-tail edge cases ✓ Correlates with business metrics ✓ Measures actual user journeys ✗ Requires traffic to detect issues ✗ Variable, noisy baselines Best Practice: Use Both Together

The key insight: Synthetic monitoring tells you whether your application can perform well. RUM tells you whether it does perform well for actual users. A synthetic check from Tokyo may report 200ms TTFB, but RUM data from Tokyo users on 3G connections will show a very different reality. Together, they distinguish between server-side problems and client-side conditions.

Types of Synthetic Checks

1. Uptime / Availability Checks

The simplest form of synthetic monitoring. An HTTP request is sent to an endpoint, and the response is validated for status code, response time, and optionally body content. These run at high frequency (every 30-60 seconds) from multiple locations to detect outages within minutes.

# Simple availability check configuration
check:
  name: "API Health Check"
  type: http
  url: https://api.example.com/health
  method: GET
  frequency: 30s
  locations:
    - us-east-1
    - eu-west-1
    - ap-southeast-1
  assertions:
    - type: status_code
      operator: equals
      value: 200
    - type: response_time
      operator: less_than
      value: 2000  # ms
    - type: body
      operator: contains
      value: '"status":"healthy"'
  alerting:
    failure_threshold: 2  # alert after 2 consecutive failures
    channels: [pagerduty, slack-ops]

2. API Endpoint Checks

More sophisticated than simple uptime checks, API monitors validate functional behavior — correct response structure, data accuracy, authentication flows, and error handling. They test multiple endpoints in sequence, passing data between requests (e.g., create a resource, verify it exists, delete it).

3. Browser-Based Checks

Full browser synthetic checks use headless Chrome or Firefox to load pages, render content, and interact with the DOM. They measure LCP, CLS, and other Core Web Vitals from controlled environments, providing stable performance baselines free from user-device variance.

# Playwright-based browser check
# Measures page load performance and validates content
from playwright.sync_api import sync_playwright

def run_check():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        context = browser.new_context(
            viewport={"width": 1920, "height": 1080},
            user_agent="SyntheticMonitor/1.0"
        )
        page = context.new_page()

        # Capture performance metrics
        page.goto("https://example.com/dashboard",
                   wait_until="networkidle")

        metrics = page.evaluate("""() => {
            const nav = performance.getEntriesByType('navigation')[0];
            const paint = performance.getEntriesByType('paint');
            const lcp = new Promise(resolve => {
                new PerformanceObserver(list => {
                    resolve(list.getEntries().pop().startTime);
                }).observe({type: 'largest-contentful-paint',
                            buffered: true});
            });
            return {
                ttfb: nav.responseStart - nav.requestStart,
                dom_interactive: nav.domInteractive,
                dom_complete: nav.domComplete,
                fcp: paint.find(e =>
                    e.name === 'first-contentful-paint')?.startTime,
            };
        }""")

        # Validate content
        assert page.title() == "Dashboard - MyApp"
        assert page.locator(".dashboard-widget").count() >= 4

        browser.close()
        return metrics

4. Multi-Step Transaction Checks

The most valuable and complex synthetic checks simulate entire user workflows: login, search for a product, add to cart, proceed to checkout, complete payment. These catch integration issues that single-endpoint checks miss — a working login page and a working checkout page do not guarantee a working login-to-checkout flow.

Designing Effective Multi-Step Checks

Multi-step transaction monitors should follow these principles:

Global Checkpoint Strategy

The locations from which you run synthetic checks determine what performance your users experience from different regions. A strategic checkpoint distribution validates that your infrastructure — CDN, edge nodes, regional deployments — delivers acceptable performance worldwide.

RegionSuggested CheckpointsWhat They Validate
North AmericaUS East (Virginia), US West (Oregon), Canada (Montreal)Primary CDN PoPs, origin server performance, cross-continent latency
EuropeUK (London), Germany (Frankfurt), Netherlands (Amsterdam)EU data residency compliance, GDPR-compliant routing, European CDN performance
Asia-PacificSingapore, Tokyo, Sydney, MumbaiAPAC CDN PoPs, cross-ocean latency, regional service availability
South AmericaBrazil (Sao Paulo)Under-served region performance, longest-path latency
Middle East / AfricaUAE (Dubai), South Africa (Johannesburg)Emerging market performance, CDN coverage gaps

Checkpoint Selection Criteria

SLA Validation

Synthetic monitoring is the primary tool for validating Service Level Agreements (SLAs) with customers and vendors. Because synthetic checks run from controlled environments on predictable schedules, they produce the consistent, auditable measurements that SLA contracts require.

Measuring Uptime

# SLA uptime calculation from synthetic check data

# Data: check results for the month
total_checks = 43200           # 1 check/min × 30 days
successful_checks = 43150      # 200 status, response < 2s
failed_checks = 50

# Uptime percentage
uptime = (successful_checks / total_checks) * 100
# uptime = 99.884%

# Minutes of downtime
downtime_minutes = failed_checks  # 1 check = 1 minute
# downtime_minutes = 50

# SLA breach check
sla_target = 99.95  # contractual SLA
if uptime < sla_target:
    credit_owed = calculate_sla_credit(sla_target, uptime)
    # Most SLA contracts define credit tiers:
    # 99.95% - 99.0%  → 10% credit
    # 99.0%  - 95.0%  → 25% credit
    # Below 95.0%     → 50% credit

SLA Reporting Best Practices

Integrating Synthetic Data with APM

Synthetic checks become more powerful when connected to your APM system. When a synthetic check fails or degrades:

  1. The synthetic alert triggers and records the failure timestamp and checkpoint location
  2. The distributed trace generated by the synthetic request shows exactly where the degradation occurred
  3. Error tracking captures any exceptions thrown during the synthetic request
  4. Server response time metrics from the same time window provide infrastructure context

This correlation transforms a simple "check failed" alert into a complete diagnostic package — the where (checkpoint location), the what (which service or operation), and the why (the root cause visible in traces and logs).

Synthetic Monitoring Anti-Patterns

Building a Synthetic Monitoring Program

Tier 1: Critical Business Flows (check every 30s)

Tier 2: Important Features (check every 2-5 min)

Tier 3: Supporting Pages (check every 15-30 min)

Key Takeaways