2026年7月26日/ 案例

OpsPilot 智能运维诊断平台

以四类固定故障为入口,展示事件登记、只读证据采集、根因假设、证据审计和人工接手的 Java 微服务诊断平台。

项目概览

主线、难点和结果。

页面入口

事故工作台负责事件登记、风险排序和诊断查看;故障实验室负责展示固定场景和已持久化结果。

调查数据

Agent 只读取 Prometheus 指标、Loki 日志、Tempo 调用链和运行手册,并限制查询范围和工具预算。

页面输出

页面展示证据时间线、根因假设、置信度、工具调用审计、诊断状态和人工接手记录。

验证结果

4 类故障均完成端到端验证,持久化 4 个诊断会话、20 条证据、4 个假设和 20 条工具审计记录,自动处置为 0。

功能流程

从故障到可复核诊断

下面以“订单网关下游超时”为例,按控制台里真实可见的顺序说明:故障如何进入事件队列,Agent 读取了什么,根因为什么成立,工程师最后确认了什么。

01故障进入

固定场景生成可重复事件

故障实验室预置下游超时、数据库连接池耗尽、Redis 延迟和配置不一致。触发后,Platform API 保存事件、严重级别、服务和 correlation ID。

本步输出

事故进入风险队列,拥有可重复的场景 ID 和事件上下文。

02只读证据采集

Agent 按白名单读取遥测

诊断按钮只会调用受限的 Prometheus、Loki、Tempo 和运行手册工具;时间窗口、服务名、返回条数和总调用次数都有上限。

本步输出

形成带 evidence ID 的指标、日志、调用链和手册记录。

03根因校验

结论必须回指证据

Agent 生成结构化根因假设,记录置信度和支持证据;如果证据不足就返回 needs_more_evidence,不补写一个听起来合理的答案。

本步输出

得到可解释的领先假设、置信度和完整工具审计。

04人工接手

报告保存,动作仍由工程师决定

诊断会话、证据、假设和工具调用先写入 PostgreSQL。值班工程师确认接手后,只追加负责人、说明和审计事件。

本步输出

事件状态变为已接手;重启、回滚、扩容和配置修改次数仍为 0。

核心功能

页面上真正能做什么。

流程之外,这里补充工作台里可以直接看到和操作的功能。

01

事故队列

按状态和风险排序,直接进入目标事故

控制台展示严重级别、服务、状态、时间和 correlation ID,也支持手动登记事故;选中后右侧加载完整事件和诊断数据。

02

只读诊断

一个按钮触发调查,但不能执行修复

“运行只读诊断”调用 Agent,收集白名单遥测并保存报告;页面明确显示只读边界和当前 planning mode。

03

证据审阅

证据、假设和工具调用放在同一条阅读路径

工程师可以逐条查看指标、日志、调用链和运行手册,核对领先假设、置信度、证据引用和每一次工具调用是否成功。

04

人工接手

记录负责人和说明,不把确认变成自动处置

确认接手后刷新事件状态并追加审计记录;故障实验室仍显示 4/4 场景和 0 次自动处置。

4/4
固定故障场景
28
Agent 自动化测试
0
自动处置次数

运行画面

中文功能演示

下面使用真实控制台的中文演示数据,按故障实验室、事件详情、证据时间线和人工接手的顺序展示。

16 秒中文演示依次展示故障实验室、事件详情、证据时间线和人工接手,不再使用英文概念动画。
OpsPilot 中文故障实验室
故障实验室把 4 类场景、服务、预期症状、已记录结果和预期根因放在同一张表里;这里展示结果,不在页面内执行故障注入。
OpsPilot 中文事故工作台
事故工作台左侧按风险展示事件,右侧同时呈现事件摘要、根因假设、工具审计和人工确认状态。
OpsPilot 中文证据时间线
Prometheus 指标、Loki 日志、Tempo 调用链和运行手册按时间排列;根因假设必须引用这些证据记录。
OpsPilot 中文审计时间线
诊断报告入库和人工接手都会追加审计事件,方便回看事故何时创建、何时完成诊断、由谁接手。
OpsPilot 中文人工接手状态
人工接手后状态变为“已接手”,但确认动作只记录负责人和说明,不会触发重启、回滚或扩容。

问题

故障发生后,告警只说明“哪里异常”,工程师仍要分别打开指标、日志、调用链和运行手册,自己拼出根因,并且很难保留完整判断过程。

方案

我把一次诊断拆成可见的产品流程:固定故障进入事件队列,FastAPI + LangGraph Agent 只读查询 Prometheus、Loki、Tempo 和运行手册,形成带 evidence ID 的根因假设,Spring Boot API 保存报告和审计,最后由 Vue 工作台记录人工接手。

展示重点

这页先看中文功能流程,再看真实控制台截图。重点不是“Agent 会调用工具”,而是每一步在页面上能看到什么输入、什么证据、什么结论和什么人工动作。

固定故障 -> 事故队列 -> 只读诊断 -> 指标 / 日志 / 调用链 / 运行手册
        -> 根因假设 + 证据引用 -> 报告与审计 -> 人工接手

The project is a local diagnosis lab, not an autonomous remediation system. Every conclusion must cite stored evidence, and every production action remains outside the Agent boundary.

实现细节

演示先从故障实验室开始。这里列出下游超时、数据库连接池耗尽、Redis 延迟和配置不一致四类固定场景,并把服务、预期症状、已记录结果和预期根因放在同一张表里。

进入事故工作台后,左侧按风险排列四条事件。选择“订单网关下游超时”后,右侧能直接看到事件摘要、严重级别、状态、根因假设和工具审计,不需要在多个系统之间切换。

点击“运行只读诊断”后,Agent 最多进行 12 次受限读取。Prometheus 指标、Loki 日志、Tempo 调用链和运行手册会作为独立 evidence item 写入时间线,模型只能返回引用 evidence ID 的结构化假设。

如果证据不足,诊断状态会明确返回 needs_more_evidence;证据足够时,页面显示领先假设、置信度、支持证据和工具调用结果。平台 API 再把诊断会话、20 条证据、4 个假设和 20 条工具审计记录保存到 PostgreSQL。

值班工程师最后填写姓名和接手说明。确认后只更新负责人、状态和审计时间线,不触发重启、回滚、扩容或配置修改;没有配置模型时,页面也会明确显示 bounded-fallback。

OpsPilot's Java workload provides four lab faults: downstream timeout, database-pool exhaustion, Redis latency and configuration mismatch. Each scenario has a deterministic trigger, expected metric symptom, log evidence and root cause.

The Agent reads incident context first, then allowlisted Prometheus metrics, Loki logs and Tempo traces; calls are capped at 12 and query windows and payload sizes are bounded. The model can return only structured hypotheses with evidence IDs.

The Platform API stores diagnosis sessions, evidence, hypotheses, tool calls and audit events in PostgreSQL. Repeated requests are idempotent by correlation ID, and secret-like fields are rejected or redacted.

All four faults passed end-to-end verification: four diagnosis sessions, 20 evidence items, four hypotheses and 20 tool-call audit records were persisted, with no remediation triggered.

The Vue workbench keeps the incident, Agent judgement, evidence basis, audit trail and human acknowledgement in one reading path. Without a configured provider it explicitly reports bounded-fallback instead of pretending a model ran.

复盘

Agent 项目最重要的不是让模型自由调用工具,而是把工具权限、预算、结构化输出和证据引用都做成可测试的边界。
固定故障语料比一句‘模型诊断准确’更有说服力:触发条件、遥测症状、根因和预期证据都应该能重复验证。
只读和人工确认不是附加说明,而是产品主流程;诊断系统不能把建议偷偷变成生产动作。