自动翻译本页面为自动翻译,英文原文为最终版本。阅读此页的英文版

状态系统

Disband的状态页面是自托管的。它不依赖于第三方状态服务,因此当主网络主机API或静态资产交付出现问题时,它仍然可以准确报告。

公共页面显示的内容

该页面按服务分组监控。对于每个监控器,它显示:

在显示器下方是事件、计划维护和公告。每个事件都打开一个包含完整更新时间线的详细页面。该源以RSS 2.0格式发布最新的25个事件、维护窗口和已发布的公告。

支票

一个名为status-probe的Supabase Edge函数在pg_cron下每分钟运行一次。它并行探测每个启用的显示器,并在每次检查中记录一行。

每个显示器都有:

设定 含义
名称 公共标签,例如网站。
组 它出现的部分,例如Disband。
URL 要请求的绝对http或https URL。
方法 GET 或 HEAD。默认值为 GET。
预期状态 被视为健康的确切HTTP状态。默认值为200。
关键词 必须出现在响应正文中可选文本。
超时 1-30秒。默认值为10秒。
头信息 可选请求头信息,存储在服务器端。
启用 探头是否完全请求它。
公共 它是否有助于公共快照。

只有当状态代码匹配并且存在可选关键字时,监控器才健康。会跟随重定向。超时、网络错误、状态错误或缺少关键字将记录为检查失败,并附有原因。

探测器与网络应用独立运行。网络主机出现故障不会阻止检查记录。

历史记录和正常运行时间

每个支票都存储在status_checks中。一个数据库触发器将每个支票折叠到status_daily中,因此90天的条形图是一个廉价的读取,而不是对数百万行进行聚合。

一个空白——没有检查的日子——显示为没有数据,而不是停机时间。

自动事件

当显示器连续三次检查失败时,探测器会自动打开事件。事件是重大事件,与该显示器相关联,并以自动更新开始调查,其中包含最后一个错误。

当下次检查成功时,事件将转为已解决,并记录一个更新记录了停机时间的大致长度。事件将保留在页面和提要中,并保留完整的历史记录。

如果服务正在闪烁但没有连续三次出现故障,则不会打开自动事件。在自动事件处于打开状态时,所有者仍然可以为自动事件添加手动更新。

手动事件、维护和公告

所有者可以发布三种类型的条目:

类型 用于
incident 一个意外的问题。
maintenance 计划工作,可选带有开始和结束时间。
announcement 一般服务通知,不是停机。

事件可以影响一个、多个或多个显示器。其影响是none、minor、major或critical之一。

更新状态是:

每次更新都会在事件时间线中添加一个带有时间戳的条目,并设置事件的当前状态。标记更新resolved或completed也会设置已解决时间。发布带有其他状态的更晚更新会重新打开它。

总体状态

横幅的决定顺序如下:

  1. 一个活跃的维护窗口显示“维护中进行中”,或者 启动前计划维护。
  2. 活跃的重大故障或重大事件会显示为“重大停机”。
  3. 一个活跃的小故障显示为“部分损坏”。
  4. 显示器故障时,显示屏会显示“部分损坏”或“重大停机”,具体情况取决于 公共监控器正在故障。
  5. 没有故障且至少有一个结果,它显示为所有系统正常运行。
  6. 在第一批支票到达之前,它会显示正在等待第一批支票。

已解决的事件不会影响横幅。

隐居

公共读取路径是一个数据库函数,而不是直接访问表格。它返回监控名称、组、状态、延迟、正常运行时间和事件。它故意省略了:

基本表格启用了行级安全性,没有公共策略。只有服务角色和探测功能才能直接读取它们。

组织

/status/admin仅限已登录的平台所有者使用。它不是空间角色,不能授予其他成员。未经身份验证的请求将收到401;其他已登录的帐户将收到403。

管理员屏幕可以:

管理员API

屏幕使用以下仅限所有者使用的路线:

方法 端点
GET, POST /api/status-admin/monitors
PATCH, DELETE /api/status-admin/monitors/{id}
GET, POST /api/status-admin/incidents
PATCH, DELETE /api/status-admin/incidents/{id}
POST /api/status-admin/incidents/{id}/updates

它们接受所有者的Supabase访问令牌为Authorization: Bearer <token>。它们是管理员屏幕的实现细节,而不是公共API;形状可能会发生变化。

操作说明

有亲属关系的