记录智能运维助手的 Kubernetes 部署方式、使用流程、核心功能验证、MTTR、根因准确率、证据完整率和小模型测试结果。
本文由《智能运维助手设计文档 v3.0.0》整理而来,已移除目录前模板页、版本页和前置信息;正文、截图、表格与操作步骤按博客阅读方式重新排版,并拆成 AIOps 系列。
系列导航:总体架构 · LangGraph 与 MCP 编排 · 部署、评估与测试
部署运维指南
部署模式
智能运维助手以pod资源支持集群部署
集群部署(Kubernetes)
智能运维助手包含两部分核心资源分别在gitlab上一个是http://192.168.1.63/wanghuhu/holmegpt-agent 核心的agent资源和http://192.168.1.63/wanghuhu/mcpstander 第三方mcp工具集合调用。部署时需要同时部署这两个资源在同一个集群中才能让agent使用mcp工具来进行处理。
部署方式如下,下载资源到目录中进入工作目录配置相应的配置文件如工具集合的开启,调用端口的设置,
以及联邦集群的主从集群地址等。
下面是mcp服务pod的配置
结合实际情况与需求,配置好对应的配置文件如开启的工具,联邦查询的集群等。
还需要针对LLM大模型和一些核心参数配置
其中主要的参数在于 # ── Qwen3 本地部署(取消下方注释,注释上方即可切换) ────────────────
# LLM_API_KEY: "xnet"
# LLM_MODEL: "openai/Qwen3-Next-80B-A3B-Instruct"
# LLM_API_BASE: http://10.2.0.98:8001/v1
这是我们内部的大模型配置,配置方式也支持外部的如deepseek,claude模型支持。
部署步骤
在上述配置完必要的参数后,在robusta目录下执行
Make delete deploy-master
如果发生了代码的改变修改version里面的版本执行
Make delete build push deploy-master
在mcpstander的目录下执行
Make delete deploy
如果要使用多集群功能。需要更新修改master中的配置信息
同时在其他被控制的子集群中执行
Make delete deploy-slave
如果发生了代码的改变修改version里面的版本执行
Make delete build push deploy-slave
使用方式
使用api进行接口请求,常见的3个请求方式
curl -G "http://10.2.0.48:30800/ask" --data-urlencode "q=我的集群有什么问题?"
curl -G "http://10.2.0.48:30800/query" --data-urlencode "q=集群 CPU和内存memory 使用率是多少,具体到每个node级别"
curl -G "http://10.2.0.48:30800/federation/ask" --data-urlencode "q=我的master集群有什么问题?"
curl -G "http://10.2.0.48:30800/federation/query" --data-urlencode "q=集群master CPU和内存memory 使用率是多少,具体到每个node级别"
--no-buffer
核心功能验证
核心功能验证
等待服务pod部署启动。运行后应该存在这两个pod running,如果是联邦查询那么所有的集群都需要执行上面的部署命令。
当服务部署起来后就可以直接进行api的查询。参考的方式如下
Main slave
curl -G "http://10.2.0.48:30800/ask" --data-urlencode "q=我的集群有什么问题?"
之后会输出一个运维报告,里面包含了问题定位,根因分析以及最后的总结。
接下来给出核心质量指标的验证过程和方式。
在项目的test目录下,有一个e2e文件夹主要用来测试,里面的一个manifests包含了l0-l4的5个典型异常资源,首先通过kubectl apply -f l2-oomkilled.yaml 部署这个资源
然后通过执行.venv/bin/python test/e2e/test_accuracy.py -n 50 -c 5 -q "我的集群有什么问题,根本原因在哪?" 这样的 测试脚本来进行 质量指标的检测,上述案例总测试50次并发5 的方式进行运行。以下的所有测试均为单次测试验证。与实际执行的情况和大模型的单次效率和状态有直接关系。
如图所示的运行效果,由于每次模板输出都会有一个专门的层用来定位当前问题处于哪一个层中
通过获取到这50次每次调用后报告输出的定位层数来决定 他的这次分析是否准确。
本次测试中50个案例都分析为了L2层的错误,根因准确率为100%
在报告的末尾有一个runbooks的参考率,也就是说agent在进行分析和调用的时候获取了runbooks作为参考所以我们的runbooks覆盖率自动化广度为100%。
每次调用的最后会有时间统计,从结果上来看,单次执行的从用户发出提问到给出运维报告的mttr在3.2m符合要求15m
证据完整率角色健壮性需要人工手动排查。以上述测试为例。生成的文件叫做20260403_105348下经过人工排查看报告的出的结论和实际情况的准确性。证据完整率为80%
经过多轮测试后分别得到50次测试并发为5的情况下,针对L0-L4的5个典型案例,其准确率分别为:60% 100% 90% 86% 78% 得到的加权平均根因准确率为82.8%
已知问题与处理方案
| 故障编号 | 故障现象 | 可能原因 | 处理方案 |
|---|---|---|---|
| 1 | 整体单次查询耗时很高,agent进行了多轮工具调用 | 使用的大模型为深度思考形式,工具调用链长导致整体api调用耗时较高 | 更换lite模型,优化提示词,减少工具设计。 |
测试说明
根据设定的目标,当时运维agent需要满足的质量指标如下。
集群分析运维分析的能力MTTR<15m
根因分析准确率>= 80%
证据完整率,根因健壮性>80%
Runboos覆盖率自动化广度>80%
质量指标说明与测试方案
集群分析运维分析的能力MTTR<15m
表示从用户发出提问到最后获得最终报告的完整输出的整个时间,包括了ai调用,agent工具调用和大模型分析思考过程。需要让它小于15m。
测试方式:通过在代码内部维护一个计时器,通过每次提问和最后流程走完即使,统计当次运行的总时间。按照工作流节点的每个节点时间统计。汇总。用来表示集群分析能力的MTTR时间。
根因分析准确率>= 80%
在当前的设计中,为了方便对运维问题进行分类设计了一个L0-L4的5层模型结构。针对云平台中的运维异常问题。
通过对提示词注入一些信息描述,将常见的运维问题分为多个层次的问题,如L0代表了基础设施层,L3代表网络dns解析层的异常等。通过runbook注入5个具有典型异常现象的runbook额外知识信息,作为参考。任何异常的问题我们都会让运维agent将问题定位到他是哪一层的异常问题,在结构化模板输出中会有一个层级定位
该指标的测试方式为:通过手动创建一个人为的已知的异常云资源,如一个imagepullbackoff状态的pod,然后运行运维助手,看他对问题分析的定位是否准确。测试方式为多次运行同一个请求,如50次,看看定位准确的次数是多少比如40次,那么准确率可以计算为40/50 =80%。
证据完整率>80%
在运维agent的设计中有一个节点叫做evidence,证据采集节点。通过提示词的注入,每次运行的时候这个节点会生成一个关键证据采集计划,如下图所示,这次运行中计划采集5个核心证据,他的来源在于上一个层级定位的问题,通过大模型的理解能力计划了如下几个重要内容的采集,但是由于工具的多样性,实际执行的证据采集的工具可能会大于计划,比如其中的一个检查资源配置可能可以通过kubectl get工具执行多次采集多个维度的资源证据。
该指标的计算方式为
Collected(已经采集的信息)/total(总的计划采集的指标+实际采集的指标)
total = evidence_plan 项数 + 额外采集的工具调用数
collected = 其中 collected=True 的项数
输出流如下:
LLM 输出 JSON evidence_plan(如 6 项)
↓
LLM 通过 AICall agent loop 调用 MCP 工具(记录在 thinking_events)
↓
_build_evidence_items_from_thinking() 匹配 plan ↔ 实际工具调用
↓
匹配上的 plan 项 → collected=True, source="thinking_match"
未匹配的 plan 项 → collected=False, source="planned"
plan 外的额外工具调用 → collected=True, source="thinking_extra"
↓
completeness = collected / total
匹配模式解释:
_build_evidence_items_from_thinking
有 plan 时:plan item 与工具调用匹配,未匹配的工具作为额外采集
1 从 thinking_events 提取成功的工具调用,每个工具只看:
- tool_name
- result
2 在计划里面和调用成功的工具做字符串匹配。历成功工具调用,做这些字符串条件之一命中就算匹配成功。
最后计算证据采集率。collected / total
这里的 total 是全部 evidence_items,包括:
- plan 匹配成功的 thinking_match
- plan 未命中的 planned
- 额外工具产生的 thinking_extra
Runbooks覆盖率>80%
由于holmesgpt使用runbooks作为额外的知识库,通过md文件的形式注入一段description,由一个专门的工具叫做fetch_runbook的工具来调用出全部的runbooks内容。
在运维agent的设计阶段,我们想的是通过编写独有的运维知识来增强agent的特性化的运维能力,比如可以通过增加一些对ham的常见异常问题的说明和解释,来增强运维agent对我们自研的组件的了解程度和运维准确率,而不是靠大模型自身的能力,他可能对ham并不了解。
如上图所示runbooks的内容以md形式,配置文件的方式注入到运维agent中。上述的例子展示的是一个关于imagepullbackoff的异常的知识说明,包含了,这个异常的状态是什么样的,怎么去判断,以及怎么去测试验证。
在运维agent运行的过程中如果他发现当前集群的问题有和runbooks里面的比较匹配的时候他会自动的获取runbooks作为自己的额外知识库,这样可以让他的回答和行为更符合真实的异常,而不是靠大模型本身的能力去猜。
该指标的测试方式为,在实际的运维报告输出中,通过提示词注入和结构化输出的手段,可以获取到本次运行过程中agent执行的工具fetch_runbooks工具的输出,通过这个工具的输出来判断,他获取了那个runbook,然后通过获取的这个runbook和当前异常case是否匹配来进行计算,如运行50次为L2的异常case。通过统计所有报告中最后获取到的真实参考的runbooks与实际的case的匹配情况来验证,当我们存在一个匹配的runbooks是agent是否可以正确的获取到对应的额外知识库来更加完善自己的输出和运维诊断。
当然并不是所有的问题都会参考runbook,比如这次我的运行问题为”查询我集群中每个节点的内存和cpu的使用率” 所以runbooks的参考是由大模型决定的一个动态的过程。该指标的意义在于,我们希望在有参考runbooks的情况下可以让回答参考对应的runbooks并且准确率在80%以上。这样我们的回复和运维诊断过程可以人为的通过编辑runbooks进行有效的引导和说明。
具体的测试方式与结果
在项目的test目录下,有一个e2e文件夹主要用来测试,里面的一个manifests包含了l0-l4的5个典型异常资源,首先通过kubectl apply -f l2-oomkilled.yaml 部署这个资源创建临时的测试case
然后通过执行.venv/bin/python test/e2e/test_accuracy.py --scenario l3-imagepull -n 50 -c 5 -q "我的集群有什么问题"
-- scenario 为预期的异常,比如我创建一个l3的异常case这里就填l3-imagepull支持以下参数。
l0-volume-limit L0 存储卷超限驱逐 l1-taint-node L1 节点 NotReady/Taint l2-oomkilled L2 OOMKilled l3-imagepull L3 镜像拉取失败 l4-config-bootstrap L4
-n 为总测试条数
-c 为并发数量,同时并发几个请求
-q 为询问的问题
这样的测试脚本来进行质量指标的检测,上述案例总测试50次并发5 的方式进行运行。以下的所有测试均为单次测试验证。与实际执行的情况和大模型的单次效率和状态有直接关系。如当前的大模型为deepseek api,官方原版的api请求。
如图所示的运行效果,由于每次模板输出都会有一个专门的层用来定位当前问题处于哪一个层中,通过多次运行每一个层级的异常case得到以下数据。
经过多轮测试,得到以下详细结果。
l3 场景,创建一个已知的问题,镜像拉取失败的pod
运行的测试结果
==================================================================== AIOps Copilot E2E 准确率报告(盲测模式) ==================================================================== 场景数: 1 | 总运行: 50 | 成功: 50 | 失败: 0 总耗时: 5012s (83.5m)
────────────────────────────────────────────────────────────────────── 运行明细 ────────────────────────────────────────────────────────────────────── | 场景 | # | 层级 | 期望 | Runbook | MTTR | 证据 | 耗时 | |--------------------|-----|--------|--------|-------|---------|---------|---------| | L3 镜像拉取失败 | 5 | L3 ✅ | L3 | ✅ | 282s | 80% | 282s | | L3 镜像拉取失败 | 3 | L3 ✅ | L3 | ✅ | 282s | 80% | 284s | | L3 镜像拉取失败 | 1 | L3 ✅ | L3 | ✅ | 288s | 80% | 289s | | L3 镜像拉取失败 | 2 | L3 ✅ | L3 | ✅ | 522s | 80% | 522s | | L3 镜像拉取失败 | 4 | L3 ✅ | L3 | ✅ | 546s | 100% | 544s | | L3 镜像拉取失败 | 8 | L3 ✅ | L3 | ✅ | 330s | 80% | 330s | | L3 镜像拉取失败 | 7 | L3 ✅ | L3 | ✅ | 342s | 100% | 343s | | L3 镜像拉取失败 | 6 | L3 ✅ | L3 | ✅ | 360s | 80% | 359s | | L3 镜像拉取失败 | 13 | L3 ✅ | L3 | ✅ | 450s | 100% | 449s | | L3 镜像拉取失败 | 10 | L3 ✅ | L3 | ✅ | 750s | 80% | 752s | | L3 镜像拉取失败 | 12 | L3 ✅ | L3 | ✅ | 786s | 80% | 784s | | L3 镜像拉取失败 | 9 | L3 ✅ | L3 | ✅ | 900s | 80% | 899s | | L3 镜像拉取失败 | 11 | L3 ✅ | L3 | ✅ | 816s | 100% | 814s | | L3 镜像拉取失败 | 14 | L3 ✅ | L3 | ✅ | 402s | 100% | 400s | | L3 镜像拉取失败 | 15 | L3 ✅ | L3 | ✅ | 336s | 60% | 334s | | L3 镜像拉取失败 | 17 | L3 ✅ | L3 | ✅ | 312s | 80% | 312s | | L3 镜像拉取失败 | 16 | L3 ✅ | L3 | ✅ | 822s | 100% | 822s | | L3 镜像拉取失败 | 18 | L3 ✅ | L3 | ✅ | 834s | 88% | 832s | | L3 镜像拉取失败 | 19 | L3 ✅ | L3 | ✅ | 864s | 83% | 863s | | L3 镜像拉取失败 | 20 | L3 ✅ | L3 | ✅ | 726s | 83% | 724s | | L3 镜像拉取失败 | 21 | L3 ✅ | L3 | ✅ | 636s | 80% | 638s | | L3 镜像拉取失败 | 22 | L3 ✅ | L3 | ✅ | 348s | 100% | 351s | | L3 镜像拉取失败 | 25 | L3 ✅ | L3 | ✅ | 258s | 75% | 257s | | L3 镜像拉取失败 | 24 | L3 ✅ | L3 | ✅ | 456s | 80% | 458s | | L3 镜像拉取失败 | 23 | L3 ✅ | L3 | ✅ | 552s | 88% | 552s | | L3 镜像拉取失败 | 28 | L3 ✅ | L3 | ✅ | 222s | 100% | 225s | | L3 镜像拉取失败 | 27 | L3 ✅ | L3 | ✅ | 312s | 100% | 312s | | L3 镜像拉取失败 | 26 | L3 ✅ | L3 | ✅ | 558s | 80% | 556s | | L3 镜像拉取失败 | 29 | L3 ✅ | L3 | ✅ | 336s | 86% | 337s | | L3 镜像拉取失败 | 33 | L3 ✅ | L3 | ✅ | 354s | 78% | 354s | | L3 镜像拉取失败 | 32 | L3 ✅ | L3 | ✅ | 468s | 100% | 470s | | L3 镜像拉取失败 | 31 | L3 ✅ | L3 | ✅ | 534s | 86% | 535s | | L3 镜像拉取失败 | 30 | L3 ✅ | L3 | ✅ | 588s | 100% | 588s | | L3 镜像拉取失败 | 34 | L3 ✅ | L3 | ✅ | 354s | 100% | 356s | | L3 镜像拉取失败 | 39 | L3 ✅ | L3 | ✅ | 336s | 100% | 336s | | L3 镜像拉取失败 | 36 | L3 ✅ | L3 | ✅ | 480s | 80% | 480s | | L3 镜像拉取失败 | 35 | L3 ✅ | L3 | ✅ | 570s | 100% | 570s | | L3 镜像拉取失败 | 37 | L3 ✅ | L3 | ✅ | 624s | 100% | 621s | | L3 镜像拉取失败 | 38 | L3 ✅ | L3 | ✅ | 648s | 100% | 650s | | L3 镜像拉取失败 | 40 | L3 ✅ | L3 | ✅ | 414s | 60% | 417s | | L3 镜像拉取失败 | 43 | L3 ✅ | L3 | ✅ | 306s | 78% | 306s | | L3 镜像拉取失败 | 42 | L3 ✅ | L3 | ✅ | 492s | 80% | 493s | | L3 镜像拉取失败 | 41 | L3 ✅ | L3 | ✅ | 666s | 88% | 667s | | L3 镜像拉取失败 | 44 | L3 ✅ | L3 | ✅ | 522s | 86% | 520s | | L3 镜像拉取失败 | 46 | L3 ✅ | L3 | ✅ | 384s | 100% | 387s | | L3 镜像拉取失败 | 47 | L3 ✅ | L3 | ✅ | 354s | 83% | 353s | | L3 镜像拉取失败 | 45 | L3 ✅ | L3 | ✅ | 498s | 100% | 498s | | L3 镜像拉取失败 | 48 | L3 ✅ | L3 | ✅ | 354s | 100% | 354s | | L3 镜像拉取失败 | 50 | L3 ✅ | L3 | ✅ | 318s | 80% | 318s | | L3 镜像拉取失败 | 49 | L3 ✅ | L3 | ✅ | 438s | 100% | 437s |
────────────────────────────────────────────────────────────────────── 场景汇总 ────────────────────────────────────────────────────────────────────── | 场景 | 层级准确 | Runbook | MTTR | 证据率 | |------------------------|------------|------------|------------|------------| | L3 镜像拉取失败 | 50/50 | 50/50 | 487s | 88% |
========================================================== 质量指标汇总 ========================================================== | 指标 | 阈值 | 实际 | 状态 | |----------------------|--------------|--------------|----------| | MTTR | < 15m | 8.1m | ✅ | | 层级准确率 | >= 80% | 100.0% | ✅ | | Runbook 覆盖率 | >= 80% | 100.0% | ✅ | | 证据采集率 | >= 80% | 88.0% | ✅ |
l0 场景,创建一个已知的logfile的异常
==================================================================== AIOps Copilot E2E 准确率报告(盲测模式) ==================================================================== 场景数: 1 | 总运行: 50 | 成功: 50 | 失败: 0 总耗时: 3586s (59.8m)
────────────────────────────────────────────────────────────────────── 运行明细 ────────────────────────────────────────────────────────────────────── | 场景 | # | 层级 | 期望 | Runbook | MTTR | 证据 | 耗时 | |--------------------|-----|--------|--------|-------|---------|---------|---------| | L0 存储卷超限驱逐 | 4 | L0 ✅ | L0 | ✅ | 252s | 80% | 254s | | L0 存储卷超限驱逐 | 3 | L0 ✅ | L0 | ✅ | 258s | 100% | 260s | | L0 存储卷超限驱逐 | 1 | L0 ✅ | L0 | ✅ | 264s | 100% | 266s | | L0 存储卷超限驱逐 | 5 | L0 ✅ | L0 | ✅ | 318s | 80% | 320s | | L0 存储卷超限驱逐 | 2 | L0 ✅ | L0 | ✅ | 330s | 100% | 330s | | L0 存储卷超限驱逐 | 7 | L0 ✅ | L0 | ✅ | 324s | 80% | 322s | | L0 存储卷超限驱逐 | 8 | L0 ✅ | L0 | ✅ | 318s | 80% | 319s | | L0 存储卷超限驱逐 | 6 | L0 ✅ | L0 | ✅ | 372s | 86% | 373s | | L0 存储卷超限驱逐 | 10 | L0 ✅ | L0 | ✅ | 312s | 83% | 314s | | L0 存储卷超限驱逐 | 9 | L0 ✅ | L0 | ✅ | 372s | 80% | 374s | | L0 存储卷超限驱逐 | 12 | L0 ✅ | L0 | ✅ | 282s | 60% | 279s | | L0 存储卷超限驱逐 | 11 | L0 ✅ | L0 | ✅ | 288s | 80% | 286s | | L0 存储卷超限驱逐 | 14 | L0 ✅ | L0 | ✅ | 324s | 100% | 321s | | L0 存储卷超限驱逐 | 15 | L0 ✅ | L0 | ✅ | 294s | 67% | 295s | | L0 存储卷超限驱逐 | 13 | L0 ✅ | L0 | ✅ | 366s | 86% | 365s | | L0 存储卷超限驱逐 | 16 | L0 ✅ | L0 | ✅ | 294s | 100% | 292s | | L0 存储卷超限驱逐 | 17 | L0 ✅ | L0 | ✅ | 294s | 100% | 296s | | L0 存储卷超限驱逐 | 20 | L0 ✅ | L0 | ✅ | 306s | 80% | 307s | | L0 存储卷超限驱逐 | 19 | L0 ✅ | L0 | ✅ | 312s | 80% | 311s | | L0 存储卷超限驱逐 | 18 | L0 ✅ | L0 | ✅ | 342s | 67% | 342s | | L0 存储卷超限驱逐 | 21 | L0 ✅ | L0 | ✅ | 336s | 83% | 334s | | L0 存储卷超限驱逐 | 22 | L0 ✅ | L0 | ✅ | 450s | 83% | 450s | | L0 存储卷超限驱逐 | 24 | L0 ✅ | L0 | ✅ | 348s | 80% | 346s | | L0 存储卷超限驱逐 | 23 | L0 ✅ | L0 | ✅ | 366s | 83% | 368s | | L0 存储卷超限驱逐 | 25 | L0 ✅ | L0 | ✅ | 384s | 100% | 385s | | L0 存储卷超限驱逐 | 26 | L0 ✅ | L0 | ✅ | 372s | 86% | 374s | | L0 存储卷超限驱逐 | 27 | L0 ✅ | L0 | ✅ | 390s | 80% | 388s | | L0 存储卷超限驱逐 | 28 | L0 ✅ | L0 | ✅ | 366s | 83% | 366s | | L0 存储卷超限驱逐 | 29 | L0 ✅ | L0 | ✅ | 384s | 100% | 382s | | L0 存储卷超限驱逐 | 30 | L0 ✅ | L0 | ✅ | 384s | 100% | 386s | | L0 存储卷超限驱逐 | 31 | L0 ✅ | L0 | ✅ | 348s | 80% | 349s | | L0 存储卷超限驱逐 | 32 | L0 ✅ | L0 | ✅ | 336s | 80% | 337s | | L0 存储卷超限驱逐 | 33 | L0 ✅ | L0 | ✅ | 372s | 80% | 372s | | L0 存储卷超限驱逐 | 34 | L0 ✅ | L0 | ✅ | 390s | 86% | 390s | | L0 存储卷超限驱逐 | 35 | L0 ✅ | L0 | ✅ | 372s | 80% | 369s | | L0 存储卷超限驱逐 | 36 | L0 ✅ | L0 | ✅ | 360s | 100% | 360s | | L0 存储卷超限驱逐 | 37 | L0 ✅ | L0 | ✅ | 378s | 83% | 376s | | L0 存储卷超限驱逐 | 38 | L0 ✅ | L0 | ✅ | 360s | 80% | 360s | | L0 存储卷超限驱逐 | 39 | L0 ✅ | L0 | ✅ | 360s | 83% | 359s | | L0 存储卷超限驱逐 | 40 | L0 ✅ | L0 | ✅ | 372s | 80% | 371s | | L0 存储卷超限驱逐 | 41 | L0 ✅ | L0 | ✅ | 348s | 75% | 349s | | L0 存储卷超限驱逐 | 42 | L0 ✅ | L0 | ✅ | 330s | 83% | 332s | | L0 存储卷超限驱逐 | 44 | L0 ✅ | L0 | ✅ | 342s | 86% | 343s | | L0 存储卷超限驱逐 | 43 | L0 ✅ | L0 | ✅ | 450s | 100% | 450s | | L0 存储卷超限驱逐 | 45 | L0 ✅ | L0 | ✅ | 390s | 80% | 390s | | L0 存储卷超限驱逐 | 46 | L0 ✅ | L0 | ✅ | 480s | 100% | 479s | | L0 存储卷超限驱逐 | 47 | L0 ✅ | L0 | ✅ | 372s | 86% | 373s | | L0 存储卷超限驱逐 | 48 | L0 ✅ | L0 | ✅ | 306s | 80% | 304s | | L0 存储卷超限驱逐 | 49 | L0 ✅ | L0 | ✅ | 306s | 80% | 305s | | L0 存储卷超限驱逐 | 50 | L0 ✅ | L0 | ✅ | 378s | 88% | 378s |
────────────────────────────────────────────────────────────────────── 场景汇总 ────────────────────────────────────────────────────────────────────── | 场景 | 层级准确 | Runbook | MTTR | 证据率 | |------------------------|------------|------------|------------|------------| | L0 存储卷超限驱逐 | 50/50 | 50/50 | 347s | 85% |
========================================================== 质量指标汇总 ========================================================== | 指标 | 阈值 | 实际 | 状态 | |----------------------|--------------|--------------|----------| | MTTR | < 15m | 5.8m | ✅ | | 层级准确率 | >= 80% | 100.0% | ✅ | | Runbook 覆盖率 | >= 80% | 100.0% | ✅ | | 证据采集率 | >= 80% | 85.1% | ✅ |
📁 报告目录: testreports/20260422_133807/
l2 场景,创建一个已知的oomkilled的异常
==================================================================== AIOps Copilot E2E 准确率报告(盲测模式) ==================================================================== 场景数: 1 | 总运行: 50 | 成功: 50 | 失败: 0 总耗时: 3045s (50.8m)
────────────────────────────────────────────────────────────────────── 运行明细 ────────────────────────────────────────────────────────────────────── | 场景 | # | 层级 | 期望 | Runbook | MTTR | 证据 | 耗时 | |--------------------|-----|--------|--------|-------|---------|---------|---------| | L2 OOMKilled | 5 | L2 ✅ | L2 | ✅ | 240s | 80% | 240s | | L2 OOMKilled | 1 | L2 ✅ | L2 | ✅ | 270s | 80% | 271s | | L2 OOMKilled | 4 | L2 ✅ | L2 | ✅ | 336s | 100% | 335s | | L2 OOMKilled | 2 | L2 ✅ | L2 | ✅ | 342s | 100% | 341s | | L2 OOMKilled | 3 | L2 ✅ | L2 | ✅ | 342s | 100% | 344s | | L2 OOMKilled | 6 | L2 ✅ | L2 | ✅ | 282s | 80% | 283s | | L2 OOMKilled | 7 | L2 ✅ | L2 | ✅ | 294s | 80% | 297s | | L2 OOMKilled | 9 | L2 ✅ | L2 | ✅ | 264s | 83% | 266s | | L2 OOMKilled | 10 | L2 ✅ | L2 | ✅ | 270s | 100% | 269s | | L2 OOMKilled | 8 | L2 ✅ | L2 | ✅ | 372s | 86% | 370s | | L2 OOMKilled | 12 | L2 ✅ | L2 | ✅ | 282s | 83% | 283s | | L2 OOMKilled | 11 | L2 ✅ | L2 | ✅ | 330s | 83% | 329s | | L2 OOMKilled | 14 | L2 ✅ | L2 | ✅ | 276s | 83% | 278s | | L2 OOMKilled | 13 | L2 ✅ | L2 | ✅ | 330s | 83% | 332s | | L2 OOMKilled | 15 | L2 ✅ | L2 | ✅ | 312s | 67% | 313s | | L2 OOMKilled | 16 | L2 ✅ | L2 | ✅ | 234s | 60% | 231s | | L2 OOMKilled | 17 | L2 ✅ | L2 | ✅ | 252s | 60% | 252s | | L2 OOMKilled | 19 | L2 ✅ | L2 | ✅ | 276s | 80% | 275s | | L2 OOMKilled | 18 | L2 ✅ | L2 | ✅ | 360s | 100% | 359s | | L2 OOMKilled | 20 | L2 ✅ | L2 | ✅ | 270s | 100% | 269s | | L2 OOMKilled | 21 | L2 ✅ | L2 | ✅ | 288s | 80% | 288s | | L2 OOMKilled | 22 | L2 ✅ | L2 | ✅ | 282s | 83% | 283s | | L2 OOMKilled | 23 | L2 ✅ | L2 | ✅ | 324s | 100% | 321s | | L2 OOMKilled | 24 | L2 ✅ | L2 | ✅ | 330s | 100% | 327s | | L2 OOMKilled | 25 | L2 ✅ | L2 | ✅ | 300s | 75% | 299s | | L2 OOMKilled | 27 | L2 ✅ | L2 | ✅ | 300s | 80% | 300s | | L2 OOMKilled | 26 | L2 ✅ | L2 | ✅ | 354s | 83% | 354s | | L2 OOMKilled | 28 | L2 ✅ | L2 | ✅ | 246s | 100% | 243s | | L2 OOMKilled | 29 | L2 ✅ | L2 | ❌ | 282s | 83% | 281s | | L2 OOMKilled | 30 | L2 ✅ | L2 | ✅ | 306s | 100% | 308s | | L2 OOMKilled | 31 | L2 ✅ | L2 | ✅ | 294s | 100% | 295s | | L2 OOMKilled | 33 | L2 ✅ | L2 | ✅ | 222s | 80% | 220s | | L2 OOMKilled | 32 | L2 ✅ | L2 | ✅ | 282s | 80% | 284s | | L2 OOMKilled | 34 | L2 ✅ | L2 | ✅ | 258s | 100% | 258s | | L2 OOMKilled | 35 | L2 ✅ | L2 | ✅ | 288s | 86% | 287s | | L2 OOMKilled | 38 | L2 ✅ | L2 | ✅ | 252s | 100% | 249s | | L2 OOMKilled | 36 | L2 ✅ | L2 | ✅ | 312s | 83% | 315s | | L2 OOMKilled | 37 | L2 ✅ | L2 | ✅ | 330s | 88% | 329s | | L2 OOMKilled | 39 | L2 ✅ | L2 | ✅ | 300s | 80% | 298s | | L2 OOMKilled | 40 | L2 ✅ | L2 | ✅ | 288s | 80% | 291s | | L2 OOMKilled | 41 | L2 ✅ | L2 | ✅ | 240s | 80% | 241s | | L2 OOMKilled | 42 | L2 ✅ | L2 | ✅ | 324s | 86% | 322s | | L2 OOMKilled | 43 | L2 ✅ | L2 | ✅ | 342s | 100% | 340s | | L2 OOMKilled | 44 | L2 ✅ | L2 | ✅ | 330s | 83% | 328s | | L2 OOMKilled | 46 | L2 ✅ | L2 | ✅ | 270s | 80% | 272s | | L2 OOMKilled | 45 | L2 ✅ | L2 | ✅ | 330s | 83% | 328s | | L2 OOMKilled | 48 | L2 ✅ | L2 | ✅ | 252s | 80% | 253s | | L2 OOMKilled | 47 | L2 ✅ | L2 | ✅ | 318s | 83% | 318s | | L2 OOMKilled | 49 | L2 ✅ | L2 | ✅ | 294s | 80% | 296s | | L2 OOMKilled | 50 | L2 ✅ | L2 | ✅ | 276s | 80% | 276s |
────────────────────────────────────────────────────────────────────── 场景汇总 ────────────────────────────────────────────────────────────────────── | 场景 | 层级准确 | Runbook | MTTR | 证据率 | |------------------------|------------|------------|------------|------------| | L2 OOMKilled | 50/50 | 49/50 | 295s | 86% |
========================================================== 质量指标汇总 ========================================================== | 指标 | 阈值 | 实际 | 状态 | |----------------------|--------------|--------------|----------| | MTTR | < 15m | 4.9m | ✅ | | 层级准确率 | >= 80% | 100.0% | ✅ | | Runbook 覆盖率 | >= 80% | 98.0% | ✅ | | 证据采集率 | >= 80% | 85.7% | ✅ |
📁 报告目录: testreports/20260422_100401/
L1 场景,创建一个已知的taintnode的异常
==================================================================== AIOps Copilot E2E 准确率报告(盲测模式) ==================================================================== 场景数: 1 | 总运行: 50 | 成功: 50 | 失败: 0 总耗时: 2252s (37.5m)
────────────────────────────────────────────────────────────────────── 运行明细 ────────────────────────────────────────────────────────────────────── | 场景 | # | 层级 | 期望 | Runbook | MTTR | 证据 | 耗时 | |--------------------|-----|--------|--------|-------|---------|---------|---------| | L1 节点 NotReady/Tai | 5 | L1 ✅ | L1 | ✅ | 240s | 80% | 240s | | L1 节点 NotReady/Tai | 4 | L1 ✅ | L1 | ❌ | 312s | 80% | 314s | | L1 节点 NotReady/Tai | 1 | L3 ❌ | L1 | ❌ | 318s | 100% | 320s | | L1 节点 NotReady/Tai | 2 | L1 ✅ | L1 | ✅ | 336s | 60% | 336s | | L1 节点 NotReady/Tai | 3 | L1 ✅ | L1 | ✅ | 354s | 83% | 352s | | L1 节点 NotReady/Tai | 6 | L1 ✅ | L1 | ❌ | 282s | 67% | 282s | | L1 节点 NotReady/Tai | 8 | L1 ✅ | L1 | ✅ | 270s | 80% | 273s | | L1 节点 NotReady/Tai | 10 | L1 ✅ | L1 | ✅ | 240s | 100% | 242s | | L1 节点 NotReady/Tai | 7 | L1 ✅ | L1 | ✅ | 300s | 80% | 303s | | L1 节点 NotReady/Tai | 9 | L1 ✅ | L1 | ❌ | 318s | 86% | 317s | | L1 节点 NotReady/Tai | 11 | L1 ✅ | L1 | ❌ | 282s | 100% | 281s | | L1 节点 NotReady/Tai | 13 | L1 ✅ | L1 | ✅ | 216s | 100% | 215s | | L1 节点 NotReady/Tai | 12 | L1 ✅ | L1 | ✅ | 288s | 80% | 289s | | L1 节点 NotReady/Tai | 14 | L1 ✅ | L1 | ✅ | 312s | 100% | 311s | | L1 节点 NotReady/Tai | 15 | L1 ✅ | L1 | ✅ | 282s | 100% | 284s | | L1 节点 NotReady/Tai | 17 | L1 ✅ | L1 | ✅ | 252s | 80% | 250s | | L1 节点 NotReady/Tai | 16 | L1 ✅ | L1 | ✅ | 282s | 80% | 284s | | L1 节点 NotReady/Tai | 18 | L1 ✅ | L1 | ✅ | 252s | 80% | 251s | | L1 节点 NotReady/Tai | 19 | L1 ✅ | L1 | ✅ | 246s | 80% | 246s | | L1 节点 NotReady/Tai | 20 | L1 ✅ | L1 | ✅ | 300s | 100% | 302s | | L1 节点 NotReady/Tai | 21 | L1 ✅ | L1 | ✅ | 246s | 80% | 248s | | L1 节点 NotReady/Tai | 22 | L1 ✅ | L1 | ✅ | 234s | 80% | 235s | | L1 节点 NotReady/Tai | 23 | L1 ✅ | L1 | ❌ | 222s | 80% | 224s | | L1 节点 NotReady/Tai | 24 | L1 ✅ | L1 | ❌ | 186s | 100% | 187s | | L1 节点 NotReady/Tai | 25 | L0 ❌ | L1 | ✅ | 138s | 86% | 136s | | L1 节点 NotReady/Tai | 26 | L1 ✅ | L1 | ❌ | 102s | 86% | 105s | | L1 节点 NotReady/Tai | 27 | L1 ✅ | L1 | ✅ | 96s | 100% | 97s | | L1 节点 NotReady/Tai | 28 | L1 ✅ | L1 | ❌ | 72s | 100% | 73s | | L1 节点 NotReady/Tai | 29 | L0 ❌ | L1 | ❌ | 120s | 100% | 120s | | L1 节点 NotReady/Tai | 30 | L1 ✅ | L1 | ❌ | 114s | 100% | 116s | | L1 节点 NotReady/Tai | 32 | L1 ✅ | L1 | ✅ | 84s | 100% | 83s | | L1 节点 NotReady/Tai | 31 | L1 ✅ | L1 | ✅ | 96s | 100% | 94s | | L1 节点 NotReady/Tai | 33 | L1 ✅ | L1 | ✅ | 108s | 90% | 110s | | L1 节点 NotReady/Tai | 34 | L1 ✅ | L1 | ❌ | 90s | 40% | 90s | | L1 节点 NotReady/Tai | 36 | L1 ✅ | L1 | ❌ | 96s | 100% | 94s | | L1 节点 NotReady/Tai | 37 | L1 ✅ | L1 | ❌ | 90s | 100% | 92s | | L1 节点 NotReady/Tai | 35 | L1 ✅ | L1 | ❌ | 120s | 100% | 118s | | L1 节点 NotReady/Tai | 40 | UNKNOWN❌ | L1 | ❌ | 41s | N/A | 41s | | L1 节点 NotReady/Tai | 39 | L1 ✅ | L1 | ❌ | 108s | 100% | 105s | | L1 节点 NotReady/Tai | 42 | L1 ✅ | L1 | ❌ | 84s | 83% | 83s | | L1 节点 NotReady/Tai | 41 | L1 ✅ | L1 | ✅ | 102s | 100% | 102s | | L1 节点 NotReady/Tai | 43 | L1 ✅ | L1 | ✅ | 90s | 100% | 92s | | L1 节点 NotReady/Tai | 44 | L1 ✅ | L1 | ❌ | 96s | 67% | 93s | | L1 节点 NotReady/Tai | 45 | L1 ✅ | L1 | ❌ | 102s | 100% | 102s | | L1 节点 NotReady/Tai | 46 | L1 ✅ | L1 | ❌ | 102s | 83% | 100s | | L1 节点 NotReady/Tai | 47 | L1 ✅ | L1 | ❌ | 120s | 100% | 119s | | L1 节点 NotReady/Tai | 48 | L1 ✅ | L1 | ❌ | 114s | 100% | 115s | | L1 节点 NotReady/Tai | 49 | L1 ✅ | L1 | ❌ | 108s | 86% | 106s | | L1 节点 NotReady/Tai | 50 | L0 ❌ | L1 | ❌ | 144s | 100% | 143s | | L1 节点 NotReady/Tai | 38 | L1 ✅ | L1 | ❌ | 708s | 100% | 711s |
────────────────────────────────────────────────────────────────────── 场景汇总 ────────────────────────────────────────────────────────────────────── | 场景 | 层级准确 | Runbook | MTTR | 证据率 | |------------------------|------------|------------|------------|------------| | L1 节点 NotReady/Taint | 45/50 | 24/50 | 196s | 89% |
========================================================== 质量指标汇总 ========================================================== | 指标 | 阈值 | 实际 | 状态 | |----------------------|--------------|--------------|----------| | MTTR | < 15m | 3.3m | ✅ | | 层级准确率 | >= 80% | 90.0% | ✅ | | Runbook 覆盖率 | >= 80% | 48.0% | ❌ | | 证据采集率 | >= 80% | 89.3% | ✅ |
📁 报告目录: testreports/20260422_145208/
L4 场景创建一个已知的启动配置检验失败case
==================================================================== AIOps Copilot E2E 准确率报告(盲测模式) ==================================================================== 场景数: 1 | 总运行: 50 | 成功: 50 | 失败: 0 总耗时: 2634s (43.9m)
────────────────────────────────────────────────────────────────────── 运行明细 ────────────────────────────────────────────────────────────────────── | 场景 | # | 层级 | 期望 | Runbook | MTTR | 证据 | 耗时 | |--------------------|-----|--------|--------|-------|---------|---------|---------| | L4 应用启动配置校验失败 | 2 | L4 ✅ | L4 | ✅ | 114s | 86% | 113s | | L4 应用启动配置校验失败 | 3 | L4 ✅ | L4 | ✅ | 126s | 100% | 126s | | L4 应用启动配置校验失败 | 5 | L4 ✅ | L4 | ✅ | 144s | 100% | 142s | | L4 应用启动配置校验失败 | 1 | L4 ✅ | L4 | ✅ | 168s | 100% | 166s | | L4 应用启动配置校验失败 | 6 | L4 ✅ | L4 | ✅ | 120s | 100% | 117s | | L4 应用启动配置校验失败 | 8 | L4 ✅ | L4 | ✅ | 108s | 100% | 110s | | L4 应用启动配置校验失败 | 9 | L4 ✅ | L4 | ✅ | 138s | 100% | 140s | | L4 应用启动配置校验失败 | 11 | L4 ✅ | L4 | ✅ | 132s | 100% | 133s | | L4 应用启动配置校验失败 | 12 | L4 ✅ | L4 | ✅ | 180s | 100% | 178s | | L4 应用启动配置校验失败 | 4 | L4 ✅ | L4 | ❌ | 696s | 100% | 694s | | L4 应用启动配置校验失败 | 15 | L4 ✅ | L4 | ✅ | 31s | N/A | 31s | | L4 应用启动配置校验失败 | 7 | UNKNOWN❌ | L4 | ❌ | 612s | N/A | 613s | | L4 应用启动配置校验失败 | 16 | L4 ✅ | L4 | ✅ | 132s | 100% | 135s | | L4 应用启动配置校验失败 | 17 | L4 ✅ | L4 | ✅ | 132s | 100% | 132s | | L4 应用启动配置校验失败 | 18 | L4 ✅ | L4 | ✅ | 150s | 100% | 149s | | L4 应用启动配置校验失败 | 10 | L4 ✅ | L4 | ✅ | 780s | 75% | 780s | | L4 应用启动配置校验失败 | 19 | L4 ✅ | L4 | ✅ | 144s | 89% | 144s | | L4 应用启动配置校验失败 | 14 | L4 ✅ | L4 | ✅ | 612s | 100% | 611s | | L4 应用启动配置校验失败 | 20 | L4 ✅ | L4 | ✅ | 126s | 100% | 124s | | L4 应用启动配置校验失败 | 24 | L4 ✅ | L4 | ✅ | 180s | 100% | 183s | | L4 应用启动配置校验失败 | 25 | L4 ✅ | L4 | ✅ | 216s | 100% | 215s | | L4 应用启动配置校验失败 | 26 | L4 ✅ | L4 | ✅ | 168s | 100% | 171s | | L4 应用启动配置校验失败 | 13 | L4 ✅ | L4 | ✅ | 1338s | 86% | 1338s | | L4 应用启动配置校验失败 | 22 | L4 ✅ | L4 | ✅ | 780s | 100% | 783s | | L4 应用启动配置校验失败 | 21 | L4 ✅ | L4 | ✅ | 816s | 86% | 816s | | L4 应用启动配置校验失败 | 23 | L4 ✅ | L4 | ✅ | 732s | 100% | 733s | | L4 应用启动配置校验失败 | 27 | L4 ✅ | L4 | ✅ | 138s | 100% | 140s | | L4 应用启动配置校验失败 | 28 | L4 ✅ | L4 | ✅ | 156s | 100% | 153s | | L4 应用启动配置校验失败 | 30 | L4 ✅ | L4 | ✅ | 156s | 100% | 156s | | L4 应用启动配置校验失败 | 33 | L4 ✅ | L4 | ✅ | 108s | 80% | 111s | | L4 应用启动配置校验失败 | 31 | L4 ✅ | L4 | ✅ | 168s | 100% | 165s | | L4 应用启动配置校验失败 | 34 | L4 ✅ | L4 | ✅ | 108s | 100% | 105s | | L4 应用启动配置校验失败 | 36 | L4 ✅ | L4 | ✅ | 102s | 100% | 104s | | L4 应用启动配置校验失败 | 35 | L4 ✅ | L4 | ❌ | 120s | 86% | 117s | | L4 应用启动配置校验失败 | 38 | L4 ✅ | L4 | ✅ | 96s | 100% | 96s | | L4 应用启动配置校验失败 | 39 | L4 ✅ | L4 | ✅ | 126s | 100% | 127s | | L4 应用启动配置校验失败 | 37 | L4 ✅ | L4 | ✅ | 144s | 78% | 145s | | L4 应用启动配置校验失败 | 40 | L4 ✅ | L4 | ✅ | 108s | 100% | 107s | | L4 应用启动配置校验失败 | 42 | L4 ✅ | L4 | ✅ | 96s | 100% | 94s | | L4 应用启动配置校验失败 | 41 | L4 ✅ | L4 | ✅ | 108s | 100% | 107s | | L4 应用启动配置校验失败 | 43 | L4 ✅ | L4 | ✅ | 108s | 100% | 108s | | L4 应用启动配置校验失败 | 44 | L4 ✅ | L4 | ✅ | 108s | 100% | 109s | | L4 应用启动配置校验失败 | 45 | L4 ✅ | L4 | ✅ | 150s | 100% | 148s | | L4 应用启动配置校验失败 | 46 | L4 ✅ | L4 | ✅ | 84s | 100% | 83s | | L4 应用启动配置校验失败 | 29 | L4 ✅ | L4 | ✅ | 702s | 100% | 701s | | L4 应用启动配置校验失败 | 47 | L4 ✅ | L4 | ✅ | 90s | 100% | 91s | | L4 应用启动配置校验失败 | 32 | L4 ✅ | L4 | ✅ | 702s | 100% | 704s | | L4 应用启动配置校验失败 | 50 | L4 ✅ | L4 | ✅ | 114s | 71% | 117s | | L4 应用启动配置校验失败 | 49 | L4 ✅ | L4 | ❌ | 126s | 100% | 126s | | L4 应用启动配置校验失败 | 48 | L4 ✅ | L4 | ✅ | 150s | 100% | 148s |
────────────────────────────────────────────────────────────────────── 场景汇总 ────────────────────────────────────────────────────────────────────── | 场景 | 层级准确 | Runbook | MTTR | 证据率 | |------------------------|------------|------------|------------|------------| | L4 应用启动配置校验失败 | 49/50 | 46/50 | 259s | 97% |
========================================================== 质量指标汇总 ========================================================== | 指标 | 阈值 | 实际 | 状态 | |----------------------|--------------|--------------|----------| | MTTR | < 15m | 4.3m | ✅ | | 层级准确率 | >= 80% | 98.0% | ✅ | | Runbook 覆盖率 | >= 80% | 92.0% | ✅ | | 证据采集率 | >= 80% | 96.6% | ✅ |
📁 报告目录: testreports/20260422_153910/
所有的测试报告在项目地址http://192.168.1.63/wanghuhu/holmegpt-agent下
小模型测试结果
由于上述的开发测试是基于deepseek -chat模型测试得到的结果,但由于实际需求,我们的真实使用场景是基于Qwen3-32B-AWQ去做,因此在结构上进行了大量的调整,以及对工具和上下文进行了有效的裁剪。下面给出在优化架构设计后的小模型运维场景与结果输出。
小模型的测试结果也是从上述4个指标维度进行审查,不过我们讲标准设定为了60%并且按照异常case的group进行区分。
总的测试结果如下
下面是每一个group下每个case的具体测试结果
由于测试的量比较大分开了2次测试。总体的加权平均结果为,根因准确率82.2%,runbooks覆盖率99.6%,平均证据里90.7%,平均mttr5.4分钟。
涉及到的场景包括
Voluemount
-
Volume-mount-missing-configmap
-
Volume-mount-missing-secret
-
Volume-mount-configmap-missing-key
-
Volument-mount-missing-pvc
-
Volume-mount-hostpath-missing
Pending
-
Pending-nodeselector-mismatch
-
Pending-insufficient-cpu
-
Pending-insufficient-memory
-
Pending-missing-pvc
Imagepull
-
Imagepull-invalid-registry
-
Imagepull-image-not-found
-
Imagepull-missing-pull-secret
Crashloop
-
Crashloop-exit-code-nonzero
-
Crashloop-command-not-found
-
Crashloop-config-file-missing
Configerror
-
Configerror-env-missing
-
Configeroor-configmap-key-missing-env
-
Configerror-secret-key-missing-env
Oomkilled
- Oomkilled-memory-limit-too-low
Notready
-
Notready-readiness-probe-failed
-
Notready-liveness-probe-failed
Terminating
-
Teriminating-finalizer-stuck
-
Terminating-prestop-stuck
-
Teriminating-long-grace-period
Sandbox
- Sandobox-runtimeclass-invalid
Evicted
- Evicted-ephemeral-storage
作为对比,我们在相同架构下使用deepseek-chat模型进行同样的测试。
由于资源限制,deepseek-chat模型我们测试2个group最后得到的结果为。总的根因准确率为94.7%,runbooks覆盖率为99.6%,平均证据采集率86.4%,平均mttr为1.2m
涉及到的group为
Pending
-
Nodeslelector-mismatch
-
Insufficient-cpu
-
Insufficient-memoryt
-
Missing-pvc
Volumemoumt
-
Volume-mount-missing-configmap
-
Volume-mount-missing-secret
-
Volume-mount-configmap-missing-key
-
Volume-mount-missing-pvc
-
Volume-mount-hostpath-missing
测试总结
通过上述内容,最后测的03最初版本设计下使用云端官方deepseekapi的平均指标结果为:
MTTR:5.28 min
层级准确率:97.6%
Runbook 覆盖率:87.6%
证据采集率:88.9%
06版本的结果为
小模型:
MTTR:5.4min
根因准确率:82.2%
Runbook 覆盖率:90.7%
证据采集率:90.7%
06版本的deepseek大模型:
MTTR:1.2 min
层级准确率:94.7%
Runbook 覆盖率:99.6%
证据采集率:86.4%
支持能力
附录
参考文档
https://holmesgpt.dev/latest/