Practice

Synthetic monitoring vs uptime monitoring: what each one misses

8 min read · Published Aug 9, 2026
Contents · 8 sections
  1. What each actually does
  2. What uptime monitoring misses
  3. What synthetic monitoring misses
  4. The failure they BOTH miss
  5. A sensible split
  6. The mistake worth avoiding
  7. The maintenance cost nobody budgets for
  8. Where each belongs in an on-call rotation

Uptime monitoring asks whether an endpoint answered. Synthetic monitoring asks whether a user could complete a task. They sound like the same question asked at different resolutions, and they are not: each is blind to a class of failure the other catches.

What each actually does

Uptime monitoring makes a request on a schedule and records the outcome. Cheap, fast, runs every minute, and easy to run from many places. It measures reachability.

Synthetic monitoring drives a real browser or a scripted sequence through a journey — sign in, search, add to basket, check out — and records whether each step worked. Expensive, slow, runs every few minutes at best, and brittle. It measures function.

What uptime monitoring misses

What synthetic monitoring misses

The failure they BOTH miss

Both run from infrastructure you chose, on a schedule you chose, against paths you chose. Neither sees a failure that affects only real users: a specific ISP's route, a gradual rollout that reached 10% of accounts, a shard that holds some users and not others. That is the class covered in why a site works for some people and not others, and the only monitoring that catches it is your own error rates from real traffic.

Which is worth saying plainly: synthetic and uptime monitoring together are still not a substitute for instrumenting the real thing. They are early warning and they are attribution — useful precisely because they run when no users are around to complain.

A sensible split

LayerFrequencyCatches
Uptime check on the endpoint that matters1 minHard down, fast
Uptime check with a content assertion1-5 min200-but-wrong
Synthetic journey on the critical path5-15 minMulti-step breakage
Real-user error ratecontinuousEverything the above cannot reach

If you only have budget for one, make it the middle row. An uptime check with a content assertion against the endpoint whose failure hurts costs almost nothing and catches the largest share of what actually goes wrong.

The mistake worth avoiding

Running many uptime checks against easy endpoints and reporting the aggregate as service health. It produces a dashboard that is green during outages, which is worse than having no dashboard — because a green dashboard is actively used as evidence that nothing is wrong.

A check is worth exactly as much as the assumption behind it: that the thing measured is the thing users depend on. Most monitoring never revisits that assumption after the day it was set up.

The maintenance cost nobody budgets for

Uptime checks are close to free to keep running. Synthetic journeys are not, and the cost is not the vendor bill — it is that they break when the product changes.

A renamed button, a new cookie banner in one locale, an extra verification step: each breaks the script, each produces a failing check, and each failure looks exactly like an outage until someone reads it. A synthetic suite nobody maintains converges on being muted, and a muted check is worse than no check because it still appears on the dashboard as coverage.

Budget the maintenance or run fewer journeys. Two that are kept working beat ten that are half-broken, because the two are believed.

Where each belongs in an on-call rotation

The general rule: page on the checks whose failures are unambiguous, and use the ambiguous ones for context once someone is already looking.

Share 𝕏 Twitter LinkedIn
Keep reading

← All notes & guides