切换主题
监控与故障排查
从任务的 runId 和 traceId 开始定位问题,再关联平台日志、模型请求和业务 callId。不要把管理员凭据或用户完整内容复制到公开问题记录。
日常观察
| 入口 | 观察内容 | 说明 |
|---|---|---|
| /actuator/health | UP / DOWN | 服务健康,不代表模型可用 |
| 控制台应用概览 | 状态计数、成功率、能力与费用 | 费用来自配置价目,未知不计作零 |
| /v1/apps/{app}/metrics | runCount、byStatus、configuredCost、unknownCostRuns | 需要管理身份 |
| 运行记录 | 最近任务及分页状态 | 管理员查看应用活动摘要 |
| /audit | 最近 200 条控制操作 | 追踪发布、撤销等操作 |
| 业务工具账本 | callId 与执行结果 | 核查写操作实际结果 |
Actuator 公开配置仍仅暴露 health。平台提供独立、需平台管理员认证的 /v1/operations/metrics Prometheus 端点,以及运行中心的调用链和延迟分布;配置方法见可观测性与调用链。
常见现象
| 现象 | 检查步骤 |
|---|---|
| 401 | 凭据是否过期、撤销、输入错误;OIDC issuer/audience/签名是否一致 |
| 403 | 用户是否属于路径应用;USER 是否误调用管理 API;是否把平台凭据用于聊天 |
| 404 | 资源精确版本和所有者是否匹配;不通过更换他人身份绕过 |
| 发布失败 | 依赖未发布、引用错误、子 Agent 循环或授权上限不完整 |
| 412 | 重新读取 revision,对比修改后再保存,不盲覆盖 |
| 409 会话忙 | 同一会话存在活动任务,等待或显式取消后继续 |
| 模型连接失败 | endpoint 完整路径、origin 白名单、密钥注入与绑定、网络与证书 |
| SSE 一次性显示 | 检查代理缓冲;Provider 未启用 stream 时为整轮完成后分块 |
| CAPABILITY_UNAVAILABLE | 租约过期或依赖被撤销;恢复健康和租约后再发新请求 |
| WORKER_LOST / PROCESS_RESTARTED | 实例失联或重启;核查业务结果后再决定是否发起新任务 |
| 410 | 事件访问窗口已过或游标错误;读取任务摘要,管理员可查看归档 |
| 费用为空 | 价目或厂商 usage 不完整;不能显示为免费 |
告警与运维状态
平台内置告警规则与运维状态工作台,用于值班判断;评估只读取既有运行、健康与账本数据,不重放业务、也不新增供应商调用。
- 打开“运行中心 → 运维状态”,确认存活为 UP、就绪为 READY。降级表示模型隔离、待确认超时、无终态或未知副作用等信号需要人工处理,但不代表进程不可用。
- 打开“运行中心 → 告警管理”,按状态筛选查看告警;触发中的告警可确认,条件消失会自动恢复,也可填写原因手动恢复。
- 通知默认关闭;需要外部监控时配置
SPARKTIDE_ALERT_WEBHOOK_URL、SPARKTIDE_ALERT_WEBHOOK_ORIGINS与可选SPARKTIDE_ALERT_WEBHOOK_TOKEN,由接收端自行决定短信、电话或工单渠道。
| 现象 | 检查步骤 |
|---|---|
| 条件满足但没有告警 | 规则是否启用;阈值与窗口是否匹配;点击“立即评估”确认口径 |
| 只保留一个告警实例 | 预期行为:同一规则按去重键合并,查看触发次数是否增长 |
| 子规则有实例但没有通知 | 检查抑制关系;inhibitedBy 非空表示父规则正在抑制通知 |
| 确认后不再通知 | 预期行为:确认停止重复通知;恢复时仍会通知 |
| 通知一直失败 | 地址、独立 origin 白名单、HTTPS、凭据与接收端 2xx;平台不自动重试 |
| 运维状态降级但业务正常 | 查看具体检查项;降级只表示需要人工处理的外部或运行时信号 |
通知正文只包含规则、条件、范围、级别、状态、目标、数值、阈值与时间;不包含消息、工具参数、身份、租户或密钥。
HTTP 401/403 拒绝发生在建立运行之前,配额或预算耗尽在预留之前直接拒绝,因此它们不产生运行记录。平台把这两类拒绝按“应用 × 分钟 × 类型”聚合成持久信号,库内告警来源 HTTP_REJECTION(401/403)与 BUDGET_EXHAUSTED(429)直接使用它们,因此拒绝突增与预算耗尽可以在“告警管理”里配置与恢复。信号先在内存计数后周期落库,崩溃最多丢一个刷新周期,不是逐条审计;下列指标仍适合外部监控做更细的突增判定:
| 指标 | 含义 | 建议用法 |
|---|---|---|
sparktide_http_rejected_total | 认证或权限拒绝计数 | 固定窗口增速突增时由外部监控告警 |
sparktide_quota_rejected_total | HTTP 429 配额或预算拒绝计数 | 用于预算耗尽与拒绝突增 |
这两个计数器随进程重启归零,不保留历史,不能替代审计。接口字段与权限见运维接口,指标与调用链接入见可观测性与调用链。
排障时提供的信息
记录组件版本、时间、appId、runId、traceId、错误码、调用接口和脱敏复现步骤。提供网关/数据库/模型连通性结果,区分“请求已受理”“任务成功”“业务事务完成”。更多状态与错误字段见错误处理。
规模与容量提示
平台仓库的 docs/知识沉淀/操作配方/运维治理/容量基线.md 记录了先声明目标再实测的单实例基线(5 万运行规模)。面向使用与运维的要点:
- 默认同时运行上限为 8,超出按设计返回 429。这不是故障,调用方应对 429 退避重试;容量规划必须按该上限计算。
- 运行列表使用 offset 分页,深分页(很大 offset)延迟随之增长;面板应优先展示首屏与本人运行。
- 应用管理汇总接口
GET /v1/apps/{app}/metrics会聚合该应用的全部运行,延迟随运行数增长(实测约 5 万运行 P95 约 400ms,外推约 6–7 万运行越过 500ms)。运行量很大的应用不要把它放进自动刷新。 - 慢读取的 SSE 连接不会阻塞其他请求,但连接数仍受资源约束,需按目标连接数压测后再定规格。
- 基线使用零延迟本地模型替身;真实供应商延迟会主导端到端时间,上线前必须用真实供应商复测。
实测结果不构成目标生产环境的容量承诺,正式容量验收需要域名证书、目标主机与业务真实流量。
