1. 课程导论与目标

1.1 为什么需要 PromQL 告警

在现代云原生架构中,可观测性已成为 SRE 保障服务稳定性的核心支柱。Prometheus 作为 CNCF 毕业的监控标准,其查询语言 PromQL 不仅是数据检索工具,更是告警规则的核心引擎。然而,许多团队在实践过程中面临以下痛点:

  • 告警风暴:一条简单的 up == 0 规则在 Pod 批量重启时可能触发数百条告警,导致值班人员“告警疲劳”。
  • 误报率高:瞬时抖动(如 GC 暂停、网络毛刺)被误判为故障,引发不必要的 On-Call 响应。
  • 收敛缺失:缺乏对告警分组、抑制、静默的工程化设计,告警通知混乱无序。
  • 表达式低效:复杂的 PromQL 聚合查询(如 quantile_over_time)在告警规则中频繁计算,导致 Prometheus 内存飙升。

PromQL 告警表达式的编写与收敛规则,正是解决上述问题的关键工程实践。通过精确的 PromQL 表达式设计,结合 Alertmanager 的收敛策略,可以实现“告警即信号,而非噪音”的目标。

核心观点:PromQL 告警不是简单的阈值比较,而是将业务指标、系统状态、故障模式转化为可量化、可收敛、可追溯的表达式工程。

1.2 课程面向人群

本课程面向以下三类核心人群,每类人群的学习重点与收益各有侧重:

人群 背景要求 核心收益
SRE / 运维工程师 熟悉 Prometheus 基础配置,有 On-Call 经验 掌握告警收敛策略,减少误报与告警风暴,提升值班效率
可观测性平台开发者 了解 PromQL 基本语法,有告警规则编写经验 深入理解 PromQL 聚合、预测、异常检测高级用法,优化规则性能
技术管理者 / 架构师 关注稳定性工程,需要设计告警体系 建立告警分级、收敛、SLO 驱动的告警设计方法论

1.3 学习路径概览

课程共分为 6 大模块、30 个章节,从基础到进阶,形成完整的知识闭环。以下为学习路径概览:

课程学习路径概览 模块一:基础与语法 PromQL 数据类型、选择器 聚合、时间偏移、子查询 模块二:告警表达式 阈值、趋势、预测表达式 多指标组合与异常检测 模块三:收敛规则 分组、抑制、静默 Alertmanager 路由策略 模块四:性能优化 规则计算开销分析 Recording Rule 预计算 模块五:SLO 告警 SLI 定义与 Burn Rate 多窗口多燃烧速率告警 模块六:工程实战 大规模集群告警体系 混沌工程与告警验证 学习建议 建议按模块顺序学习,每章包含理论讲解 + 表达式示例 + 收敛规则配置 + 实战案例

1.4 课程核心目标

完成本课程后,学员将具备以下能力:

  1. 精准编写 PromQL 告警表达式:掌握从简单阈值到复杂预测(如 predict_linear)的表达式设计,避免常见语法陷阱。
  2. 设计告警收敛策略:熟练配置 Alertmanager 的分组、抑制、静默规则,将告警数量降低 60% 以上。
  3. 优化告警规则性能:通过 Recording Rule、查询优化、标签设计等手段,降低 Prometheus 计算负载。
  4. 构建 SLO 驱动的告警体系:基于 Service Level Objective 设计 Burn Rate 告警,实现“告警即故障,而非噪音”。
  5. 工程化落地:掌握 GitOps 管理告警规则、混沌工程验证告警有效性、告警自愈等高级实践。
课程特色:每章均提供可直接运行的 PromQL 表达式示例与 Alertmanager 配置片段,学员可在测试环境中快速验证。

1.5 课程知识体系结构

以下表格展示了课程 6 大模块与 30 章之间的依赖关系,帮助学员规划学习节奏:

模块 章节范围 前置依赖 学习时长(建议)
模块一:基础与语法 第 1-6 章 无 3-4 小时
模块二:告警表达式 第 7-12 章 模块一 4-5 小时
模块三:收敛规则 第 13-18 章 模块二 3-4 小时
模块四:性能优化 第 19-22 章 模块一、二 2-3 小时
模块五:SLO 告警 第 23-26 章 模块二、三 3-4 小时
模块六:工程实战 第 27-30 章 全部前置模块 4-5 小时
重要提示:模块六的实战案例将综合运用前五个模块的知识,建议学员不要跳学。如果时间有限,至少完成模块一、二、三后再进入模块六。

1.6 课程环境与工具准备

为获得最佳学习体验,建议学员提前准备以下环境:

  • Prometheus 实例:版本 2.45+,建议使用 Docker 快速部署:docker run -d -p 9090:9090 prom/prometheus
  • Alertmanager:版本 0.26+,与 Prometheus 配合使用
  • Node Exporter:用于生成系统指标数据,方便测试告警表达式
  • Grafana(可选):用于可视化验证告警规则效果

课程中所有 PromQL 表达式和 Alertmanager 配置均可在上述环境中直接运行。部分章节会提供 promtool 的单元测试方法,用于验证告警规则的正确性。

# 使用 promtool 测试告警规则示例
promtool test rules test_rule.yaml