OpenRCA 软件故障根因分析
让大模型跨指标、链路与日志定位软件故障根因。
README 说明了模型供应商配置、遥测数据位置、结果目录和评测文件流向,并由官方组织、论文引文及 MIT 版权信息提供清晰归属,因此来源归属满分。依赖均固定版本,且 SECURITY.md 提供正式漏洞报告渠道,但没有依赖审计、漏洞处置或升级策略。未见最小权限设计、操作前确认、沙箱、网络访问边界或回滚机制;API 密钥以明文 YAML 示例配置,自有隐私遥测虽被提及,却没有脱敏、保留、传输或日志保护说明。外部 API 调用及本地文件写入可从命令推知,但数据流并未完整描述。
安装、数据布局、预测格式、评测、复现和重建说明总体一致,并明确 Python、存储、内存、时区和采样限制。依赖被精确固定,Python 版本也明确,但数据集依赖外部 Google Drive,未提供校验和、镜像或离线保障。FAQ 覆盖若干常见结果偏差,却没有展示代理运行时错误处理、重试、超时、部分失败或可操作的诊断消息。
受众和场景界定充分:面向软件运维根因分析研究,覆盖 Telecom、Bank、Market、自定义代理及自有遥测重建。基准、RCA-agent、输入输出和禁止读取真值的评审约束较清楚,但模型能力、安全边界和不适用场景不完整。CLI 入口和参数具体,触发精度良好;环境方面给出 Python 版本、目录结构、资源下限及时区,但缺少操作系统、提供商兼容性、网络条件和更细的部署要求。
README 按安装、评测、复现、重建、FAQ、引文和声明组织,命令及示例丰富,FAQ 尤其具体。命名大体稳定,但 dataset/datasets、record.csv/records.csv 及 TESTS 占位符会带来轻微歧义。已披露高资源需求、时区、采样和网络故障分析限制,但没有系统性的已知问题清单。MIT 许可证完整明确。未提供版本发布、标签或变更日志材料;官方 Microsoft 归属和安全响应路径明确,但没有列出具体维护者、维护节奏或一般问题升级路径。
预测 JSON 结构、CSV 最低字段、故障排序规则、报告输出位置和完整命令示例使产物可直接用于评测,因此输出可用性充分。RCA-agent 通过 Python 检索和分析减少长上下文处理,体现了相对直接提示的增量价值,但给定材料没有比较实验细节。README 坦诚要求至少约 80GB 存储和 32GB 内存,并暗示外部模型 API 成本;仍缺少令牌、时间、费用和资源收益的量化。
论文引文、固定模型名称、归档预测路径、明确命令、数据模式和许可证使主要陈述可追溯。README、LICENSE、SECURITY.md 和固定依赖表能交叉印证归属、许可、安装与治理信息,但没有论文正文、测试文件或结果表来交叉验证性能和可扩展性主张。文档通常区分基准、基线、示例模型和免责声明,不过“避免过长上下文”“可扩展”等表述在所给文件中缺乏直接证据,事实与推断分离尚非完整。
- API 密钥示例保存在明文 YAML 中;应避免提交该文件,并在使用真实遥测前确认密钥管理、日志脱敏和数据传输策略。
- 运行会调用外部模型 API 并在本地创建 test 结果与监控文件,但材料未说明逐次确认、网络边界、保留策略或回滚方式。
- 数据集来自外部 Google Drive,未给出校验和或镜像;下载后应独立验证完整性与来源。
- 固定依赖版本不等于已完成安全审计;材料没有漏洞扫描结果、锁文件哈希或依赖更新政策。
- 该项目是研究基准及基线,而非已证明适用于生产事故响应的自治代理;不要将论文定位或 Microsoft 归属当作运行安全与结果正确性的保证。
这个 Agent 能做什么,适合哪些场景?
OpenRCA 是一个面向软件运行场景的根因分析基准,并提供 RCA-agent 作为基线实现。系统接收自然语言查询,分析 KPI 时间序列、依赖追踪图和半结构化日志,以确定故障发生时间、组件及原因。RCA-agent 使用 Python 检索和分析遥测数据,避免把全部数据直接塞入模型上下文。仓库提供数据集评测、论文结果复现以及从现有或私有遥测记录生成新任务的命令行入口。它在本地 Python 环境中运行,数据和结果均通过文件系统管理;模型调用则需要配置相应 API。
典型流程从 dataset/{SYSTEM} 下的 query.csv、record.csv 以及按日期组织的 telemetry/log、telemetry/metric 和 telemetry/trace 开始,其中系统可为 Telecom、Bank 或 Market。RCA-agent 通过 Python 检索并分析这些遥测数据,再让模型推理根因。python -m rca.run_agent_standard --dataset ... 运行标准代理;run_baseline_balanced 和 run_baseline_oracle 可运行其他论文基线。预测以 CSV 保存,至少包含 prediction 字段;字段值是 JSON 风格字符串,按时间顺序列出每次故障的 root cause occurrence datetime、root cause component 和 root cause reason。python -m main.evaluate 将预测文件与真值 query.csv 对照并生成报告 CSV。python -m main.generate 可依据 main/task_specification.json 和与 OpenRCA record.csv 一致的记录结构生成新查询任务。
- 研究大模型软件运维能力的团队,用统一数据和输出结构评测模型在多模态遥测上的根因定位表现。
- 开发故障诊断代理的工程师,在 Telecom、Bank 或 Market 数据集上运行 RCA-agent,并与 balanced 或 oracle 基线比较。
- 可观测性研究人员,需要联合分析 KPI、分布式追踪和日志,而非只依靠单一遥测来源。
- 拥有私有遥测记录的团队,希望按照 OpenRCA 的
record.csv结构和任务规范构造内部根因分析任务。 - 复现 ICLR 2025 论文结果的研究者,需要运行已归档预测评测或重新执行论文中的实验配置。
这个 Agent 有哪些优点和局限?
- 同时覆盖 KPI 时间序列、依赖追踪图和半结构化日志,适合检验跨遥测类型推理能力。
- RCA-agent 使用 Python 按需检索和分析数据,可减少模型直接处理超长上下文的压力。
- 提供明确的预测结构、评测命令和报告输出,便于比较不同模型或自定义代理。
- 除复现实验外,还支持按照任务规范和兼容的记录结构生成新任务。
- 完整数据与代理运行资源需求较高,官方建议至少 80GB 存储和 32GB 内存。
- 遥测数据不随空的
dataset/目录直接提供,必须另行从 Google Drive 下载并正确放置。 - 模型实验需要外部 API 配置和凭据,可能产生提供商调用费用;来源没有给出费用估算。
- 时间统一使用 UTC+8,忽略时区转换会造成时间和组件匹配错误。
- 网络故障通常无法只凭 KPI 找到,需要分析追踪中父子 span 的延迟关系。
如何安装或部署这个 Agent?
需要 Python 3.10 或 3.11。建议准备至少 80GB 存储空间和 32GB 内存。
# 可选:创建 Conda 环境
conda create -n openrca python=3.10
conda activate openrca
git clone https://github.com/microsoft/OpenRCA.git
cd OpenRCA
pip install -r requirements.txt从仓库给出的 Google Drive 下载遥测数据并放入空的 dataset/ 目录。若要调用模型,还需在 rca/api_config.yaml 中填写提供商、模型和 API 密钥;仓库给出的 OpenAI 示例为 SOURCE: "OpenAI"、MODEL: "gpt-4o-2024-05-13" 和 API_KEY: "sk-xxxxxxxxxxxxxx"。
如何使用这个 Agent?
首次运行可选择 Bank 数据集:
python -m rca.run_agent_standard --dataset BankMarket 的两个 cloudbed 需分别执行:
python -m rca.run_agent_standard --dataset Market/cloudbed-1
python -m rca.run_agent_standard --dataset Market/cloudbed-2运行后,结果和监控文件会写入新建的 test 目录。评测自有预测时执行:
python -m main.evaluate \
-p path/to/prediction.csv \
-q dataset/Bank/query.csv \
-r test/report.csv预测 CSV 至少要有 prediction 字段。生成新任务可运行:
python -m main.generate \
-s main/task_specification.json \
-r path/to/record.csv \
-q path/to/query.csv \
-t UTC+8也可用 python -m main.generate -d True 随机重新生成 OpenRCA 查询。
这个 Agent 与同类方案有什么区别?
仓库将 RCA-agent 与 run_baseline_balanced 和 run_baseline_oracle 两类论文基线并列提供。RCA-agent 的明确区别是使用 Python 检索和分析遥测,减少模型直接处理超长上下文的需要;来源未给出这些方案之间的量化结果,因此不能据此断言哪一种效果更好。
常见问题
运行是否需要付费模型 API?
可以评测自己的代理吗?
prediction 字段。提交自定义代理结果时需说明代理是否开源;非开源代理还要提供工具、MCP 或技能说明,以供检查其是否读取了 records.csv 中的真值。为什么故障时间与记录对不上?
它能直接诊断任何组织的私有遥测吗?
record.csv 保持一致,并需要修改 main/task_specification.json。来源没有声称可无转换接入任意现有可观测性平台。部署结构在三个数据集中是否一致?
metric_container.csv;Telecom 的对应关系由仓库链接的表格提供。