MonSPHERE

Monitoring

Synthetic Monitoring

Scripted multi-step browser checks — navigate, click, fill, wait, and assert — for real user-journey monitoring beyond a simple uptime check.

A Synthetic monitor runs a real headless browser through a scripted sequence of steps — the same way an actual visitor would move through your site — instead of a single request/response check. Use it for anything a plain HTTP check can't express: does login actually work, does the checkout flow complete, does a specific page element render correctly after JavaScript runs.

Availability

Synthetic Monitoring is a plan-gated feature — each check launches a real headless Chromium instance, so it costs meaningfully more compute than a protocol probe. Check Settings > Plan, or ask your organization's Owner.

Steps

A scenario is an ordered list of steps. Every step must succeed for the check to pass — the first failure fails the whole run, same as a real user hitting a broken step and giving up.

ActionWhat it does
gotoNavigate to a URL
clickClick an element (CSS selector)
fillType a value into an input (CSS selector)
waitForWait until an element becomes visible (CSS selector)
assertTextFail unless an element's text contains a given value
assertTitleFail unless the page title contains a given value
curl -X POST https://api.monsphere.com/api/v1/organizations/{orgId}/monitors \
  -H "X-Api-Key: msk_live_..." -H "Content-Type: application/json" \
  -d '{
    "name": "Checkout Flow",
    "type": "synthetic",
    "target": "Checkout flow",
    "intervalSeconds": 300,
    "timeoutSeconds": 30,
    "config": {
      "syntheticSteps": [
        { "action": "goto", "target": "https://example.com/cart" },
        { "action": "click", "target": "#checkout-button" },
        { "action": "waitFor", "target": "#payment-form" },
        { "action": "assertText", "target": "h1", "value": "Payment" }
      ]
    }
  }'

What's not encrypted yet

Unlike Basic Auth or Advanced HTTP Monitoring's headers/body, a fill step's value is stored and returned in the open — this is a known v1 limitation, not an oversight. Don't put a real password into a login scenario's fill step until this gets the same encrypted, never-round-trips treatment those do.

How it runs

Synthetic monitors don't go through Blackbox Exporter or Prometheus at all — a scripted browser session doesn't fit that pull-probe model. They run on MonSPHERE's own internal scheduler, the same one Heartbeat monitors use, so there's no region to pick — every check runs from MonSPHERE's own infrastructure.