HolmesGPT实战:让AI把告警、日志和指标串成故障线索"

admin 2026-10-23 06:11:21 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

HolmesGPT 实战:让 AI 把告警、日志和指标串成故障线索

python运维技术

2026年7月19日 14:00
北京

在小说阅读器读本章

去阅读

SRE AGENT · INCIDENT2026.07

先猜原因,再找证据?

先把 证据 摆到桌面上

再判断故障方向

HolmesGPT · 告警 · 日志 · 指标 · 变更

python运维技术

SREAI

3 Parts + Conclusion

滑动

PART 01

事故调查

它解决哪一段

PART 02

安装取证

国内模型与命令

PART 03

生产边界

权限、数据、验证

PART ///

写在最后

先读,再执行

上次写 K8sGPT 的时候,我其实一直在想另一个问题。

如果 AI 已经能帮我们看 Kubernetes 资源异常了,那再往前走一步,它能不能帮运维调查一次真正的生产故障?

这里我说的不是自动修复。

生产故障刚发生的时候,最怕的不是没人执行命令,而是大家还没看清现场,就已经开始猜原因。

告警在 Alertmanager 里。

指标在 Prometheus 里。

日志在 Loki 或 ELK 里。

服务状态在 Kubernetes 里。

最近一次发布记录可能在 Argo CD、GitHub、GitLab 或 Jenkins 里。

再加上值班群里的几句描述,整个现场很容易碎成一地。

这时候 AI 如果直接说“我来修”,我一般不敢信。

但如果它能先帮我把证据捞出来,告诉我它看到了哪些异常、这些异常之间有没有关系、下一步应该查什么,这个方向就比较靠谱。

HolmesGPT 做的就是这一类事情。

01

PART

HolmesGPT 是什么

POSITION · SRE AGENT

告警触发

先确定异常范围

→

跨源取证

资源、日志、指标

→

整理线索

给出判断依据

HolmesGPT 的价值,是把分散证据放进同一次调查。

HolmesGPT 是一个开源的 SRE Agent。

官方对它的定位很直接:用来调查生产事故,帮助定位根因。它不是只盯着 Kubernetes,也可以连接虚拟机、云服务、数据库、SaaS 平台和各种可观测性系统。

从运维角度看,我更愿意把它理解成一个“排障调查助手”。

它不是替你点重启按钮的人。

它更像是值班时坐在旁边的人,你问它:

...text

这个服务为什么不健康?

这个 Pod 为什么起不来?

当前有哪些 Prometheus 告警?

这个 namespace 里最近有什么异常?

然后它会去查自己能访问的数据源。

Kubernetes 资源状态、Pod 日志、Prometheus 指标、Grafana 面板、Loki 日志、Datadog、AlertManager、PagerDuty、Jira、GitHub、GitLab、Jenkins,这些都在它官方列出的集成范围里。

这就和 K8sGPT 有点不一样了。

K8sGPT 更像是给 Kubernetes 资源加一层诊断和解释。

HolmesGPT 想做得更宽一点:围绕一次事故,把告警、指标、日志、资源状态和变更信息串起来看。

这个方向很像真实运维现场。

因为故障很少只藏在一个命令输出里。

02

PART

它解决的是哪一段问题

INCIDENT · INVESTIGATION

我觉得 HolmesGPT 解决的不是“最后怎么修”,而是“前面怎么查”。

很多线上故障,真正耗时间的是前 10 到 20 分钟。

告警来了,先看哪个服务?

是应用问题,还是 Kubernetes 调度问题?

是新版本引入的,还是依赖服务挂了?

是流量变大了,还是资源限制太小?

这些问题都不难,但现场信息分散的时候,人会很容易绕。

尤其是凌晨值班。

人一困,第一反应就容易去翻自己最熟悉的地方。熟悉日志的人先看日志,熟悉 Prometheus 的人先看指标,熟悉 Kubernetes 的人先 kubectl describe。

这些动作都没错。

问题是,它们未必是这次故障最短的路径。

HolmesGPT 的价值在这里:它可以先按一个 Agent 的方式去调用工具,查资源、查日志、查指标、查告警,再给出一个排查结论。

这个结论不一定百分百对。

但如果它能把证据列出来,就已经有用了。

比如它告诉你:

某个 Deployment 的 Pod 正在 CrashLoopBackOff;

Pod 之前的日志里出现数据库连接超时;

同一时间 Prometheus 里数据库连接数打满;

最近一次发布刚好改过连接池参数。

这时候它不是在“神奇地算根因”。

它只是把你本来要手工拼的线索,提前摆到桌面上。

这就够了。

03

PART

先跑起来看看

START · CLI USAGE

如果只是想体验 HolmesGPT,先用 CLI 就行。

安装 CLI

macOS 或 Linux 可以用 Homebrew:

...bash

brew tap robusta-dev/homebrew-holmesgpt

brew install holmesgpt

holmes ask --help

也可以用 pipx:

...bash

pipx install holmesgpt

holmes ask --help

官方也提供了 Docker 方式,适合不想在本机装太多东西的人。实际使用时,需要把 kubeconfig、云厂商配置或 API Key 挂进去。

入门阶段,我建议先用本地 kubeconfig 测试。

先确认当前 kubectl 指向的是你想看的集群:

...bash

kubectl config current-context

配置国内模型 API

然后配置模型 API。

HolmesGPT 通过 LiteLLM 调用大模型,也支持 OpenAI 兼容接口。下面用 DeepSeek 官方 API 做示例。

\\这里有一个前提:模型必须支持 Function Calling,也就是能按 HolmesGPT 的要求调用 kubectl、日志和监控查询工具。\\只会聊天、不能调用工具的模型,接上去也完成不了事故调查。

当前可以使用 deepseek-v4-flash:

...bash

export OPENAI\_API\_BASE=\"https://api.deepseek.com\"

export OPENAI\_API\_KEY=\"your-deepseek-api-key\"

export MODEL=\"openai/deepseek-v4-flash\"

虽然环境变量沿用了 OPENAI\_\* 这个名字,实际请求发送到的是 DeepSeek。openai/deepseek-v4-flash 里的 openai/ 是 HolmesGPT 识别 OpenAI 兼容接口所需的前缀。

\\API Key 不要写进脚本或提交到 Git 仓库。\\团队正式部署时,应该放进 Kubernetes Secret 或密钥管理系统。

跑一次测试

配置完成后,先问一个具体问题:

...bash

holmes ask \"请用中文检查当前集群中状态异常的 Pod,说明异常原因,并列出判断依据。\"

如果你想按官方 walkthrough 做一次测试,可以创建一个有问题的测试 Pod:

...bash

kubectl apply -f https://raw.githubusercontent.com/robusta-dev/kubernetes-demos/main/pending\_pods/pending\_pod\_node\_selector.yaml

再让 HolmesGPT 调查:

...bash

holmes ask \"请用中文调查 user-profile-import Pod 为什么无法调度,并给出证据和建议的处理步骤。\"

这一步跑通以后,你基本就能理解它的工作方式了。

如果团队已经在用阿里云百炼,也可以把 API Base 换成 DashScope 的 OpenAI 兼容地址,把模型名换成支持工具调用的通义千问模型。配置思路一样,关键还是确认模型和接口都支持 Function Calling。

它不是让你在聊天框里凭空问问题。

它会根据你的问题,去调用已经配置好的数据源,然后基于查到的结果回答。

这点很重要。

生产环境里,我不喜欢那种纯靠大模型猜的运维工具。排障这件事,必须让工具先拿证据说话。

04

PART

Kubernetes 里它能看什么

KUBERNETES · EVIDENCE

HolmesGPT 的 Kubernetes 工具集默认就能用。

官方文档里写得比较清楚:默认的 Kubernetes 集成通过 kubectl 读取资源。CLI 场景使用本地 kubeconfig,部署到集群里时使用 Pod 的 ServiceAccount。

它默认是只读权限。

而且 secrets 等敏感资源默认排除。

从生产使用角度看,这个设计比较合理。

它可以查节点、Deployment、Pod 等资源状态,也可以读取 Pod 日志。日志方面,除了直接读 Kubernetes Pod 日志,也能接 Loki、Elasticsearch / OpenSearch、Coralogix、Datadog 这类日志系统。

如果集群里有 Metrics Server,还可以开启 live metrics,看当前 Pod 和 Node 的 CPU、内存使用。

如果你接了 Prometheus,它可以进一步从指标维度查问题。

这就比单纯 kubectl describe 往前走了一步。

因为很多故障只看 Kubernetes 状态是不够的。

Pod 在重启,只是现象。

为什么重启,可能要看应用日志。

应用日志里看到超时,还要看依赖服务指标。

依赖服务指标异常,又可能要看最近一次发布或配置变更。

HolmesGPT 的思路,就是尽量把这些数据源放到一个调查过程中。

05

PART

我会怎么在生产里用

PRODUCTION · PRACTICE

我会先放在三个位置。

第一个位置:只读排查。

给它一个只读权限的 kubeconfig 或 ServiceAccount,让它只能看资源、看日志、查指标,不允许改资源。

先在测试集群或预发集群跑。

我关心的不是它回答得多漂亮,而是它有没有稳定找到真实异常,有没有乱推断,有没有把无关信息说成根因。

第二个位置:告警辅助分析。

比如 Alertmanager 里来了一个服务不可用告警,不要直接让 HolmesGPT 修。

可以让它先回答几个固定问题:

...text

你看到了哪些异常?

这些异常来自哪些数据源?

你认为最可能的方向是什么?

下一步建议人工检查哪几个点?

这个提示词比“帮我解决这个故障”更适合生产环境。

因为它把工具限制在调查和建议层。

第三个位置:事故复盘素材。

很多事故结束后,大家才发现现场证据没有留好。

当时 Pod 是什么状态?

有没有重启?

当时的错误日志是什么?

Prometheus指标有没有一起抖?

如果 HolmesGPT 的调查过程能保留下来,它可以成为复盘材料的一部分。

当然,不能只信它。

复盘还是要回到原始日志、指标、发布记录和人的判断。

06

PART

它比普通脚本强在哪里

COMPARE · SCRIPT

以前我们也会写巡检脚本。

脚本查 Pod 状态、查重启次数、查 PVC、查 Node、查证书过期、查磁盘、查资源配额。

这类脚本很稳。

但脚本的问题也明显:它只会按你写好的规则工作。

规则里没写,它就看不到。

HolmesGPT 这类工具多了一层 Agent 调用能力。它可以根据问题决定下一步查什么,而不是固定跑一串命令。

比如你问的是 Pod 为什么不健康,它可能会先查 Pod 状态,再看 Event,再看日志,再看相关 Deployment。

如果你接了 Prometheus,它还可能去看指标。

这个过程有点像一个有经验的运维在排障,只不过它的判断质量取决于工具配置、数据质量和模型能力。

所以我不会说它替代脚本。

更合适的关系是:脚本负责稳定巡检,HolmesGPT 负责临时调查。

脚本适合回答“有没有问题”。

HolmesGPT 更适合回答“这个问题可能和什么有关”。

07

PART

真用的时候,别跳过这些边界

RISK · BOUNDARY

第一,不要让它一开始就有写权限。

HolmesGPT 官方有 Kubernetes Remediation 相关能力,可以做扩缩容、回滚、修改资源等动作。

但这类能力不适合一上来就在生产环境打开。

先只读。

等团队对它的输出质量、审计方式、回滚流程都熟了,再讨论能不能进入执行层。

这个顺序不要反。

第二,注意数据出网和敏感信息。

虽然 Kubernetes 工具集默认排除 secrets,但日志里可能有 token、内部域名、用户信息、数据库错误、接口路径。

如果公司对数据出网有要求,就要考虑本地模型、内网模型,或者先做脱敏。

不要因为工具看起来方便,就把生产日志整包丢给外部模型。

第三,AI 给的是调查结论,不是事故定责。

它可以说“我观察到这些现象,所以怀疑某个方向”。

但最终根因要靠++证据闭环++。

有没有发布记录?

有没有指标拐点?

有没有日志时间线?

有没有回滚验证?

这些东西缺一块,结论就不要写得太死。

第四,别让新人绕过基础能力。

这类工具对新人很有帮助。

但帮助的方式应该是让新人更快理解现场,而不是让新人不用学 Kubernetes、Prometheus、日志和发布流程。

比较好的用法是:先看 HolmesGPT 的结论,再用 kubectl describe、kubectl logs、PromQL 和原始日志去验证。

验证几次,比单纯看 AI 输出更长本事。

08

PART

普通团队可以怎么落地

LANDING · TEAM

如果团队现在还没有完整 AIOps 平台,也不用急。

可以先做一个很小的试点。

1

第一步,选一个非核心集群。

2

第二步,安装 HolmesGPT CLI。

3

第三步,只配置只读 kubeconfig。

4

第四步,挑几个常见问题测试,比如 Pod Pending、CrashLoopBackOff、Service 无 Endpoints、资源不足。

5

第五步,把 HolmesGPT 的输出和人工排查结果对照。

6

第六步,记录它在哪些场景有用,哪些场景容易猜错。

7

第七步,再考虑接 Prometheus、Loki、AlertManager。

这个过程看起来慢,但符合运维做事的习惯。

先让工具证明自己能稳定减少重复劳动,再给它更多上下文。

不要一开始就追求“自动闭环”。

自动闭环听起来好听,出了问题就不好听了。

///

LAST

最后的判断

SUMMARY · JUDGEMENT

HolmesGPT 比 K8sGPT 更像一个面向事故调查的 AI 运维助手。

K8sGPT 的入口更聚焦 Kubernetes 资源诊断。

HolmesGPT 的野心更大,它想把告警、日志、指标、资源状态、工单和代码平台都接进一次调查里。

这个方向我觉得值得关注。

但在生产环境里,我对这类工具的态度还是那句话:

先让它读。

再让它解释。

再让它建议。

最后才讨论能不能执行。

如果你现在已经在用 Kubernetes、Prometheus、Loki 或 Grafana,又想试试 AI 在运维排障里到底能不能帮上忙,HolmesGPT 可以作为 K8sGPT 之后的下一个工具来看。

不要指望它一上来替你处理事故。

先让它帮你把现场看清楚。

这一步做好,已经能省不少时间。

参考资料

HolmesGPT GitHub:https://github.com/HolmesGPT/holmesgpt

HolmesGPT CLI 安装文档:https://holmesgpt.dev/latest/installation/cli-installation/

HolmesGPT Kubernetes 工具集:https://holmesgpt.dev/latest/data-sources/builtin-toolsets/kubernetes/

HolmesGPT 内置数据源:https://holmesgpt.dev/latest/data-sources/builtin-toolsets/

HolmesGPT 推荐配置:https://holmesgpt.dev/latest/data-sources/recommended-setup/

HolmesGPT OpenAI 兼容模型配置:https://holmesgpt.dev/latest/ai-providers/openai-compatible/

DeepSeek API 文档:https://api-docs.deepseek.com/

DeepSeek Function Calling:https://api-docs.deepseek.com/guides/function\_calling/

我是 python运维技术,长期关注 Python 自动化、Linux、Kubernetes 和 AI 运维在生产环境里的真实用法。

既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。

点赞

在看

转发

THANKS FOR READING


HolmesGPT实战:让AI把告警、日志和指标串成故障线索" 网络安全文章

HolmesGPT实战:让AI把告警、日志和指标串成故障线索"

HolmesGPT是一个开源的SREAgent,用于调查生产事故并辅助定位根因。它通过连接Kubernetes、Prometheus、日志系统等数据源,将告警、日志、指标和变更信息整合到一次调查中,帮助运维人员快速获取证据和排查线索。文章强调先让工具以只读方式收集证据,再人工验证,避免直接依赖AI结论。建议从非核心集群开始试点,逐步扩展数据源,确保安全边界。
视觉相机技术原理深度解析:单目、双目、结构光、ToF优劣与适用场景" 网络安全文章

视觉相机技术原理深度解析:单目、双目、结构光、ToF优劣与适用场景"

本文深度解析单目、双目、结构光、TOF四种视觉相机技术原理与优劣。单目成本低但无原生深度;双目物理测距可靠但依赖纹理;结构光室内高精度但怕阳光;TOF响应快但分辨率低。选型需根据场景:语义识别用单目+BEV,户外纯视觉用双目,室内精密用结构光,低成本避障用TOF。多传感器融合是趋势。
我把“待审批”改成了“已通过”:审批流状态参数篡改实战,一张请假条打穿整个OA" 网络安全文章

我把“待审批”改成了“已通过”:审批流状态参数篡改实战,一张请假条打穿整个OA"

本文详细披露了企业OA系统审批流中状态参数可被前端篡改的漏洞。作者通过实战案例,演示了将请假申请状态从pending改为approved绕过审批,并进一步测试报销、采购等场景均成功。文章总结了四种典型绕过形态,提供了系统化的挖掘方法,并给出了服务端强制状态机、严格鉴权等防御方案。核心结论是审批流状态必须由服务端控制,不能信任客户端传入的参数。
Ruby4.0通用RCE反序列化Gadget链" 网络安全文章

Ruby4.0通用RCE反序列化Gadget链"

本文发布Ruby4.0.6通用RCE反序列化链,单次Marshal.load即可执行命令,向下兼容至3.3版本。该链利用RubyGems标准库新发现与旧gadget组合,通过Gem::SpecFetcher触发autoload,结合Time对象异常捕获机制绕过网络请求失败影响,最终实现文件下载与eval执行,无需额外依赖。
评论:0   参与:  0