Public status pages¶
Preview feature
Status Pages are off by default — menu entry, page and API are locked until a super admin enables the area under Admin → System → Preview features. The area is not stable yet.
A status page is the publicly accessible "are our services up?" page. Vesana can generate one or more per tenant, each under its own slug.
Concept¶
flowchart LR
OS[Vesana data] --> SP[Status page]
SP --> URL["/status/<slug>"]
URL --> KU[End customer / staff]
The status page is read-only, logic stays in Vesana — only curated statuses are shown. No login required (optionally protectable with a password).
Status pages are a licensed feature — if it's not included in the license, the area stays locked.
Create a status page¶
/status-pages → New:
| Field | Meaning |
|---|---|
| Slug | URL path: /status/<slug> |
| Title | "Acme Production Status" |
| Description | optional |
| Tenant | source tenant |
| Public | whether the page is reachable without login |
| Branding | logo, primary color, favicon, custom CSS |
| Timezone | for timestamps on the page |
Components = hosts¶
A status page adds entire hosts as components, in any order (drag & drop). Per host:
| Field | Meaning |
|---|---|
| Checks | by default all of the host's checks feed into the displayed status — optionally restrict to a subset (e.g. show only the HTTP check, hide the internal CPU check) |
| Show uptime | toggle the 90-day uptime bar for this host on/off |
There's currently no freely definable display grouping ("Web", "API", …) and no per-component display-name override — the order of the hosts determines the page's structure.
Branding¶
| Field | Meaning |
|---|---|
| Logo | image URL |
| Primary color | hex, default green |
| Favicon | image URL |
| Custom CSS | your own styles |
| Timezone | prefilled with the instance timezone, UTC if none is set |
Password protection¶
A status page can optionally be locked with a password. Visitors enter it once (/status/<slug>/auth), after which a time-limited browser session applies. Send access by email lets an admin email the slug URL and password directly to a stakeholder.
Content¶
The page shows:
- Current status per host component
- Incidents with an update timeline
- Scheduled maintenance
- Uptime statistics (pixel bar) per host, where enabled
- Email subscription for incidents (optional)
Incidents¶
Some incidents aren't automatically detectable (a third-party outage, a pure communications update). Create manually:
Status page → Incidents → New with title, status (investigating/identified/monitoring/resolved — freely settable), impact (e.g. minor), optionally affected hosts.
Updates can be added to an incident afterwards — the page shows a timeline of status + text per update.
Scheduled maintenance¶
Maintenance is created directly on the status page (Status page → Maintenance → New, with title, affected hosts, start/end) — it's its own category, not an automatic import of internal downtimes. If you also want to publicly announce an internal downtime, add a matching entry here.
Subscriptions¶
End customers can subscribe by email to a status page (/status/<slug>/subscribe), with double opt-in confirmation by mail. Per subscription: notify on Warning, on Critical, on Recovery. Unsubscribe via an individual link in every email.
Privacy¶
The status page shows only what was explicitly added as a component — internal hostnames, IP addresses, or measurement values from other checks stay invisible unless they were themselves chosen as a component.
Permission¶
All administrative actions (create, edit, manage hosts, incidents, maintenance, delete) run through the same permission as custom dashboards:
| Permission | Effect |
|---|---|
dashboards.edit |
create, edit, and manage status pages |
There are no dedicated status_page.* permissions.
Next¶
- Custom dashboards — internal counterpart to the public page
- Downtimes — for internal maintenance planning