DomainOpsDomainOps

Website Uptime Monitoring: A Practical Guide

A practical guide to website uptime monitoring: what to check, the right intervals, beating alert fatigue, and telling a brief blip apart from a real outage.

DomainOps Team··5 min read

Website uptime monitoring is the discipline of continuously checking that your sites and services respond as expected, from outside your own network, so you hear about an outage before your customers do. It sounds simple — ping a URL, alert if it fails — but the gap between a noisy, ignored monitor and one your team actually trusts comes down to a handful of decisions: what you check, how often, and how you decide something is genuinely broken.

This guide walks through those decisions in the order they matter.

What to actually monitor

A green tick on "the server is up" tells you very little. The server can be running while the thing your customers care about is completely broken. Monitor the layers that map to real user experience:

  • Reachability — does a TCP connection to the host even open? Catches DNS failures, dead load balancers and network partitions.
  • HTTP response — does the endpoint return a healthy status code (typically a 2xx)? A 500, 502 or 503 is "up but broken".
  • Response time — slow is the new down. A page that takes 12 seconds is effectively offline for most visitors.
  • Content correctness — does the response body contain an expected string? This catches the soul-destroying case where your app serves a styled "Something went wrong" page with a cheerful 200 OK.
  • TLS validity — an expired or misconfigured certificate blocks the page entirely, regardless of whether the app behind it is healthy.

The richest signal comes from checking a real user-facing path — a login page, an API health route, a checkout step — rather than just the marketing homepage, which is often statically cached and stays up long after the application behind it has fallen over.

Choosing check intervals

The check interval is a trade-off between how fast you detect an outage and how much load and noise you generate. There is no universally correct number, but there are sensible defaults:

IntervalGood forTrade-off
30–60 secondsRevenue-critical apps, APIs, checkoutFast detection; more sensitive to transient blips
1–5 minutesMost production sitesThe sweet spot for the majority of services
5–15 minutesMarketing pages, low-traffic estates, large portfoliosCheaper and quieter; slower to notice

Your detection time is, at worst, one full interval plus however long your alerting takes. If a one-minute outage would genuinely cost you money, a five-minute interval is too slow. If it wouldn't, a 30-second interval just buys you more false alarms. Match the interval to the cost of being down, not to a vague desire for "real-time".

Distinguishing a blip from an outage

This is where most monitoring setups earn their reputation — good or bad. The internet is lossy. A single failed check is not an outage; it might be a momentary packet drop, a brief GC pause, or a hiccup on the route between your monitor and your server. If you alert on every single failure, you will train your team to ignore alerts, which is worse than having none.

The standard defences:

  • Confirmation / N-of-M failures. Only declare an incident after, say, 2 or 3 consecutive failed checks. One bad check is noise; three in a row is a pattern.
  • Multi-location verification. Re-test from a second vantage point before alerting. If one region sees a failure and another sees success, the problem may be the network path, not your site.
  • Distinguish hard down from degraded. A 503 is a different severity from a response that's merely slow. Treat them differently so a latency wobble doesn't page someone at 3am.

The cost of confirmation is a small delay before you're alerted. For nearly every team that delay is worth it, because an alert you believe is worth ten you've learned to swipe away.

Beating alert fatigue

Alert fatigue is the single biggest reason monitoring fails in practice. When alerts are noisy, irrelevant or duplicated, people stop reading them — and then miss the one that mattered. Keep alerts trustworthy:

  • Alert on state changes, not on every check. One "DOWN" notification when it goes down, one "RECOVERED" when it comes back. Not one per failed probe.
  • Group related failures. If a shared load balancer dies and twenty sites go dark, that's one incident, not twenty pages.
  • Route by severity. A degraded marketing page goes to a Slack channel; a dead checkout API goes to a pager. Reserve the loud paths for things that genuinely warrant waking someone.
  • Add a recovery message. Knowing something self-healed after ninety seconds is as valuable as knowing it broke.

A good rule of thumb: every alert should be actionable and trusted. If an alert routinely requires no action, stop sending it or fix what's generating it.

How DomainOps fits in

DomainOps runs scheduled HTTP and liveness checks against your endpoints from outside your network, confirms failures before alerting to cut down false positives, and notifies you via email, Slack or Pushover with both DOWN and RECOVERED events. Because it sits in the same dashboard as your domain expiry, SSL, DNS and attack-surface monitoring, an outage and its likely cause — an expired certificate, say, or a DNS change — show up side by side rather than in five different tools.

If you want to see the mechanics, the liveness monitoring docs and the endpoint monitoring docs cover intervals, confirmation and alert routing in detail.

Uptime monitoring is one of those things that's invisible until the day it isn't. If you'd rather find out about an outage from a calm Slack message than from an angry customer, start with the free tier — it covers up to ten domains, which is enough to monitor everything that matters for most small estates.

uptimemonitoring