How component status is decided
A component follows its monitor's confirmed incidents, shows no data when paused or not yet checked, and a posted incident's status wins while it is open.
Monitor components
A monitor component follows the monitor's open incidents on the aspects it counts, not its last check, so the page and your alerts agree. An availability problem opens an incident only after the checks you set confirm it (2 in a row by default). A certificate or domain problem opens one on the first result, so a component that counts those aspects can change on one check.
| The monitor | The component shows |
|---|---|
| Is paused, or has had no conclusive check yet | unknown, shown as "No data", never operational |
| Has a critical incident open on a counted aspect | major_outage |
| Has a warning incident open on a counted aspect | degraded_performance |
| Has no incident open on a counted aspect | operational |
The worst open incident across the counted aspects decides. An incident on an
aspect the component doesn't count changes nothing: a component that counts
only availability stays operational while the certificate is expiring.
partial_outage never comes from a monitor. It appears when a person sets it,
or on a group with mixed components.
Manual components
A manual component shows the manualStatus you set in the
layout.
Posted incidents win
While a posted incident is open, the status it gives an affected component replaces what the component would show, for monitor and manual components alike. If several open posts name the same component, the worst status wins.
Once the post is resolved, the component goes back to following its monitor or its manual status.
Groups
A group's status comes from its components:
- If all have the same status, the group shows it.
- If they are mixed and one is in an outage, the group shows
partial_outage. - If they are mixed otherwise, the group shows the worst of them.
- Components with no data count only when all of them have none.
The page's verdict
The line at the top of the page comes from all its components. Those with no data aren't counted.
| Indicator | When | The page says |
|---|---|---|
none | Everything is operational and no post is open | All systems operational |
minor | Something is degraded, or a post is open and nothing is worse | Minor disruption |
major | A component is in a partial or major outage | Partial outage |
critical | More than half of the components with data are in a major outage | Major outage |
When some components have no data and the rest are operational, the page says "No known issues" instead of claiming all systems. When none has data, it says "Status not available yet".
Uptime bars
Each segment of a bar is one UTC day, graded by estimated downtime:
| Grade | The day |
|---|---|
ok | No downtime |
warning | Warnings or slow checks, no downtime |
minor | Under 20 minutes down |
partial | 20 to under 60 minutes down |
major | 60 minutes or more down |
unknown | Every check was inconclusive |
no_data | No checks |
A posted incident changes a component's current status, not its bars or its uptime: those come from the checks.
Uptime is (ok + warning) / (ok + warning + critical) over the page's
uptimeDays. A warning still answered, so it counts as up. Inconclusive checks
count neither way.
Downtime for a day is the critical share of its conclusive checks, multiplied by the minutes those checks cover, and never more than the day so far.
Bars start where a page's data starts, but show at least 60 days when the
page covers that many. With showUptimeBars: false, the page publishes no
per-day grades at all. With more than one tracked component, the page adds an
overview bar, noted as "Based on automated checks", in which each day takes the
worst grade of any component.
Layout
What a status page shows. Components that follow a monitor or carry a status you set, under public names, optionally in groups.
Post incidents
Tell the public what is happening. Posts are separate from your monitors' incidents, carry a series of updates, and move to the page's history when resolved.