fix(health): don't alert when the isitup prober itself is unreachable #18
No reviewers
Labels
No labels
area/auth
area/backend
area/ci
area/deploy
area/e2e
area/frontend
area/shared
blocked
good-first-issue
needs-info
priority/high
priority/low
priority/medium
type/bug
type/chore
type/docs
type/feature
type/tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
celilo/lunacycle!18
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/isitup-prober-noise"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Coordination from the celilo alerting rollout (
w1A):isitup.orgis returning HTTP 522 (Cloudflare origin timeout) and looks dead rather than flaky, so every module probing it now reports failures that say nothing about the site being checked. celilo-website, celilo-registry and byoi have the same change; lunacycle lives in its own repo and needs its own.The split
Two different facts were conflated:
warnis not free: a warn health item still creates a warning-severity alert, and the route severity floor bottoms out atwarning(AlertSeverityis onlywarning|critical), so a third-party outage pages the operator.Changes
runPublicReachabilityCheck: the non-OK-HTTP path and the timeout/DNS/connectioncatchpath nowlogger.info(...)and emit nothing. Thestatus_code != 1path from a reachable prober is untouched.addCheckroutes every non-pass item tologger.warn, so absence of that warn proves no item was recorded):unreachable prober emits no external_reachable check item(503 prober)reachable prober reporting us down still warns(status_code: 2)The check and the isitup e2e simulator both stay — e2e resolves
isitup.orgto a simulator inside the sealed network, so the real path keeps getting exercised.Known blind spot (documented in the source)
This is the only check that traverses the public path — public DNS → firewall DNAT → back in.
page_rendersresolves through the internal view straight to caddy. So while the prober is unreachable, external verification silently stops happening, including in the case where the fleet itself lost egress; under the old behaviour that produced an alert, if an uninterpretable one.Closing that properly needs a staleness signal ("no successful external verification for N hours") backed by persisted state. That is deliberately not in this PR: a staleness alert against a permanently-dead prober would fire immediately and forever — the original noise wearing a hat. The honest sequence is a live second prober first, then staleness on top.
bun test health-check.test.ts→ 15 pass.🤖 Generated with Claude Code