如何查找并修改AWS CloudWatch高分辨率指标?排查相关报错
解决AWS CloudWatch高分辨率指标相关问题
1. 查找所有高分辨率指标
AWS定义高分辨率指标为上报间隔小于60秒的指标,这类指标默认仅保留3小时。以下是两种查找方式:
用AWS CLI查询
运行命令过滤出所有间隔小于60秒的指标:
aws cloudwatch list-metrics --query 'Metrics[?Period < 60]'
指定应用命名空间缩小范围:
aws cloudwatch list-metrics --namespace "你的应用命名空间" --query 'Metrics[?Period < 60]'
通过CloudWatch控制台查找
- 进入CloudWatch控制台的指标页面
- 点击右上角的添加过滤器,选择
Period,设置条件为小于 60 - 筛选结果即为高分辨率指标
2. 将指标修改为非高分辨率
已上报的高分辨率指标无法修改存储周期,只能调整后续上报逻辑:
调整Micrometer配置
虽然Micrometer默认highResolution=false、step=2m,但需确认代码中无手动覆盖:
- 检查是否有代码显式设置
highResolution=true,或把step设为小于60秒的值 - 自定义CloudWatch配置时明确指定标准分辨率参数:
@Bean public CloudWatchConfig cloudWatchConfig() { return new CloudWatchConfig() { @Override public String get(String key) { switch (key) { case "cloudwatch.namespace": return "你的应用命名空间"; case "cloudwatch.step": return "PT1M"; // 1分钟间隔,标准分辨率 case "cloudwatch.high-resolution": return "false"; default: return null; } } }; }
备份历史高分辨率数据
若需保留历史数据,可通过CloudWatch指标流将数据导出到S3,或使用CloudWatch API批量导出。
3. 排查AWS判定为高分辨率的原因
- 检查指标实际上报间隔:在CloudWatch指标详情页查看统计周期,确认是否存在小于60秒的数据点
- 检查Micrometer依赖:确认Spring Boot Actuator等第三方依赖未自动调整上报间隔
- 查看CloudTrail日志:搜索
PutMetricData调用,检查请求中数据点的时间戳间隔,确认实际上报频率 - 排查批量上报逻辑:若Micrometer批量发送时,同一指标的多个数据点间隔小于60秒,也会被判定为高分辨率
4. 解决查询时的3小时数据报错
即使使用1分钟/5分钟间隔查询,只要指标本身是高分辨率类型,CloudWatch仍会限制仅能查询最近3小时数据:
- 先通过上述方法确认查询的指标是否为高分辨率
- 确保后续上报的指标已切换为标准分辨率
- 如需长期查询历史高分辨率数据,可创建指标数学表达式或结合归档到S3的数据进行查询
内容的提问来源于stack exchange,提问作者Dean Hiller
相关产品推荐
相关产品推荐

