菜单

维护窗口

相关源文件

概述

Uptime Kuma 中的维护窗口允许用户安排监控预计会停机进行维护的时间段。在此期间,受影响的监控不会触发警报通知,其状态将显示为“维护中”,而不是“宕机”。此功能有助于减少警报疲劳,并向用户提供有关计划停机的透明度。

有关监控和警报的信息,请参阅 监控系统。有关维护窗口在状态页面上的显示方式的详细信息,请参阅 状态页面

维护窗口类型

Uptime Kuma 支持多种维护窗口类型

  1. 手动:由用户手动激活和停用
  2. 单次:一次性维护,具有特定的开始和结束日期/时间
  3. 周期性 - 间隔:按固定间隔(例如,每 X 天)周期性出现
  4. 周期性 - 工作日:在特定星期几周期性出现
  5. 周期性 - 月份日期:在特定月份日期周期性出现
  6. Cron:使用 cron 表达式进行计划,以满足复杂的调度需求

来源: server/model/maintenance.js90-96 src/pages/EditMaintenance.vue91-97

维护窗口状态

维护窗口可以具有以下状态

  • 已计划:已配置但尚未开始
  • 维护中:当前活动
  • 不活动:由用户暂停
  • 已结束:维护期已完成

状态由 Maintenance 类中的 getStatus() 方法确定,该方法检查窗口的配置、计时和活动标志。

来源: server/model/maintenance.js374-402 src/pages/ManageMaintenance.vue93-99

与监控集成

当监控受到有效维护窗口的影响时

  • 其状态将更改为“维护中”(代码中值为 MAINTENANCE 或 3)
  • 警报通知将被抑制
  • 维护状态将显示在监控列表中和状态页面上

集成通过 monitor_maintenance 表处理,该表将监控与维护窗口关联起来。

来源: server/socket-handlers/maintenance-socket-handler.js78-111 server/api-router.js79-81

与状态页面集成

维护窗口会显示在状态页面上,以告知用户计划中的停机。集成通过 maintenance_status_page 表处理。

在状态页面上,维护窗口会显示

  • 维护的标题和描述
  • 维护的开始和结束时间
  • 受影响的监控显示维护状态

来源: server/socket-handlers/maintenance-socket-handler.js114-146 src/pages/StatusPage.vue271-282 server/model/status_page.js466-488

技术实现

维护模型

server/model/maintenance.js 中的 Maintenance 类处理存储和调度

  • toPublicJSON():将维护 Bean 转换为 JSON 对象
  • jsonToBean():将 JSON 对象转换为维护 Bean
  • generateCron():根据选定的策略生成 cron 表达式
  • run():启动维护调度
  • stop():停止维护调度
  • isUnderMaintenance():检查维护是否当前活动

对于周期性维护,系统使用 Croner 库来根据 cron 表达式调度维护窗口。

来源: server/model/maintenance.js15-455

Socket 处理程序

server/socket-handlers/maintenance-socket-handler.js 中的维护套接字处理程序处理客户端请求

  • addMaintenance:添加新的维护窗口
  • editMaintenance:编辑现有的维护窗口
  • addMonitorMaintenance:将监控与维护窗口关联
  • addMaintenanceStatusPage:将状态页面与维护窗口关联
  • deleteMaintenance:删除维护窗口
  • pauseMaintenance:暂停维护窗口
  • resumeMaintenance:恢复暂停的维护窗口

来源: server/socket-handlers/maintenance-socket-handler.js14-337

状态页面处理

加载状态页面时,系统会检查活动维护窗口

来源: server/model/status_page.js466-488

前端组件

前端组件包括

  • EditMaintenance.vue:用于添加或编辑维护窗口的表单
  • ManageMaintenance.vue:所有维护窗口的列表
  • MaintenanceDetails.vue:特定维护窗口的详细信息
  • MaintenanceTime.vue:显示时间详细信息的组件

来源: src/pages/EditMaintenance.vue1-669 src/pages/ManageMaintenance.vue1-317 src/components/MaintenanceTime.vue1-61

图表

维护窗口生命周期

此图显示了维护窗口的生命周期,从创建到计划、激活和结束。维护窗口也可以暂停和恢复。

来源: server/model/maintenance.js374-402 server/socket-handlers/maintenance-socket-handler.js270-336

维护窗口数据流

此图显示了创建、编辑和激活维护窗口时的数据流。

来源: server/socket-handlers/maintenance-socket-handler.js16-146 server/model/maintenance.js203-293

维护窗口数据库模式

此图显示了维护窗口的数据库模式及其与监控和状态页面的关系。

来源: server/socket-handlers/maintenance-socket-handler.js83-86 server/socket-handlers/maintenance-socket-handler.js118-121

状态页面维护显示流程

此图显示了用户访问状态页面时,维护窗口的获取和显示方式。

来源: server/model/status_page.js262-297 src/pages/StatusPage.vue271-282

功能使用

创建维护窗口

  1. 导航至“维护”页面
  2. 点击“安排维护”
  3. 填写标题和描述
  4. 选择受影响的监控
  5. 选择要在其上显示维护的页面
  6. 选择维护策略(手动、单次、周期性、cron)
  7. 根据所选策略配置时间
  8. 点击“保存”

管理维护窗口

在“维护列表”页面,您可以

  • 暂停/恢复维护窗口
  • 编辑现有维护窗口
  • 删除维护窗口

维护窗口状态有颜色编码

  • 蓝色:维护中
  • 绿色:已安排
  • 红色:无效
  • 灰色:已结束

来源: src/pages/ManageMaintenance.vue42-60 src/pages/EditMaintenance.vue30-235