文章目录
- [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 | 图形辅助 | 可视化告警线,直观显示界限 |