结合ELK日志MCP的AI问题排查工作流:从页面报错到数据验证
前言
前后端融合的工程里,排查一个「页面保存失败」的问题要横跨好几层:前端控制台、网关、后端多个服务、中间件、数据库。以前的处理路径是:找前端看请求 → 找后端捞日志 → 对 traceId → 查库验证,几个人来回扯半天。现在把这些能力都接成 MCP 工具给 AI(ELK 日志查询 MCP + 数据库 CLI,数据库那篇见 agent-database-cli),一句话描述问题,AI 按固定工作流自己跑完全程。这篇整理这套工作流。
1、工具组成
| 工具 | 能力 | 在工作流里的角色 |
|---|---|---|
| ELK 日志 MCP | searchLog(按应用名/时间窗/级别/关键词查日志)、searchByTraceId(按 traceId 拉全链路日志)、getCurrentTime(当前服务器时间) |
发现与串联 |
| 数据库 CLI(agent-database-cli) | 只读执行 SQL、查元信息 | 数据验证 |
日志 MCP 的三个工具各有分工:getCurrentTime 看着不起眼,其实是第一步——AI 自己猜的时间和服务器时间经常差着时区,时间窗错了后面全白查。
2、五步工作流
以一个真实场景走一遍:用户反馈「订单页面点保存,转圈之后报保存失败」。
第一步:时间对齐
|
|
为什么要先做这步:日志平台的时间和应用服务器可能有几小时偏差(时区配置),不先对齐,按「刚刚」去查要么查到明天要么查到上周。
第二步:错误初筛
|
|
关键词的选择有讲究:用业务单号、订单号这种精确值,别用「失败」「错误」这种泛词——泛词能把整个服务的噪音全捞回来。这一步的目标不是找根因,是找到那条带 traceId 的错误日志。
第三步:traceId 串联全链路(核心)
从错误日志里取出 traceId:
|
|
这一步是工作流的核心价值:一个 traceId 把网关 → 服务 A → 服务 B → DAO 层的所有日志按时间串起来。AI 拿到的是一条完整时间线:
|
|
根因往往就藏在这条时间线的中间某一行——库存不足、下游超时、SQL 报错,一眼可见。人肉排查时这步最费时间(要挨个系统翻日志),AI 三五秒串完。
第四步:查库验证数据
日志给出怀疑方向后,用数据库 CLI 验证数据状态(只读连接):
|
|
比如日志说库存不足,查库确认 stock 确实是 0;日志说唯一键冲突,查库看那条冲突数据是谁插的。日志定方向,数据定实锤——只看日志不下结论,是给 AI 定的规矩。
第五步:输出结论
要求 AI 按固定结构输出排查报告:
|
|
3、给 AI 的提示词模板
把工作流固化成一段提示词,每次排查直接贴:
|
|
用了几次之后可以把这段直接存成自定义 Skill,触发词「排查问题」自动加载, teammates 也能复用同一套标准。
4、实战技巧
- 时间窗先宽后窄:第一轮 ±5 分钟,找不到再放宽到 ±30 分钟,避免一上来查一小时把 token 烧光
- traceId 是灵魂:推动团队在网关入口生成 traceId 并全链路透传(MDC 塞进每行日志),没有 traceId 的系统这套工作流效率折半。没有的话用业务单号 + 时间窗硬查也能兜住
- 级别分层次:先 ERROR 找报错点,ERROR 没有就降 WARN、INFO(有些问题被 catch 了没打 ERROR,但 INFO 里有业务流水)
- 让 AI 输出时间线:别让它直接给结论,强制要求先整理按时间排序的日志时间线——中间过程可见,错了能发现是哪步歪的
- 多轮追问:第一轮定位到「库存不足」,可以继续追问「这个 sku 最近的库存变更日志」,AI 会带着新时间窗再来一轮
5、安全边界
- 数据库连接保持只读(agent-database-cli 默认 readonly),AI 只查不改
- 日志里可能带手机号、地址等个人信息,AI 的排查结论里要求引用时做脱敏(尾号掩盖),排查报告不要直接外发
- 生产日志平台的 MCP 凭证按只读账号最小化授权,和 db-cli 一个原则:AI 负责查和推理,变更的扳机在人手里
总结
这套工作流的本质是把老师傅的排查路径固化成 AI 的执行流程:时间对齐 → 错误初筛 → traceId 串联 → 数据验证 → 结构化结论。ELK 日志 MCP 负责「看得见全过程」,数据库 CLI 负责「验得了实锤」,前后端融合工程里的大部分线上问题,从描述到根因只需要几分钟。
相关阅读
- 原文作者:Anttu
- 原文链接:https://anTtutu.github.io/post/2026-09-27-elk-mcp-ai-workflow/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。