DL status

Architecture

Every 15 minutes, status.dliu.com visits each dliu.com site the way a guest would (no sign-in, no cookies) from Ireland, Virginia (US) and Tokyo, plus once an hour from inside mainland China, and decides whether each of its functions is up, degraded or down.

Components
BrowserPeople
VisitorsRead the status page; no account
EdgeCloudFront
DistributionServes the page and the latest result; caches it 60 s
Routes function/docs, and the old /docs/health link
PrivateAWS account
Site bucketThe pages and /data/status.json
State bucketStreaks, 90 days of history, incidents; never served
On demandChecks
ScheduleEvery 15 minutes
Checker (Ireland)Checks, combines, judges, publishes
Probes (Virginia, Tokyo)The same checks from there
China (Globalping)Two probes, hourly
Internetdliu.com sites
11 sitesTheir pages, public endpoints and /health
One check run
1Every 15 minutesthe checker in Ireland starts
2Visit from 4 placesIreland, Virginia and Tokyo; China hourly
3Pages, APIs, /healthwhat each site's testing page lists
4Combine and judgeup, degraded or down for each function
5Publishthe status page shows the result

The checker has no sign-in and no access to the sites' data. It sees only what any visitor sees.

Four locations

Each check runs from Ireland, Virginia (US) and Tokyo, so a problem near one place doesn't look like an outage, and a problem only one place sees still shows up. Once an hour, two home-broadband probes in mainland China (one on China Telecom, one on China Unicom) also open each site's home page and health check, to catch a site that's blocked or unreachable in China.

Passes everywherepass
Fails from one placedegraded, e.g. "fails from Tokyo only"
Fails from most placesfail

Up, degraded or down

Upevery check passed
Degradedslow, failing from one place, reported "warn", or failed once
Downfailed two runs in a row
Technical details
PartWhat it is
ScheduleEventBridge rule rate(15 minutes) in eu-west-1, no retries.
CheckerLambda (Node.js 22, arm64, 256 MB, 120 s) in eu-west-1. Runs the checks itself (Ireland), calls the probes, merges, judges, and writes the state and /data/status.json.
ProbesLambda dliu-status-probe in us-east-1 and ap-northeast-1 (stacks StatusProbe-us, StatusProbe-jp): same code and checks, invoked synchronously, returns raw results. No permissions beyond its logs.
RequestsGET or HEAD, 10 s timeout, redirect: manual, no cookies or Authorization, user agent dliu-status-bot/1.0 (+https://status.dliu.com/docs). Four sites at a time, each site's checks in order.
ChinaGlobalping (by jsDelivr, free, no account): once an hour, 2 probes (China Telecom, China Unicom) run each site's home-page check and /health, about 40 tests an hour, under the free 250 an hour. Its results count until the next hourly run. China fails a check only when both probes fail; slow means over 6 s (CloudFront has no servers in mainland China). If Globalping is unavailable, the last results count for one more hour, then China shows as not checked.
CombiningPer check: fail when more than half the locations that answered failed; warn when some failed, or more than half were slow; otherwise pass, with the median time. /health functions are combined the same way. A probe that doesn't answer is left out.
Definitionconfig/apps.json in dliu-com/status, imported from each site's /docs/health.md; the contract is HEALTH.md.
StatePrivate S3 bucket: failure streaks, 90 days of daily counts per site, incidents, private sites included. Kept if the stack is deleted.
PageStatic files in a private S3 bucket behind CloudFront (origin access control), /data/status.json cached 60 s, pages no-cache.