如何使用AWS CloudWatch Metric Math计算滚动平均生成指标容差线
AWS Managed Grafana 配置CloudWatch指标滚动平均容差线方案
方案1:通过CloudWatch Metric Math生成滚动平均序列
该方案直接在CloudWatch侧完成计算,结果可以跨仪表盘复用:
实现两种滚动平均逻辑
假设你的原始指标查询ID为a:
- 按过去X时长计算滚动平均:使用
RUNNING_MEAN函数的时长参数,示例为过去6天的滚动平均:
时长参数支持标准ISO 8601格式,如RUNNING_MEAN(a, P6D)P6W代表6周、PT24H代表24小时。 - 按过去X个数据点计算滚动平均:使用
RUNNING_MEAN函数的数值参数,示例为过去100个数据点的滚动平均:RUNNING_MEAN(a, 100)
生成容差上下限
假设滚动平均的查询ID为b,你可以直接通过算术运算生成阈值,示例为平均值得0.8倍下限、1.2倍上限:
- 下限:
b * 0.8 - 上限:
b * 1.2
可选优化:剔除不完整窗口数据
时间范围起始位置的前N个数据点会因为窗口数据不足得到不准确的计算结果,可通过SLICE函数剔除:
# 示例:剔除6天窗口对应的前6个1天粒度的不完整数据点 SLICE(RUNNING_MEAN(a, P6D), 6, DATAPOINT_COUNT(a))
方案2:通过Grafana内置功能实现(操作更简单)
如果你不熟悉CloudWatch Metric Math,直接用Grafana面板的转换功能即可完成计算,无需修改数据源查询:
- 正常添加原始CloudWatch指标查询,保存后进入面板编辑页面
- 切换到顶部的转换标签栏,点击「添加转换」
- 选择「移动平均」转换:
- 若按数据点数量计算:选择「窗口大小」,输入你需要的过去X个数据点数值
- 若按时间长度计算:选择「窗口范围」,输入时长如
6d、6w
- 再次点击「添加转换」,选择「计算字段」,依次生成上下限:
- 下限:字段选择滚动平均结果,运算为
* 0.8,命名为容差下限 - 上限:字段选择滚动平均结果,运算为
* 1.2,命名为容差上限
- 下限:字段选择滚动平均结果,运算为
- 切换回「可视化」标签,可自定义三个序列的样式:如将上下限设置为浅色虚线,原始指标设置为实线,还可在阈值配置中绑定上下限实现超限自动高亮。
内容的提问来源于stack exchange,提问作者Error - Syntactical Remorse
相关产品推荐
相关产品推荐

