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 分钟)
✅ 示例:
WHEN last() OF A IS ABOVE 90 FOR 5m
意思:A 的最后一个值大于 90,并且持续 5 分钟,才告警。
🎚 5. Threshold(阈值线,图表辅助)
🧩 作用:
图表上直观标出“告警阈值”,方便视觉识别告警区。
- 对实际告警逻辑无影响
- 配合 Classic Condition 一起用更直观
✅ 示例用法:
- 设置红色阈值线在 80:一旦超过就是告警区域
- 图上分颜色带:绿 < 80,黄 < 90,红 > 90
🎯 完整示例(综合运用)
目标:CPU 使用率 >90% 且持续 5 分钟告警
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 |
图形辅助 |
可视化告警线,直观显示界限 |