使用CloudWatch GetMetricData命令返回空Values数据集问题排查
CloudWatch get-metric-data 返回空Values数组的排查要点
针对你遇到的问题,从提供的信息来看,有几个关键问题需要逐一排查:
1. JSON语法错误(最优先排查)
你提供的input.json中,MetricDataQueries字段格式存在明显错误:它是数组类型,但数组内部直接放置键值对,未用{}包裹查询对象。正确的JSON结构应该是:
{ "StartTime": 1678701600, "EndTime": 1678702500, "MetricDataQueries": [ { "Id": "myExpression", "Expression": "SELECT xxxxxxxxx FROM SCHEMA(\"XXX\", xxx)", "Period": 60, "ReturnData": true } ] }
尽管你提到命令能正常执行,但这种无效JSON可能导致CLI解析异常,无法正确发起查询,最终返回空数据。
2. 时间范围内无匹配数据
确认StartTime(1678701600,对应2023-03-13T10:00:00Z)和EndTime(1678702500,对应2023-03-13T10:15:00Z)的时段内,是否真的存在符合SQL表达式的指标数据:
- 可通过CloudWatch控制台的指标图表,切换到相同时间范围验证是否有数据点。
- 若控制台同范围也无数据,说明该时段确实没有符合条件的指标数据。
3. Period与数据粒度不兼容
CloudWatch指标的原始数据粒度(如1分钟/5分钟)需与指定的Period匹配,否则可能无法聚合出有效数据:
- 如果目标指标的原始存储粒度是5分钟(300秒),而你指定
Period=60,可能无法正确提取数据,需将Period调整为300,或使用STATISTICS函数做兼容聚合。
4. SQL表达式的SCHEMA参数准确性
CloudWatch的命名空间和指标名称区分大小写,即使控制台中能正常运行的SQL,CLI中若大小写不符也会导致无数据返回:
- 检查
SCHEMA("XXX", xxx)中的命名空间和指标名称是否与实际存在的完全一致,包括引号的转义是否正确。
5. 请求与响应的Id不匹配问题
你提供的请求中Id为myExpression,但响应中返回的Id是myQuery1,说明实际执行的请求可能与你提供的input.json不一致:
- 确认执行命令时指定的
input.json是当前版本,没有被其他同名文件覆盖,或命令中写错了文件路径。
内容的提问来源于stack exchange,提问作者S. Dre
相关产品推荐
相关产品推荐

