Grafana Alert 告警条件模块详解

文章目录

  • [Grafana 告警条件模块详解](#Grafana 告警条件模块详解)
    • [📌 架构图:Grafana AlertRule 条件构建流程(文字版)](#📌 架构图:Grafana AlertRule 条件构建流程(文字版))
    • [🔢 1. Math(数学处理)](#🔢 1. Math(数学处理))
      • [🧩 作用:](#🧩 作用:)
      • [📌 常用表达式:](#📌 常用表达式:)
      • [✅ 使用建议:](#✅ 使用建议:)
    • [🔻 2. Reduce(归约)](#🔻 2. Reduce(归约))
      • [🧩 作用:](#🧩 作用:)
      • [🎛️ 常用 Function:](#🎛️ 常用 Function:)
      • [🧱 Mode(数据清洗):](#🧱 Mode(数据清洗):)
      • [✅ 使用建议:](#✅ 使用建议:)
    • [🕒 3. Resample(时间重采样)](#🕒 3. Resample(时间重采样))
      • [🧩 作用:](#🧩 作用:)
      • [🧭 Resample To(目标采样频率):](#🧭 Resample To(目标采样频率):)
      • [🔽 Downsample(粗化时间粒度 → 多值合并):](#🔽 Downsample(粗化时间粒度 → 多值合并):)
      • [🔼 Upsample(细化时间粒度 → 填补空值):](#🔼 Upsample(细化时间粒度 → 填补空值):)
      • [✅ 使用建议:](#✅ 使用建议:)
    • [🧮 4. Classic Condition(告警判断)](#🧮 4. Classic Condition(告警判断))
      • [🧩 作用:](#🧩 作用:)
      • [🔧 配置参数:](#🔧 配置参数:)
      • [✅ 示例:](#✅ 示例:)
    • [🎚 5. Threshold(阈值线,图表辅助)](#🎚 5. Threshold(阈值线,图表辅助))
      • [🧩 作用:](#🧩 作用:)
      • [✅ 示例用法:](#✅ 示例用法:)
    • [🎯 完整示例(综合运用)](#🎯 完整示例(综合运用))
    • [📌 总结对照表](#📌 总结对照表)

Grafana 告警条件模块详解

📌 架构图:Grafana AlertRule 条件构建流程(文字版)

复制代码
Raw Query → Resample → Math → Reduce → Classic Condition → [Trigger Alert]
                              ↘
                              → Threshold (图表辅助)

🔢 1. Math(数学处理)

🧩 作用:

对查询(如 A/B/C)进行数学表达式处理,加工计算值,适合:

  • 单位换算
  • 多数据源组合
  • 自定义逻辑

📌 常用表达式:

  • A > 90
  • A / 1024
  • (A + B) / 2
  • (A - B) / B * 100(增长率)

✅ 使用建议:

场景 建议表达式
单位转换 A / 1024 或 A * 1000
计算百分比 A / B * 100
两组差值 A - B
增长率 (A - B) / B * 100

🔻 2. Reduce(归约)

🧩 作用:

把一段时间内的多个数据点 → 单个值,方便告警判断。

🎛️ 常用 Function:

函数 含义
Last 最后一个值(常用于当前状态)
Mean 平均值(平滑噪声)
Max / Min 最大 / 最小值
Sum 总和(适用于累计)
Count 数据点数量(例如日志次数)
Difference last - first
Delta 中间所有变化值的和

🧱 Mode(数据清洗):

模式 含义 适合场景
Strict 非数字直接失败 对数据质量要求非常高
Drop non-numeric 忽略 null/错误值 数据偶尔异常,想保留有效数据
Replace non-numeric 替换成 0 或默认值 需要保持连续性时使用

✅ 使用建议:

数据类型 推荐设置
稳定的数值数据 Strict
偶尔 null 或字符串 Drop non-numeric
想计算总和/平均,不能丢点 Replace non-numeric = 0

🕒 3. Resample(时间重采样)

🧩 作用:

统一数据的时间粒度,处理不规则数据、平滑波动,利于图表美观和减少告警误报。

🧭 Resample To(目标采样频率):

  • 1m:每 1 分钟一个点
  • 10s:每 10 秒一个点
  • 1h:每小时一个点

🔽 Downsample(粗化时间粒度 → 多值合并):

策略 含义
Last 窗口最后一个值
Max 最大值
Min 最小值
Mean 平均值
Sum 总和

🔼 Upsample(细化时间粒度 → 填补空值):

策略 含义
pad 使用上一个值
backfilling 使用下一个值
fillna 使用空值 NaN

✅ 使用建议:

场景 Downsample Upsample
日志、状态 Last pad
CPU/内存等监控值 Mean pad 或 fillna
请求次数、IO等累计值 Sum pad
严格需要监测缺失情况 任意 fillna

🧮 4. Classic Condition(告警判断)

🧩 作用:

真正判断是否"触发告警"的逻辑。

🔧 配置参数:

  • WHEN:选择哪个处理结果(如 A、B、Reduce 后)
  • IS ABOVE/BELOW/EQUAL:比较方式
  • FOR:持续时间才告警(如 >90% 持续 5 分钟)

✅ 示例:

text 复制代码
WHEN last() OF A IS ABOVE 90 FOR 5m

意思:A 的最后一个值大于 90,并且持续 5 分钟,才告警。


🎚 5. Threshold(阈值线,图表辅助)

🧩 作用:

图表上直观标出"告警阈值",方便视觉识别告警区。

  • 对实际告警逻辑无影响
  • 配合 Classic Condition 一起用更直观

✅ 示例用法:

  • 设置红色阈值线在 80:一旦超过就是告警区域
  • 图上分颜色带:绿 < 80,黄 < 90,红 > 90

🎯 完整示例(综合运用)

目标:CPU 使用率 >90% 且持续 5 分钟告警

text 复制代码
1. Query A:获取 CPU 使用率序列
2. Resample:每 1 分钟取一次 Mean(平滑噪音)
3. Reduce:用 Last 取最近的 1 分钟值
4. Classic Condition:A > 90 FOR 5m
5. Threshold:图表上加红线(90)

📌 总结对照表

模块 功能 核心作用
Math 数学计算 表达式处理多个查询(A+B,单位转换等)
Reduce 数据聚合 把一段时间内的值 → 一个值(用于判断)
Resample 时间重采样 统一粒度,处理稀疏或不规则时间序列
Classic Condition 告警逻辑判断 设定是否告警(条件+持续时间)
Threshold 图形辅助 可视化告警线,直观显示界限