当前位置: 首页 > news >正文

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

标签:AIOps、根因定位、可观测性、日志聚类、LLM、向量检索、Prometheus、ELK
----
1. 背景:凌晨 3 点的 P0,定位 2 小时?
某电商大促,上千微服务并发飙升,告警电话连环轰炸:
•  Prometheus 500+ 指标飘红;
•  ELK 日志 10 GB/min 疯狂刷屏;
•  最终人工翻日志 2 小时才定位到 一个配置中心超时。
领导发话:“能不能 5 分钟自动告诉我是哪一行配置?”
于是我们把 大模型 变成了 分布式系统的“温度计”,直接读出异常根因。
----
2. 技术方案:LLM + 向量检索 + 层次聚类
模块    选型    作用
日志/指标采集    Filebeat + OTel    统一 Schema
向量编码    Sentence-Transformer-Mini    日志 → 512 维
向量库    Qdrant + HNSW    毫秒级搜索
根因推理    Llama3-8B-LoRA    5-shot prompt
结果排序    Cross-Encoder 重排    Top-3 根因
----
3. 流水线:3 步 5 分钟闭环
1. 异常检测:Prometheus Rule → 触发事件
2. 日志聚类:向量检索 + 层次聚类 → 100 条 → 5 条聚类中心
3. LLM 根因:5-shot prompt → JSON 输出 {service, file, line, reason}

----
4. Prompt 模板(可直接抄)
你是一名 SRE 专家,根据下面异常聚类日志,给出根因:
[日志1] [日志2] [日志3] [日志4] [日志5]
返回 JSON:{"service":"xxx","file":"yyy","line":123,"reason":"..."}

----
5. 代码速览(核心 80 行)

# root_cause.py
from qdrant_client import QdrantClient
from transformers import pipeline
import jsonclient = 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")))

----
6. 实测案例
场景    输入    输出根因    耗时
配置中心超时    500 条日志    `{"service":"config","file":"client.go","line":88,"reason":"连接池耗尽"}`    3 min
缓存击穿    1200 条日志    `{"service":"cache","file":"redis.go","line":42,"reason":"未设置随机过期时间"}`    4 min
----
7. 性能 & 成本
指标    数值    备注
日志向量库    1.2 GB    7 天滚动
LLM 推理    14 tokens/s    RTX 4090
单次根因    0.8 元    OpenAI 3.5 API
私有化    单卡 4090    成本 1.5 万
----
8. 踩坑 & 调优
坑    解决
日志格式不统一    Filebeat processors 统一 JSON
向量检索噪声    Cross-Encoder 重排 Top-10
LLM 幻觉    返回 JSON Schema 校验 + 重试
----
9. 一键部署

git clone https://github.com/sre-ai/root-cause
docker-compose up -d
# 浏览器打开 http://localhost:3000

----
10. 结语:让根因定位从 2 小时到 2 分钟
当异常日志不再靠人工“肉眼扫描”,
当大模型成为 SRE 的“温度计”,
你会发现 “5 分钟恢复”不再是 KPI,而是日常。
如果这篇文章帮你少背一次锅,欢迎去仓库点个 Star ⭐;
也欢迎留言聊聊你让 LLM 定位过最离谱的根因!

http://www.dtcms.com/a/331939.html

相关文章:

  • 企业可商用的conda:「Miniforge」+「conda-forge」
  • Data Augmentation数据增强
  • 快速部署一个鉴黄服务
  • Android 项目:画图白板APP开发(二)——历史点、数学方式推导点
  • SQL详细语法教程(三)mysql的函数知识
  • 区块链 + 域名Web3时代域名投资的新风口(上)
  • Gemma 3 多模态推理 通过vllm运行Gemma-3-27B-IT模型的推理服务
  • 【系统安装】虚拟机中安装win10IOT企业版系统记录
  • 解决安装 scikit-learn==1.3.1 时出现的版本匹配错误
  • PHP 开发全解析:从基础到实战的进阶之路
  • sFlow原理与配置
  • Java面试场景题大全精简版
  • MySql——聚簇索引(主键索引)和非聚簇索索引(非主键索引)引区别(即聚集索引和非聚集索引区别)
  • MyBatis学习总结(六)
  • 【面板数据】各省及市省级非物质文化遗产数据合集(2005-2024年)
  • 《嵌入式 C 语言编码规范与工程实践个人笔记》参考华为C语言规范标准
  • 解锁 Docker:一场从入门到源码的趣味解谜之旅
  • 卸载python遇到msi文件权限不足
  • Python闭包详解:理解闭包与可变类型和不可变类型的关系
  • 新手如何高效运营亚马逊跨境电商:从传统SP广告到DeepBI智能策略
  • docker 容器管理入门教程
  • 身份全景图
  • Encoder-Decoder Model编码器-解码器模型
  • 【学习笔记】Java并发编程的艺术——第4章 Java并发编程基础
  • CMake笔记:Alias Target在哪些地方可以使用
  • 傅里叶变换+attention机制,深耕深度学习领域
  • shellgpt
  • Linux计划任务
  • 当GitHub宕机时,我们如何协作?
  • nginx入门需知(含安装教程)