把大模型当“温度计”——基于 LLM 的分布式系统异常根因定位实战

标签:AIOps、根因定位、可观测性、日志聚类、LLM、向量检索、Prometheus、ELK


  1. 背景:凌晨 3 点的 P0,定位 2 小时?

某电商大促,上千微服务并发飙升,告警电话连环轰炸:

• Prometheus 500+ 指标飘红;

• ELK 日志 10 GB/min 疯狂刷屏;

• 最终人工翻日志 2 小时才定位到 一个配置中心超时。

领导发话:"能不能 5 分钟自动告诉我是哪一行配置?"

于是我们把 大模型 变成了 分布式系统的"温度计",直接读出异常根因。


  1. 技术方案:LLM + 向量检索 + 层次聚类

模块 选型 作用

日志/指标采集 Filebeat + OTel 统一 Schema

向量编码 Sentence-Transformer-Mini 日志 → 512 维

向量库 Qdrant + HNSW 毫秒级搜索

根因推理 Llama3-8B-LoRA 5-shot prompt

结果排序 Cross-Encoder 重排 Top-3 根因


  1. 流水线:3 步 5 分钟闭环

  2. 异常检测:Prometheus Rule → 触发事件

  3. 日志聚类:向量检索 + 层次聚类 → 100 条 → 5 条聚类中心

  4. LLM 根因:5-shot prompt → JSON 输出 {service, file, line, reason}


  1. Prompt 模板(可直接抄)

你是一名 SRE 专家,根据下面异常聚类日志,给出根因:

日志1\] \[日志2\] \[日志3\] \[日志4\] \[日志5

返回 JSON:{"service":"xxx","file":"yyy","line":123,"reason":"..."}


  1. 代码速览(核心 80 行)
python 复制代码
# root_cause.py
from qdrant_client import QdrantClient
from transformers import pipeline
import json

client = QdrantClient(":memory:")  # 临时内存库
llm = pipeline("text-generation", model="llama3-8b-lora")

def search_logs(query, top_k=100):
    hits = client.search("logs", query_vector=encode(query), limit=top_k)
    return [h.payload["raw"] for h in hits]

def cluster_and_rank(logs):
    centers = h_cluster(logs, k=5)
    prompt = build_prompt(centers)
    return json.loads(llm(prompt, max_new_tokens=128)[0]["generated_text"])

if __name__ == "__main__":
    print(cluster_and_rank(search_logs("timeout")))

  1. 实测案例

场景 输入 输出根因 耗时

配置中心超时 500 条日志 `{"service":"config","file":"client.go","line":88,"reason":"连接池耗尽"}` 3 min

缓存击穿 1200 条日志 `{"service":"cache","file":"redis.go","line":42,"reason":"未设置随机过期时间"}` 4 min


  1. 性能 & 成本

指标 数值 备注

日志向量库 1.2 GB 7 天滚动

LLM 推理 14 tokens/s RTX 4090

单次根因 0.8 元 OpenAI 3.5 API

私有化 单卡 4090 成本 1.5 万


  1. 踩坑 & 调优

坑 解决

日志格式不统一 Filebeat processors 统一 JSON

向量检索噪声 Cross-Encoder 重排 Top-10

LLM 幻觉 返回 JSON Schema 校验 + 重试


  1. 一键部署
bash 复制代码
git clone https://github.com/sre-ai/root-cause
docker-compose up -d
# 浏览器打开 http://localhost:3000

  1. 结语:让根因定位从 2 小时到 2 分钟

当异常日志不再靠人工"肉眼扫描",

当大模型成为 SRE 的"温度计",

你会发现 "5 分钟恢复"不再是 KPI,而是日常。

如果这篇文章帮你少背一次锅,欢迎去仓库点个 Star ⭐;

也欢迎留言聊聊你让 LLM 定位过最离谱的根因!

相关推荐
飞机火车巴雷特25 分钟前
【论文阅读】LightThinker: Thinking Step-by-Step Compression (EMNLP 2025)
论文阅读·人工智能·大模型·cot
张较瘦_27 分钟前
[论文阅读] 人工智能 + 软件工程 | ReCode:解决LLM代码修复“贵又慢”!细粒度检索+真实基准让修复准确率飙升
论文阅读·人工智能·软件工程
极客小张30 分钟前
【项目思路】基于STM32+ZigBee的智能家居--浴室场景设计
c语言·python·stm32·智能家居·课程设计·项目设计·企业项目
万岳科技程序员小金2 小时前
餐饮、跑腿、零售多场景下的同城外卖系统源码扩展方案
人工智能·小程序·软件开发·app开发·同城外卖系统源码·外卖小程序·外卖app开发
桐果云2 小时前
解锁桐果云零代码数据平台能力矩阵——赋能零售行业数字化转型新动能
大数据·人工智能·矩阵·数据挖掘·数据分析·零售
二向箔reverse4 小时前
深度学习中的学习率优化策略详解
人工智能·深度学习·学习
幂简集成4 小时前
基于 GPT-OSS 的在线编程课 AI 助教追问式对话 API 开发全记录
人工智能·gpt·gpt-oss
AI浩4 小时前
【面试题】介绍一下BERT和GPT的训练方式区别?
人工智能·gpt·bert
悠哉悠哉愿意4 小时前
【机器学习学习笔记】线性回归实现与应用
笔记·学习·机器学习
Ronin-Lotus5 小时前
深度学习篇---SENet网络结构
人工智能·深度学习