The Origin Server Isn't the Whole Story: Reading Uptime Reports Your Visitors Never Experience
Photo: Ana Las Heras, CC BY-SA 4.0, via Wikimedia Commons
Your monitoring dashboard says 100% uptime. Your support inbox says otherwise. When those two realities diverge, the culprit is usually geography — or more precisely, the gap between what your monitoring tool measures and what a visitor in Atlanta or Phoenix experiences when they request a page.
The Cache That Masks the Crash
Most uptime checks hit a URL and record the status code. Simple enough. But on a CDN-fronted site, that status code may not come from your origin at all. A cached response served from an edge node in Ashburn or San Jose returns a clean 200 even when the origin behind it has been throwing 500s for twenty minutes.
The result is a monitoring blind spot with a long shelf life. Depending on your cache TTLs, an origin outage can persist well past the point where every new visitor is receiving either a stale page or a hard error — while your checks, hitting the same warmed edge, see nothing wrong.
This isn't a theoretical edge case. Any site serving cacheable content through a CDN with broad PoP coverage is exposed. The more distributed your edge, the more likely your monitoring is sampling the healthiest possible version of your site.
Why Single-Region Checks Fail Distributed Sites
A single monitoring location — even a well-chosen one — answers only one question: is the site up from here? It cannot answer whether the site is up for everyone.
Divergence across points of presence is common and meaningful. Consider these patterns:
- One PoP returns 502s while others return 200. Often a regional cache failure, a misconfigured load balancer, or an origin health check failing in one data center.
- Consistent 200s everywhere except during cache purges. Your origin may be fragile, but only visible when the CDN has to go back for fresh content — typically right after a deploy.
- Elevated latency from specific regions. Not an outage, but a routing or peering problem that real users are absorbing as slow loads.
Each of these tells you something different about your infrastructure, and none of them are visible from a single vantage point.
Building Multi-Region Synthetic Checks
The fix is to monitor the way your traffic actually arrives: from many locations, through the full delivery path, at realistic intervals.
1. Distribute your check locations to match your audience. If your traffic skews heavily US, prioritize checks from major peering hubs — the East Coast, the West Coast, and Central time zones at minimum. Add international nodes if you serve international visitors.
2. Bypass the cache on a subset of checks. Send a cache-busting header or query parameter on some fraction of your synthetic requests. This forces those checks to exercise the origin path and surfaces origin health independently of edge health.
3. Compare cached and uncached results deliberately. When the two diverge, you've learned something specific: your edge is fine, your origin is not. That distinction changes your escalation path entirely.
4. Track status code distributions, not just up/down. A check that logs "up" for 200 and "down" for anything else discards the diagnostic value of a 503 versus a 504 versus a 200-with-error-page. Record the full response for each region.
Setting Thresholds That Reflect Real Experience
Once you have multi-region data, your alerting logic should change shape.
- Alert on divergence, not just failure. Three of five regions healthy is not a non-event. It's a partial outage affecting a subset of your audience — arguably worse, because it's harder to notice.
- Weight thresholds by traffic share. If 60% of your US visitors come through two regions, a failure there deserves a louder alert than a failure in a region serving 2%.
- Add a cache-staleness signal. Monitor the
AgeandX-Cacheheaders on your checks. Rising cache ages during an incident tell you the edge is papering over an origin problem. - Validate with RUM. Synthetic checks tell you what should happen; real user monitoring tells you what is happening. When the two disagree, believe your users first and investigate your checks second.
The Takeaway
An uptime report is only as honest as the path it measures. Monitoring your origin alone tells you whether your servers are alive; monitoring a single edge location tells you whether one cache is alive. Neither answers the question your visitors are asking. Distribute your checks, split cached from uncached paths, and treat regional disagreement as a first-class alert condition — because the outage your dashboard misses is the one your customers are already reporting.