使用 mirrord 在预发布集群上验证 AI-SRE 修复
本文介绍了如何将 mirrord 集成到 AI-SRE 工具 HolmesGPT 中,在真实 Kubernetes 集群上自动测试修复方案。通过两个场景展示了完整的验证流程:错误率警报修复通过,延迟警报修复被拒绝。文章强调 mirrord 无需部署即可快速、并行地测试多个补丁,避免错误修复上线。
本文是系列的第二部分,展示了如何将 mirrord 集成到 AI-SRE(人工智能站点可靠性工程师)中,使其能够在真实集群上自主测试修复方案。我们使用了 HolmesGPT(唯一可自托管的开源 AI-SRE)进行端到端演示,并植入了两个错误来测试通过(PASS)和拒绝(REJECT)两种结果。
整个流程如下:HolmesGPT 调查警报并生成 Markdown 报告,然后一个小型 Claude 封装器将报告转化为代码补丁。验证器使用 mirrord exec 在真实集群中运行该补丁,并与未修补的基线进行比较,最后根据警报的实际服务等级目标(SLO)返回 verdict。
演示集群包含一个 Python 结算服务(checkout)、一个定价服务(pricing)和一个负载生成器。Prometheus 收集指标,Alertmanager 在违反 SLO 时触发警报。HolmesGPT 作为 Pod 运行在集群中,订阅 Alertmanager。当警报触发时,HolmesGPT 进行调查并将报告传递给验证器 Pod,验证器运行桥接(调用 Claude 生成补丁),然后使用 mirrord exec 在验证器 Pod 中以目标部署的网络身份、环境和挂载运行修补后的代码。
场景一:错误率警报(通过)。一个错误导致约 10% 的请求返回 500 错误,触发 CheckoutErrorRateHigh 警报。HolmesGPT 快速定位到根因(ValueError),桥接步骤生成补丁(处理 item-3 情况)。验证器运行基线(10% 错误率)和修补后(0% 错误率)各 100 次请求,SLO 条件不再满足,且回归监控列表干净, verdict 为 PASS。
场景二:延迟警报(拒绝)。定价服务存在长尾延迟,1/10 的调用耗时约 1.5 秒,导致 p99 延迟超过 300 毫秒的 SLO。HolmesGPT 建议实施缓存,桥接步骤生成了内存缓存补丁。验证结果:基线 p99 为 2162 毫秒,修补后为 2010 毫秒,仍违反 SLO。虽然 p50 下降了 99.8%,但缓存未命中的请求仍然存在。Verdict 为 REJECT。正确的修复应该是添加客户端超时,修补后 p99 降至约 330 毫秒,通过验证。
这两个场景表明,通过验证循环可以阻止看似合理但实际无效的修复。mirrord 的优势在于无需构建和部署,即可在真实集群中快速、并行地验证多个候选补丁。相关代码已开源在 GitHub,欢迎尝试。