夜雨聆风学习资料网

ARTICLE · 1122787

AIOps落地:Dify + Loki MCP做智能日志分析助手

AIOps落地:Dify + Loki MCP做智能日志分析助手
↑↑↑ 点击关注,分享IT技术|职场晋升技巧|AI工具

搞 AIOps 一年多了,手上已经攒了一批能直接落地的打法,也有了一套自己研发的 AIOps 平台,有兴趣的朋友可以来找我聊(后台回复:链接)

◆ 摘 要

三个官方工具、一套排查型提示词,就能让AI像高级SRE一样查日志、找根因、给方案。全文含可直接抄作业的部署命令与完整提示词。

◆ 核 心 观 点智能日志分析的灵魂,不在工具多强,而在"先探索、再查询、后分析"的排查纪律被固化成了流程。别指望大模型天赋异禀,好的SOP才是智能体落地的前提。

玩AIOps这一年多,最大的感受就一句话:运维的尽头,是让机器替你值班。🔥

说说我的情况。我一直在折腾智能日志分析,之前的方案是Grafana的MCP,底下挂Loki。用是能用,但总觉得隔了一层。

直到有天我翻Grafana仓库,才发现一个被忽略的事实——Loki官方自己就带MCP服务,压根不用绕道Grafana。

不过话说回来,官方这个MCP只给了3个工具,看着寒酸:查label名称、查label下的值、执行LogQL查询。

但别小看这仨。日志分析的本职工作,本来就是"先摸清结构、再精准查询"。工具少,反而逼着Agent把探索流程做得更聪明。👍

工具从来不是瓶颈,不会把排查思路教给AI才是。

一、把Loki MCP跑起来

前提:Loki你已经装好了,这步不废话。项目在GitHub上:github.com/grafana/loki-mcp

① 拉代码

git clone https://github.com/grafana/loki-mcp.git

② 打成Docker镜像(有个小坑:国内编译Go项目会卡在依赖下载,先把代理换成国内源)

cd loki-mcp

sed -i 's#RUN go mod download#RUN go env -w GOPROXY=https://goproxy.cn,direct && go mod download#' Dockerfile

docker build -t loki-mcp-server:local .

③ 启动并验证

docker run -d -p 8080:8080 -i loki-mcp-server:local

curl http://localhost:8080/sse

二、接入Dify

这步简单到没什么好写的:工具 → MCP → 添加MCP服务,地址指向刚才那个8080端口,完事。

三、调教你的日志分析Agent

进Dify的工作室,新建一个空白的Agent应用,把Loki MCP的三个工具挂上去。

然后是最关键的部分——提示词。我把规则拆成了六个模块,核心思路不变,但更好维护:

◆ 模块1 · 角色与铁律

你是资深的Loki日志分析专家,手上有三个MCP工具:loki_label_names(列出所有label)、loki_label_values(查某个label的所有取值)、loki_query(执行LogQL查询)。不了解日志结构时,严格按顺序来:先查label_names → 再查label_values → 最后才写查询。禁止凭空捏造label名、取值和查询语句。

◆ 模块2 · 探索流程

用户说"帮我排查""看看为什么挂了""分析下500错误"这类需求时:先拉label_names → 重点留意job、app、service、namespace、pod、container、level、cluster、instance这些高频label → 对可疑label查values,挑出与问题最匹配的 → 基于真实存在的label组合写出精准LogQL。

◆ 模块3 · 查询规范

必须用精确label过滤(比如 {job="nginx"});严禁全库扫描({} |= "error"这种写法直接毙掉);时间范围默认最近1小时,可按需收窄到5分钟或放宽到24小时;返回条数默认100。

◆ 模块4 · 报错怎么办

日志里出现error、timeout、panic、OOM、CrashLoopBackOff、502/503/504等关键词时:提取核心错误 → 归纳模式 → 判断原因 → 评估影响面 → 给修复建议。发现namespace/pod/container等label时,再按K8s维度分析:pod是否反复报错、有没有重启、超时、upstream error、数据库连不上、资源吃紧。

◆ 模块5 · 输出格式

三段式,缺一不可:① 发现了什么 ② 为什么发生 ③ 怎么修。绝不甩一堆原始日志给用户,日志太长只留关键片段并归纳共性。

◆ 模块6 · 兜底与安全

查不到别放弃:先检查label对不对、value存不存在,换label、放宽条件再试;用户给的服务名不存在时,主动找相似的service/pod/job。安全红线:token、password、secret、access_key一律自动脱敏。

◆ 读 者 反 驳你可能在想:就3个工具的MCP,我能直接写LogQL,为啥还要套一层Agent?多此一举吧?

说白了,差别在半夜三点的告警现场。你手写LogQL,得先想label叫什么、再猜服务名、再翻文档试语法,一个都不熟就得卡半天。而这套Agent是"说人话进去,给结论出来"——它自己探索结构、自己试错、自己总结。工具越少,流程越清晰,反而越不容易跑偏。

四、实测效果

◆ 测试1 · 摸底

扔过去一句"帮我看看都有哪些日志"——Agent自己先探索label,再列出可查的日志源,全程没让我操心。

◆ 测试2 · 定向排查

"看一下/var/log/messages日志里有没有oom相关日志"——直接构造查询、过滤关键词、给出分析结论,一气呵成。🎯

说实话,这种"说人话就能查日志"的体验,用过就回不去了。

收尾

这套方案的精髓,不在于工具多强,而在于提示词把"运维专家的排查思路"固化成了流程——先探索、再查询、后分析,一步一步来,AI就不会瞎编。

别指望大模型天赋异禀,好的SOP才是智能体落地的前提。

··············  END  ··············
哈喽,我是阿铭,《跟阿铭学Linux》作者,曾就职于腾讯,有着近20年的IT从业经验,现全职做IT类职业培训:运维、k8s、大模型。日常分享运维、AI、大模型相关技术以及职场相关,欢迎围观。

相关学习资料