Status Page

Publish a public server health page with live metrics, incidents, maintenance windows, and uptime history.

ServerBee serves a single public status page at https://your-server/status. It requires no authentication, so you can share it with users or stakeholders to communicate service health.

The page shows the servers and sections an administrator selects, backed by the public GET /api/status/config and GET /api/status endpoints.

What the Page Shows

  • Online/total server count.
  • Each selected server's online/offline status and group label.
  • Live metrics for online servers: CPU, memory, swap, disk, disk I/O, network speed/transfer, load, connections, and uptime.
  • A 90-day uptime timeline per server.
  • Public server remarks where configured.
  • Optional sections: server detail, network quality, IP quality, incidents, and maintenance windows.

Sensitive identifiers such as IP addresses, hostnames, and interface details are stripped at the API boundary and never appear on the public page.

Configuring the Page

Configure the page in Settings → Status Page. The status page is a singleton: there is one page, edited in place rather than created per slug.

SettingAPI fieldDescription
EnabledenabledWhen disabled, the public page returns no data
TitletitlePublic page title
DescriptiondescriptionOptional introductory text
Serversserver_idsServers shown on the page
Default layoutdefault_layoutlist or grid
Show server detailshow_server_detailAllow drilling into a server's detail view
Show networkshow_networkShow the network quality section
Show IP qualityshow_ip_qualityShow the IP quality section
Show incidentsshow_incidentsShow the incidents section
Show maintenanceshow_maintenanceShow the maintenance section
Yellow uptime thresholduptime_yellow_thresholdDays below this percentage show as degraded
Red uptime thresholduptime_red_thresholdDays below this percentage show as a major outage

Admin API

MethodPathDescription
GET/api/status-pageRead the status page configuration
PUT/api/status-pageUpdate the status page configuration

Update example:

{
  "title": "Production Status",
  "description": "Public health for production services",
  "server_ids": ["server-id-1", "server-id-2"],
  "show_ip_quality": false,
  "default_layout": "grid",
  "show_server_detail": true,
  "show_network": true,
  "show_incidents": true,
  "show_maintenance": true,
  "enabled": true,
  "uptime_yellow_threshold": 99.9,
  "uptime_red_threshold": 95
}

Public API

These endpoints are unauthenticated and power the public page:

MethodPathDescription
GET/api/status/configPage metadata and display options
GET/api/statusSelected server statuses with live metrics and uptime
GET/api/status/servers/{id}Detail view for one server
GET/api/status/servers/{id}/metricsTime-series metrics for one server
GET/api/status/servers/{id}/uptime-daily90-day daily uptime for one server
GET/api/status/networkNetwork quality overview
GET/api/status/network/{id}Network quality detail for one server
GET/api/status/ip-qualityIP quality overview
GET/api/status/incidentsActive and recent incidents
GET/api/status/maintenancesActive and upcoming maintenance windows

Each server entry includes id, name, group_name, region/country, os, online, in_maintenance, uptime_percent, and uptime_daily.

Uptime Timeline

Each server shows a 90-day uptime timeline where every bar represents one day:

  • Green -- healthy uptime.
  • Yellow -- uptime below the yellow threshold.
  • Red -- uptime below the red threshold.
  • Gray -- no data.

Uptime data comes from the uptime_daily table, populated by the server's background aggregation tasks. Missing dates are gap-filled so the timeline stays continuous.

Incidents

Incidents are public announcements for outages or degraded service. They can optionally be linked to specific servers.

Fields

FieldDescription
titleIncident title
statusinvestigating, identified, monitoring, or resolved
severityminor, major, or critical
server_ids_jsonOptional affected servers
is_publicWhether the incident is shown on the public status page

An incident can carry multiple updates, each with its own status and message. Adding an update records the message and moves the incident to that update's status. Setting the status to resolved also sets resolved_at.

API

MethodPathDescription
GET/api/incidentsList incidents; supports status filtering
POST/api/incidentsCreate an incident
PUT/api/incidents/{id}Update an incident
DELETE/api/incidents/{id}Delete an incident
POST/api/incidents/{id}/updatesAdd an incident update

Maintenance Windows

Maintenance windows announce planned work and also suppress alert notifications for the associated servers while active.

Fields

FieldDescription
titleMaintenance title
descriptionOptional details
start_atUTC start time
end_atUTC end time; must be after start_at
server_ids_jsonOptional affected servers
is_publicWhether the window is shown on the public status page
activeWhether the window is enabled

API

MethodPathDescription
GET/api/maintenancesList maintenance windows
POST/api/maintenancesCreate a maintenance window
PUT/api/maintenances/{id}Update a maintenance window
DELETE/api/maintenances/{id}Delete a maintenance window