引言
在上一篇文章中,我们介绍了 OpenSRE 的安装与基础用法。本文将深入探讨三个实战核心话题:如何高效使用 OpenSRE 进行生产故障排查、使用过程中的关键注意事项,以及如何理解和运用它生成的调查报告。
项目地址:GitHub - Tracer-Cloud/OpenSRE
阅读本文需要你已经完成
opensre onboard初始化配置。如果还没有,请先参考上一篇安装指南。
一、交互式 Shell 深度使用
1.1 会话管理
启动 OpenSRE 交互式 Shell(需要 TTY 终端):
opensre |
进入后在提示符下直接描述故障现象,OpenSRE 会自动拉取关联数据并启动调查。关键命令:
| 命令 | 作用 | 使用场景 |
|---|---|---|
/help |
查看完整帮助 | 忘记命令时 |
/status |
查看当前调查状态 | 调查中途确认进度 |
/clear |
清屏 | 输出过多时 |
/reset |
重置会话 | 开始新的独立调查 |
/trust |
启用信任模式 | 允许执行修复动作 |
/effort low|medium|high|xhigh|max |
调推理深度 | 控制 AI 思考深度与成本 |
/exit |
退出 | 结束会话 |
1.2 /effort 推理深度详解
这是影响调查质量和成本的关键参数,仅对 OpenAI 和 Codex 提供商生效:
/effort low # 快速排查,适合已知模式的简单告警 |
建议策略:
- 初次调查用
medium,先看全局 - 根因不明确时升级到
high - 生产 P0 事故直接
xhigh或max - 日常巡检/已知问题用
low
1.3 使用技巧
逐步聚焦法: 不要在第一条消息里把所有信息塞进去。先描述告警现象 → 让 OpenSRE 拉取上下文 → 根据初步发现追问 → 逐步收敛到根因。这比一次性大段描述效果好得多。
善用 Ctrl+C: 如果当前调查方向不对,直接按 Ctrl+C 取消——不会丢失会话状态,你可以立即调整描述重新开始。
二、单次调查模式
2.1 基本用法
直接对告警文件执行一次性调查(无需进入交互式 Shell):
opensre investigate -i <告警JSON文件路径> |
OpenSRE 内置了大量测试用例,可以用来快速验证环境:
# Kubernetes 告警场景 |
2.2 告警文件格式
告警文件是 JSON 格式,OpenSRE 会解析其中的关键字段来启动调查。一个典型的告警文件结构:
{ |
关键在于提供足够上下文:受影响的 服务名、环境标识、关键指标异常值和时间窗口。Runbook 链接尤其重要——OpenSRE 会读取并应用其中的排查步骤。
三、排查方法论
3.1 OpenSRE 的排查流程
当告警触发时,OpenSRE 自动执行以下流程:
flowchart TD |
3.2 典型排查场景
场景一:Kubernetes Pod CPU 限流
现象: payment-service Pod 持续触发 CPU throttling 告警。
在交互式 Shell 中的排查思路:
payment-service 在过去 15 分钟内 CPU throttling 达到 85%, |
关键操作:
- 先让 OpenSRE 拉取关联数据,不要跳过这一步
- 根据初步发现引导下一步方向(变更?流量尖峰?资源泄漏?)
- 要求对比分析(变更前后、不同 Pod 之间)
场景二:数据库响应延迟
现象: RDS PostgreSQL 查询延迟从 50ms 飙升至 2s。
排查策略:
> production 环境 RDS PostgreSQL 主库查询延迟从 50ms 升到 2s, |
注意: OpenSRE 在数据库场景下会连接你配置的数据库实例。确保相关凭证已在 onboard 时配置好。
3.3 排查最佳实践
1. 时间窗口要精确
不要说 “最近出问题了”,要说 “过去 30 分钟内”,让 OpenSRE 能精确限定数据拉取范围。
2. 提供环境和服务名
“staging 环境的 recommendation-service” 远比 “有个服务挂了” 有效。
3. 给出已知指标异常值
如果你已经在 Grafana/Datadog 上看到了具体异常指标,直接告诉 OpenSRE,可以加速定位。
4. 分步推进,不要一次给太多
让 AI 先看全局再深入局部,保持单轮信息量适中。这是 LLM 交互的黄金法则。
四、部署进阶与注意事项
4.1 部署方案对比
| 维度 | LangGraph Platform(推荐) | Railway(自托管) | 本地模式 |
|---|---|---|---|
| 适用场景 | 生产环境 | 中小团队自托管 | 个人开发/测试 |
| 运维复杂度 | 低 | 中 | 极低 |
| 可扩展性 | 高 | 中 | 受限 |
| 成本 | 按量付费 | 固定成本 | 仅本地算力 |
| Postgres/Redis | 平台托管 | 需自行配置 | 不需要 |
4.2 环境变量配置详解
核心环境变量(按优先级排列):
# === 必备:LLM 配置 === |
4.3 关键注意事项
⚠️ 安全注意事项
- API Key 管理: 使用环境变量或密钥管理服务,绝对不要硬编码在代码或配置文件中提交到 Git
- 信任模式风险:
/trust命令允许 OpenSRE 执行修复动作,仅在确认环境隔离且评估风险后使用 - 数据传输: OpenSRE 默认将对话记录保存在本地。部署到 LangGraph/Railway 时,确保传输通道加密
- 敏感信息: 告警文件不要包含明文密码或 token。OpenSRE 的遥测会主动过滤敏感字段
⚠️ 集成注意事项
- 权限最小化: 给 OpenSRE 配置的 API Key/Service Account 应该只有只读权限(除非需要自动修复)
- 网络连通性: 确保 OpenSRE 所在环境能访问所有集成的可观测性平台(Grafana、Datadog、CloudWatch 等)
- 速率限制: 大量告警时注意 LLM API 的速率限制。建议配置合理的告警聚合策略
- Kubernetes RBAC: 如果连接 K8s 集群,使用只读 ServiceAccount,限制 namespace 范围
⚠️ 版本注意事项
- Public Alpha 状态: API 和集成接口可能发生变化,升级前查看 Changelog
--main分支风险: 从 main 分支安装可能包含未充分测试的功能,生产环境建议用稳定版- 更新前备份: 执行
opensre update前,考虑备份~/.config/opensre/目录
五、调查报告解读
5.1 报告结构
OpenSRE 生成的调查报告通常包含以下部分:
📊 INVESTIGATION REPORT |
5.2 如何阅读报告
第一步:看 Executive Summary(30 秒)
快速判断事故严重程度和大致方向。如果摘要里出现了 “root cause identified” 且证据充分,可以跳到修复建议。如果是 “inconclusive”,需要继续往下看。
第二步:核查 Timeline(2 分钟)
时间线是你验证结论的关键工具。问自己:
- 告警时间是否与你已知的变更时间匹配?
- 是否存在级联效应(服务 A 异常 → 服务 B 异常)?
- 时间窗口是否合理?
第三条:审阅 Evidence(5 分钟)
这是最重要的环节。不要盲信 AI 的结论——亲自检查:
- 日志片段是否来自正确的服务和时间窗口?
- 指标异常是否真的存在,还是噪声?
- 链路追踪的异常 Span 是否确实是根因而非症状?
- 配置变更记录是否与实际运维操作一致?
第四步:评估根因可信度(3 分钟)
评估标准:
- ✅ 高可信度: 有直接日志证据 + 指标拐点对齐 + 变更记录匹配
- ⚠️ 中可信度: 有间接证据但缺少直接日志,或有多个可能的根因并列
- ❌ 低可信度: 证据稀疏,主要是推理而非实证,标记为 “inconclusive”
5.3 报告输出与分享
OpenSRE 支持将报告推送到协作工具:
# 配置 Slack 通知后,调查完成自动推送 |
手动分享建议:
- 事故复盘会:直接用报告的时间线和证据链作为讨论基础
- Postmortem 文档:在报告基础上补充人工判断和决策过程
- 知识沉淀:将报告关联的 Runbook 更新到 Wiki,形成正向循环
六、常见问题排查
6.1 安装问题
| 问题 | 排查方法 |
|---|---|
| 安装脚本报错 | 检查网络代理设置;确认 curl 版本 ≥ 7.x |
| Homebrew 找不到 tap | 先 brew update,确保 brew 版本最新 |
opensre: command not found |
检查 PATH 是否包含安装目录,重启终端 |
make: command not found |
brew install make (macOS) |
6.2 运行时问题
| 问题 | 排查方法 |
|---|---|
| Docker 未运行 | 启动 Docker Desktop / OrbStack / Colima |
| LLM 连接失败 | 检查 API Key 是否正确,网络是否能访问 API 端点 |
| 集成工具连接超时 | 确认目标服务 URL 和凭证正确,检查防火墙 |
| 调查结果不准确 | 尝试提高 /effort 级别,或提供更详细的上下文 |
| Railway 部署后一直不健康 | 确认 DATABASE_URI 和 REDIS_URI 已正确配置 |
6.3 性能问题
- 调查耗时过长:降低
/effort级别,减少关联的数据源数量 - API 限流:检查 LLM 提供商的速率限制配额,必要时升级套餐
- 内存占用高:避免同时运行多个调查实例,完成一个再开始下一个
七、遥测与隐私
OpenSRE 默认启用匿名遥测(PostHog 产品分析 + Sentry 错误报告)。
收集什么: 命令使用情况、成功/失败状态、大致的运行时长、CLI/Python/OS/架构信息。不收集告警内容、文件内容、主机名、凭证或 PII。
关闭方式:
# 一行全部关闭 |
企业环境建议: 生产环境建议设置 OPENSRE_NO_TELEMETRY=1,除非你有审计需求需要保留 Sentry 错误报告。
八、总结
OpenSRE 代表了 AI 运维从「辅助」走向「自主」的重要一步。它的核心价值不在于替代 SRE 工程师,而在于:
- 缩短 MTTR(平均修复时间): 自动拉取证据、生成假设,把人的精力集中在判断和决策上
- 标准化排查流程: 每次调查遵循统一方法论,减少凭经验「碰运气」的情况
- 知识沉淀: 调查报告 + Runbook 引用形成可复用的知识库
使用建议梯度
flowchart LR |
当前项目处于 Public Alpha 阶段,适合早期采用者探索和反馈。随着 API 稳定和集成成熟,它有望成为 AI 驱动 SRE 的事实标准。