monitor states

A monitor is always in exactly one of five states. State derives mechanically from the latest check — there is no separate state machine to reason about.

statecolormeaning
upgreenlatest check: every condition returned pass
degradedamberlatest check: at least one warn, none fail
downredlatest check: at least one condition returned fail
pausedgraymonitoring temporarily disabled by a user
pendingvioletcreated but never checked yet

worst outcome wins

State is the worst outcome across all the monitor's conditions, where fail > warn > pass. One failing condition makes the whole monitor down, even if ten others passed. One warning condition (and no failures) makes it degraded.

Because state is recomputed from scratch on every check, any check whose conditions all pass returns the monitor to up — the previous state doesn't matter.

note

degraded is a first-class state, not a flag. It means the site is reachable but a quality dimension is off — rising latency, a cert nearing expiry. Green / yellow / red maps to the vocabulary every status page already uses, so it needs no explanation to your stakeholders.

degraded counts as uptime

When pngr computes uptime %, degraded time counts as up. Only down time reduces uptime. The reasoning: during degraded the site was still reachable — what was degraded was quality (latency, cert margin), not availability. This matches status-page conventions and spares you from explaining "but my site was up the whole time" to a confused stakeholder.

See incidents for how a state change turns into an incident, and how severity escalates and de-escalates within a single incident.

paused and pending

paused and pending both render gray but mean different things. pending is a brand-new monitor the scheduler hasn't reached yet (usually for ~10s after creation). paused is a deliberate stop — no checks run, no incidents open, and history is preserved until you resume.

On the status timeline, both paused windows and the pre-monitoring gap show as muted-gray "no data" buckets rather than green — the absence of a check is not a passing check.