Skip to content

作业监控 ​

作业监控位于系统设置 → 系统监控,入口 /system/job-monitor。平台用户需有 system:job-monitor:view 权限;租户用户即使有同名权限也不能访问平台聚合数据。 页面只聚合、查看和下钻,重试及结案操作仍由各域处理。

统计与健康度 ​

pending 仅计已经到期但尚未领取的行;未来重试和预约任务不算积压。 oldestPendingAgeSec 从最早到期时间计算。近 24 小时成败按执行结束时间统计, 工作流采用执行日志 finishedAt,而不是提交时间或账本更新时间。

卡死指本应自动推进或回收、超过本域窗口仍未推进的作业。任务中心以两倍心跳失联窗口、 工作流以租约或执行截止过期后一分钟、导出以运行超过 30 分钟判定。 Cron 使用任务自身 monitorTimeout,系统运行日志使用任务超时配置或默认 30 分钟。 通知已认领超过两倍认领窗口、Webhook 超正常补投窗口再加 10 分钟也会被报告。

默认积压年龄超过 300 秒为警告、超过 1800 秒为严重。失败率样本至少 20 次, 超过 10% 为警告、超过 30% 为严重。死信默认警告,卡死默认严重;本域可覆盖阈值。 不存在在线 worker 角色节点时整体严重,任一心跳失联节点至少警告。

分区探测独立并行,8 秒超时或异常将该分区标为不可用,顶部汇总排除它。 近 24 小时失败与死信是不同口径,失败执行在重试成功前也保留执行历史。

接入作业源 ​

  1. 在所属域 service 导出 getXxxHealth(),返回注册表的 JobSourceRawSummary。 将到期、卡死条件抽成同域函数,采集和明细复用;不要在聚合 service 查询其他域的表。
  2. 有可查询卡死记录时导出 listStuckXxx(limit),只投影展示所需字段,并使用同一判定条件。
  3. 在 shared 的 JOB_SOURCE_KEYS 登记 key,在 lib/job-monitor/sources.ts 登记标题、排序、 collect、可选 listStuck、下钻路径和阈值覆盖。各进程角色均声明,HTTP 接口由 api 承载。
  4. 补齐到期 / 心跳 / 租约 / 结束时间索引、相关域测试和 Demo 数据。
  5. 核对业务镜像与执行账本是否重复,不能重复累计同一业务作业。

趋势和告警 ​

jobsBacklog、jobsStuck、jobsDead、jobsFailed1h 已登记在监控指标目录, 每分钟随 system_metric_samples 采集。趋势使用现有历史分桶,支持 1h、6h、24h、7d。 历史迁移前的样本及采集不完整的样本为 null;图表保留间断,告警跳过该次评估, 不会把数据缺失当作恢复。

默认规则:卡死数大于 0 持续 5 分钟严重、死信数大于 0 警告、积压大于 1000 持续 10 分钟警告。已有规则遵循种子只新增语义,管理员调整不会被覆盖。

通知 outbox 新增真实结束时间,旧行不伪造历史完成时间,统计覆盖迁移后的执行。

来源分类与收尾 ​

作业源通过执行运行时、事件与内容投递、业务作业、到期调度四个标签页展示,每次仅挂载当前分组。 顶部汇总和 Worker 状态、队列积压与趋势保持全局口径;标签页支持 ?tab=runtime|delivery|business|schedule 定位,并遵循页面状态同步偏好。任务中心按模块和任务类型展示前十名,默认展开五项,名称与独立的 “查看”按钮分开显示。totalsMode: 'stuck-only' 仅将卡死计入顶部和监控指标;网盘渲染的执行量 已由系统队列统计,不重复累计业务行。

目录同步运行超过一小时、备份运行超过两小时或等待超过十分钟时,可在所属业务页 使用既有管理权限标记为失败。服务端重新校验卡死条件并以状态条件更新;迟到执行器 不会覆盖人工结案结果,迟到备份文件由现有孤儿文件回收机制处理。

对象关注投递完成后会删除待投行,暂不保留历史成败;其 24h 成败显示为 0、死信无模型。 反复失败由当前行错误与尝试数判定为警告。CMS 转化投递按全平台汇总,网盘产物的 24h 失败按终态更新时间记录。

业务孤儿 ​

报表投递、数据质量、支付对账、应用部署、运营群发及 CMS 流水线仅累计卡死。 业务行超过两分钟宽限期仍处于进行态,关联任务不存在、已结束或运行心跳失联时判为孤儿。 排队中的关联任务仍是有效执行者,不因为没有运行心跳而报孤儿。统计与明细复用 lib/job-monitor/orphan.ts,以主键关联的 anti-join 判断,避免业务行 JOIN 膨胀。

报表投递的定时路径直接同步执行,空 taskId 不判孤儿,仍检查运行超时;异步任务保存真实 taskId。 部署以 EXISTS 判断超时主机,同一个部署多台主机超时只计一次。CMS 构建只在全部关联任务 不可推进时判孤儿,已 superseded 的交付记录不会因 purgeStatus 仍 pending 而重新报警。 CMS 混合流水线暂缺统一的构建成功结束时间,失败率保留为 null,执行成败看任务中心; 不会将交付 / 媒体成功次数误当作全部构建的成功分母。

到期调度 ​

scheduled-dispatch 聚合聊天、渠道、CMS 内容、CMS 发布单、CMS 分发、公众号、流程、IoT、 报表订阅、报表预警和目录同步计划共 11 类条目。各域导出同一个 DueCondition 给 tick 与 监控复用,pending 使用当前时刻,stuck 使用当前时刻减三分钟;预约未来、禁用与终态不会计入。 超期默认警告,最久超期超过十五分钟严重,执行成败仍由系统调度的运行留痕统计。

CMS 内容使用工作副本指向的批准修订、尚未发布且未删除 / 锁定的候选,并沿用 APP_TIME_ZONE 解释快照中的计划时间。目录同步保留首次初始化下次执行时间和平台回调的既有路径,监控只 统计配置了 Cron、启用且非 SCIM 的到期计划。

Built with VitePress for local documentation preview.