🤖 LLM 驱动的 Prometheus 告警智能解读
基于 Qwen2-7B + vLLM + RAG 架构,实现 Prometheus 告警的自动化智能解读与根因分析。
第1章 传统告警管理的痛点
为什么需要 AI 介入告警解读
告警疲劳的现状
在现代云原生环境中,Prometheus 作为核心监控系统,每天可能产生数百甚至上千条告警。运维团队面临的挑战包括:
- 告警风暴:一个根因故障触发大量关联告警,淹没关键信息
- 解读成本高:每条告警需要人工查看指标、关联日志、判断影响范围
- 知识依赖:告警解读依赖个人经验,新人上手周期长
- 响应延迟:从告警触发到人工解读平均需要 5-15 分钟
传统解决方案的局限
| 方案 | 优势 | 不足 |
|---|---|---|
| 告警分组/抑制 | 减少告警数量 | 无法解读告警含义 |
| Runbook 文档 | 提供处理指南 | 需要人工查找匹配 |
| 仪表盘关联 | 可视化上下文 | 仍需人工分析判断 |
核心问题:传统方案只能减少告警数量,无法替代人工对告警语义的理解和决策。
第2章 LLM + RAG 架构设计
基于大语言模型的智能告警解读系统
系统架构概览
Prometheus AlertManager
↓ (Webhook)
告警聚合服务
↓
┌──────────────────────┐
│ RAG 检索增强生成 │
│ ┌────────────────┐ │
│ │ 向量知识库 │ │
│ │ (历史告警+Runbook)│ │
│ └────────────────┘ │
│ ↓ │
│ Qwen2-7B (vLLM) │
└──────────────────────┘
↓
智能解读结果
核心技术选型
- LLM:Qwen2-7B,在中文技术文档上表现优秀
- 推理框架:vLLM,支持 PagedAttention 高吞吐推理
- 向量数据库:Milvus,存储历史告警与 Runbook 的向量表示
- Embedding 模型:BGE-large-zh-v1.5,中文语义理解
Prompt 工程设计
告警解读的 Prompt 包含以下要素:
- 角色定义:你是一个资深 SRE 工程师
- 告警上下文:指标名称、阈值、当前值、持续时间
- 相关知识:从向量库检索到的相似历史告警和 Runbook
- 输出格式:根因分析、影响范围、建议操作
设计原则:让 LLM 基于检索到的事实进行推理,而非依赖模型内部知识,减少幻觉。
第3章 向量知识库构建
将运维知识转化为可检索的向量表示
知识来源
向量知识库的数据来源包括:
- 历史告警记录:过去 6 个月的告警及处理结果
- Runbook 文档:标准操作流程和故障处理指南
- Postmortem 报告:事后复盘文档中的根因和解决方案
- 监控指标文档:各指标的含义、正常范围、异常模式
文档切片策略
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=500, # 每块约 500 字符
chunk_overlap=50, # 重叠 50 字符保持上下文
separators=["\n\n", "\n", "。", ""]
)
向量化与索引
- 使用 BGE-large-zh 将文本块编码为 1024 维向量
- 存入 Milvus 并建立 HNSW 索引
- 告警触发时,将告警描述编码后检索 Top-5 相似知识块
效果:知识库覆盖 200+ 告警类型,检索准确率(Top-3)达到 92%。
第4章 工程实现与部署
从原型到生产环境的落地实践
服务部署架构
vLLM 推理服务
# Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: qwen2-7b-inference
spec:
replicas: 2
template:
spec:
containers:
- name: vllm
image: vllm/vllm-openai:latest
args:
- --model
- Qwen/Qwen2-7B-Instruct
- --tensor-parallel-size
- "1"
- --max-num-seqs
- "256"
resources:
limits:
nvidia.com/gpu: 1
告警处理流水线
- AlertManager 通过 Webhook 推送告警到告警聚合服务
- 聚合服务对告警进行去重和分组
- 调用 RAG 服务获取相关知识
- 组装 Prompt 调用 vLLM 生成解读
- 解读结果回写到告警系统并通知值班人员
性能指标
| 指标 | 数值 |
|---|---|
| 单次推理延迟(P99) | 3.2 秒 |
| 吞吐量 | 30 告警/秒 |
| GPU 显存占用 | 16GB (A100) |
| 解读准确率 | 87%(人工评估) |
优化方向:引入告警优先级队列,P0 告警优先推理;使用量化模型(GPTQ)降低显存需求。
💡 每天阅读一个章节,循序渐进掌握知识体系