1. 页面概览

1.1 是什么

「运维监控」页面(页面内标题为 部署运维监控,TAD-14)是 LightGotham 的部署运维工作台,提供三项能力:健康检查(逐组件探测数据库 / 图存储 / 事件总线并落库)、定时备份调度(配置/启停 cron 表达式,展示下次触发时间)与数据备份(手动触发备份并查看备份记录)。页面是对 Palantir Gotham 运维底座(健康检查、备份、进程监管)的前端承接,聚焦「看得见状态、留得住数据」。

1.2 核心价值

维度说明
组件健康总体 + 数据库 + 图存储 + 事件总线四项状态徽标(healthy/degraded/unhealthy),检查结果落库可追溯
一键刷新「刷新」按钮执行一次实时健康检查并重载备份列表
手动备份「立即备份」触发全量备份(默认 target=manual),完成后展示路径与大小
定时备份cron 表达式配置表单:启用/改期/停止调度,展示当前表达式与下次触发时间
备份记录目标/类型/状态/路径/大小/开始/完成/错误完整落表,失败记录带 error 可排错

1.3 一句话总结

打开页面点「刷新」看各组件是否正常、点「立即备份」给当前数据留一份底——Gotham 的部署状态与数据兜底都在这一个页面完成。

2. 访问入口

2.1 路由与菜单

2.2 认证与权限

2.3 端口与 API 前缀

3. 界面布局

页面单栏纵向布局,自上而下两张卡片:

┌──────────────────────────────────────────────────────────────┐
│ 部署运维监控  [总体状态:正常/降级/异常] [刷新|检查中...]        │
│ [alert 操作结果提示条(可关闭)]                                │
│ ① 健康检查(组件状态:healthy / degraded / unhealthy,已落库)  │
│    [总体][正常] [数据库][正常] [图存储][降级] [事件总线][正常]    │
│    每个组件块:组件名 + 状态徽标 + detail + 检查时间             │
│ ② 定时备份(cron 调度)                                         │
│    [运行中|未启用] 当前表达式 0 2 * * * · 下次触发 2026-..       │
│    [cron 表达式输入框] [启用调度|更新调度] [停止调度]            │
│ ③ 数据备份 [立即备份|备份中...]                                 │
│    #/目标/类型/状态/路径/大小/开始/完成/错误                     │
└──────────────────────────────────────────────────────────────┘

4. 交互元素

控件位置含义与作用
总体状态徽标页头右侧汇总健康状态:正常/降级/异常/启动中/停止中,颜色随状态变化
「刷新」按钮页头右侧并行执行健康检查与加载备份记录;执行中显示「检查中...」,完成后提示「运维状态已刷新」
组件状态徽标健康检查卡片各组件状态:healthy(正常)/degraded(降级)/unhealthy(异常)/starting(启动中)/stopping(停止中)
调度状态徽标定时备份卡片运行中(后端 active=true)/未启用:分别展示当前表达式与下次触发时间,或提示「未配置定时备份,备份仅可手动触发」
cron 表达式输入框定时备份卡片填写 5/6 段 cron(如 0 2 * * *)或 @every 描述符(如 @every 24h);启用中会回填当前生效表达式;为空时前端拦截提示
「启用调度/更新调度」按钮定时备份卡片已启用时文案为「更新调度」且弹二次确认;提交 PUT /ops/schedule {spec, enabled:true},成功后重载配置并提示「定时备份已启用:<spec>」
「停止调度」按钮定时备份卡片未启用时禁用;点击弹确认框,提交 PUT /ops/schedule {enabled:false},成功后清空输入框并提示「定时备份调度已停止」
「立即备份」按钮数据备份卡片右上触发一次全量备份;执行中显示「备份中...」,成功后提示「备份已触发:target=manual,path=...」并刷新记录
备份记录表数据备份卡片展示目标/类型/状态/路径/大小/开始/完成/错误;大小为 B/KB/MB/GB 自动换算,错误列红色截断展示

组件名与状态文案对照(前端逐字展示):

组件标识中文名状态值 → 中文
overall总体healthy→正常 / degraded→降级 / unhealthy→异常
database数据库另含 starting→启动中、stopping→停止中
graph_store图存储未知值原样展示,缺省「-」
event_bus事件总线徽标颜色随 healthy/degraded/unhealthy 变化

5. 后端关联

5.1 API 客户端

5.2 端点表

方法路径说明
GET/ops/health执行健康检查并返回逐组件状态(overall + components + generated_at),同步更新 Prometheus 健康指标
GET/ops/backups备份记录列表(?limit= 可选,默认 50)
POST/ops/backups手动触发备份(?target= 可选,默认 manual),返回 BackupRecord
GET/ops/backups/:id查询单个备份记录
GET/ops/schedule读取定时备份调度配置(spec/enabled/active/next_run_at)
PUT/ops/schedule写入定时备份调度配置({spec, enabled},启用改期/停止;非法表达式 400)

5.3 响应结构

健康检查(GET /ops/health)与备份记录:

{ "code": 0, "data": { "overall": "degraded",
  "components": [ { "id": 12, "component": "database", "status": "healthy",
    "detail": "ok", "created_at": "2026-08-30T09:00:00Z" },
    { "component": "graph_store", "status": "degraded", "detail": "neo4j slow" } ],
  "generated_at": "2026-08-30T09:00:00Z" } }
{ "code": 0, "data": { "id": 5, "target": "manual", "type": "full",
  "path": "temp/backup/20260830T0900/", "size": 1048576, "status": "success",
  "started_at": "...", "finished_at": "..." } }

5.4 关键机制

6. 权限与安全

7. 常见问题与排错

问题一:点「刷新」后健康检查卡片仍显示「暂无健康检查记录」

现象:刷新后组件网格为空。原因:请求失败或后端未启动(18083 无响应)。处理:检查 Gotham 后端进程是否在运行;查看 alert 提示条的具体报错;用 curl -H "Authorization: Bearer <aip_token>" http://localhost:18083/api/v1/ops/health 直连验证。

问题二:总体状态显示「异常」,但数据库等组件全正常

现象:overall 为 unhealthy 而组件明细正常。原因overall 汇总包含未展示的组件(如事件总线)或检查记录中的异常项被分页截断。处理:看每个组件卡片的 detail 与检查时间;确认事件总线(event_bus)是否启动;必要时刷新多次观察是否恢复。

问题三:备份记录出现 failed,错误列有内容

现象:备份记录状态为 failed。原因:备份目标目录不可写、磁盘空间不足或图存储文件缺失。处理:读取错误列原文;确认 temp/backup/ 目录存在且可写;清理空间后重新点「立即备份」。

问题四:点「立即备份」无反应或一直「备份中...」

现象:按钮长时间保持备份中。原因:备份耗时长或接口异常未返回。处理:等待几秒后刷新备份表确认是否已写入记录;若仍无记录,用 POST 接口直接调用排查后端日志。

问题五:备份大小始终显示「0 B」

现象:备份成功但 size 为 0。原因:备份刚触发即返回,size 尚未统计或复制的文件为空。处理:稍后刷新备份记录;检查后端配置的备份源文件路径是否真实存在。

问题六:点「启用调度」提示「调度配置失败:非法 cron 表达式 ...」

现象:提交 cron 表达式后报非法。原因:表达式不满足 5/6 段 cron 或 @every 描述符语法(如 not-a-cron、字段数不足)。处理:按提示修正表达式(如 0 2 * * * 表示每天 02:00、@every 24h 表示每 24 小时);失败不会影响原有调度(后端已回滚),修正后重试即可。

问题七:重启后端后页面显示「未启用」,之前的调度没了

现象:重启后调度配置丢失。原因:之前在页面上点过「停止调度」(会清除 scheduler_jobs 持久行,重启不再恢复)。处理:重新填写表达式并点「启用调度」;日常重启(未主动停止)不会丢配置。

8. 已知缺陷与边界

边界说明
定时备份调度持久化范围表达式持久在 scheduler_jobs 表(RestoreScheduler 启动恢复),但不回写 config.yamlbackup.schedule,也不能只靠配置文件声明调度;「停止调度」会清除持久行,重启不会自动恢复(符合用户主动停用预期)
增量备份delta 增量类型为预留,当前备份均为 full 全量
进程监管Launcher(启动/停止/崩溃自动重启/熔断)为后端能力,本页不暴露
记录条数备份列表固定取最近 50 条(?limit=50),更早记录需后端分页参数
总体口径总体状态依赖 OverallStatus 汇总规则,单组件「降级」即可能导致整体非 healthy

注:「立即备份」无确认已于 2026-09-06 修复(补 confirm 弹窗防重复点击;loading 防重原有)。