Layout
What a status page shows. Components that follow a monitor or carry a status you set, under public names, optionally in groups.
A layout lists a page's components, in display order: first those outside any group, then the groups. You replace it as one document, so a reorder or a rename can't leave a half-built page.
{
"components": [
{
"kind": "monitor",
"monitorId": "7d1c2f7e-6a1f-4f5e-9b8a-1f7c2b3d4e5f",
"aspects": ["availability", "certificate"],
"name": "Website",
"description": "www.example.com"
}
],
"groups": [
{
"name": "Support",
"description": "",
"collapsed": false,
"components": [
{
"kind": "manual",
"manualStatus": "operational",
"name": "Support desk"
}
]
}
]
}Components
| Field | Applies to | Meaning |
|---|---|---|
kind | both | monitor follows a monitor. manual has a status you set. |
name | both | The public name. Required, up to 100 characters. |
description | both | Public. Optional, up to 300 characters. |
monitorId | monitor | The monitor to follow. A monitor can appear on a page only once. |
aspects | monitor | Which of the monitor's aspects count towards the status. At least one. |
manualStatus | manual | operational, degraded_performance, partial_outage or major_outage. Change it by saving the layout. |
A page holds up to 100 components and 20 groups.
Public names are all the public gets. The monitor's id, name and target
never reach the public page, its page.json or its feed, so a component named
"Website" gives away nothing about the URL behind it.
Aspects
A component can count only the aspects its monitor can report:
| Monitor type | Aspects it can count |
|---|---|
| HTTP | availability, certificate, domain |
| SSL | certificate |
| Domain | domain |
The component shows the worst of the aspects it counts. See how component status is decided.
Groups
A group is a titled section of components. Its name is required (up to 100
characters), its description is optional (up to 300), and it shows a
status of its own. A group
with collapsed: true starts folded and opens by itself when something in it
needs attention. A group left with no components doesn't appear.
Replacing a layout
Saving replaces the whole layout, in the order you send:
- Send a row's
idto keep the row. Posted incidents name components by id, so keep ids when you reorder or rename. - Leave
idout for a new row. - A row you leave out is removed, and it no longer appears on the incidents that named it.
Two people saving at the same time don't conflict: the last save wins, so load the layout again before you edit it.
Adding a monitor to a page publishes its status, so you must be able to read every monitor the layout names. A monitor that doesn't exist or that you can't read is refused with the same message. Deleting a monitor removes its components from every page.
A saved layout on a published page is public within a minute.
With CLI 0.23.0 or later:
nrc monitor status-pages layout get acme -o json > layout.json
# edit layout.json, keeping the ids
nrc monitor status-pages layout set acme --file layout.jsonThrough the API: GET and PUT /status-pages/{id}/layout.
Create a status page
A public page that shows chosen monitors under names you pick. Choose its address and settings, set what it shows, check it, then publish it.
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.