公开状态页

发布包含实时指标、事件公告、维护窗口和可用性历史的公开健康状态页。

ServerBee 提供一个公开状态页,地址为 https://your-server/status。它无需认证即可访问,方便你向用户或相关方公示服务健康状态。

页面展示管理员选定的服务器和模块,数据来自公开端点 GET /api/status/config 和 GET /api/status。

页面展示内容

  • 在线/总服务器数量。
  • 每台选中服务器的在线/离线状态和分组标签。
  • 在线服务器的实时指标:CPU、内存、Swap、磁盘、磁盘 I/O、网络速率/流量、负载、连接数、uptime。
  • 每台服务器的 90 天可用性时间线。
  • 已配置的公开备注。
  • 可选模块:服务器详情、网络质量、IP 质量、事件公告、维护窗口。

IP 地址、主机名、网卡等敏感标识会在 API 层脱敏,不会出现在公开页面上。

配置状态页

在 Settings → Status Page 中配置。状态页是单例:只有一个页面,原地编辑,而非按 slug 创建多个。

设置API 字段说明
启用enabled禁用后公开页面不返回数据
标题title公开页面标题
描述description可选介绍文本
服务器server_ids页面展示的服务器
默认布局default_layoutlist 或 grid
显示服务器详情show_server_detail允许下钻查看单台服务器详情
显示网络show_network显示网络质量模块
显示 IP 质量show_ip_quality显示 IP 质量模块
显示事件show_incidents显示事件公告模块
显示维护show_maintenance显示维护窗口模块
黄色可用性阈值uptime_yellow_threshold低于该百分比的日期显示为降级
红色可用性阈值uptime_red_threshold低于该百分比的日期显示为严重故障

管理 API

方法路径说明
GET/api/status-page读取状态页配置
PUT/api/status-page更新状态页配置

更新示例:

{
  "title": "Production Status",
  "description": "Public health for production services",
  "server_ids": ["server-id-1", "server-id-2"],
  "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
}

公开 API

以下端点无需认证,是公开页面的数据来源:

方法路径说明
GET/api/status/config页面元数据和显示选项
GET/api/status选中服务器的状态、实时指标和可用性
GET/api/status/servers/{id}单台服务器详情
GET/api/status/servers/{id}/metrics单台服务器的时序指标
GET/api/status/servers/{id}/uptime-daily单台服务器的 90 天每日可用性
GET/api/status/network网络质量概览
GET/api/status/network/{id}单台服务器网络质量详情
GET/api/status/ip-qualityIP 质量概览
GET/api/status/incidents活动和近期事件
GET/api/status/maintenances活动和计划中的维护窗口

每个服务器条目包含 id、name、group_name、地区/国家、os、online、in_maintenance、uptime_percent 和 uptime_daily。

可用性时间线

每台服务器展示 90 天可用性时间线,每根条代表一天:

  • 绿色 -- 健康可用性。
  • 黄色 -- 低于黄色阈值。
  • 红色 -- 低于红色阈值。
  • 灰色 -- 无数据。

可用性数据来自 uptime_daily 表,由服务端后台聚合任务生成。缺失日期会自动补齐,保证时间线连续。

事件公告(Incidents)

事件公告用于公开说明故障或服务降级,可选关联到指定服务器。

字段

字段说明
title事件标题
statusinvestigating、identified、monitoring 或 resolved
severityminor、major 或 critical
server_ids_json可选,受影响服务器
is_public是否在公开状态页展示

一个事件可以包含多条 update,每条 update 有自己的 status 和 message。添加 update 会记录消息,并把事件状态更新为该 update 的状态。状态变为 resolved 时会设置 resolved_at。

API

方法路径说明
GET/api/incidents列出事件;支持按状态过滤
POST/api/incidents创建事件
PUT/api/incidents/{id}更新事件
DELETE/api/incidents/{id}删除事件
POST/api/incidents/{id}/updates添加事件更新

维护窗口

维护窗口用于公告计划维护,并在活动期间抑制相关服务器的告警通知。

字段

字段说明
title维护标题
description可选详情
start_atUTC 开始时间
end_atUTC 结束时间,必须晚于 start_at
server_ids_json可选,受影响服务器
is_public是否在公开状态页展示
active是否启用该维护窗口

API

方法路径说明
GET/api/maintenances列出维护窗口
POST/api/maintenances创建维护窗口
PUT/api/maintenances/{id}更新维护窗口
DELETE/api/maintenances/{id}删除维护窗口