Truptesh 可帮助您排查
对以下函数的 API 调用返回空结果的问题:
GetMetricStatistics

truptesh

我的 Amazon CloudWatch GetMetricStatistics API 调用未返回任何数据点,但 CloudWatch 控制台上提供了这些数据点。我如何解决此问题?

由于 CloudWatch 是区域性服务,因此您必须确保用于 API 调用的区域正确无误。GetMetricStatistics API 调用在发出时具有多个参数,它们必须与指标的属性相匹配。由于这些参数区分大小写,您必须确保名称和大小写在 CloudWatch 控制台配置中相匹配。很多情况下,参数不正确会导致错误。

维度

如果指标是使用多个维度创建的,则只能通过指定配置的所有维度来检索该指标的数据点。例如,假定您在具有以下属性的 DataCenterMetric 命名空间中发布一个名为 ServerStats 的指标:

Dimensions: Server=Prod, Domain=Frankfurt, Unit: Count, Timestamp: 2016-10-31T12:30:00Z, Value: 105

您可以指定以下维度来检索此指标的数据点:

Server=Prod,Domain=Frankfurt

但是,如果仅指定两个维度之一,则无法检索数据点:例如:

Server=Prod

对于 AWS 命令行界面 (AWS CLI),用于在 get-metric-statistics 命令中指定维度的格式与在 put-metric-data 命令中不同。务必使用如下格式:

"Name"=string, "Value"=string

而不是以下格式:

 Name=Value

get-metric-statistics 调用示例:

aws cloudwatch get-metric-statistics --metric-name "MyMetric" --start-time 2018-04-08T23:18:00Z --end-time 2018-04-09T23:18:00Z --period 3600 --namespace "MyNamespace" --statistics Maximum --dimensions Name=Server,Value=Prod

put-metric-data 调用示例:

aws cloudwatch put-metric-data --namespace "MyNamespace" --metric-name "MyMetric" --dimensions Server=Prod --value 10

周期

如果未按指定周期值推送指标,则系统不会返回任何数据点。

例如,如果您为某个实例启用了基本监控,则 EC2 会每五分钟推送一次数据点。假设 EC2 推送数据点的时间戳为 12:00、12:05、12:10,依此类推。如果您的开始时间和结束时间设置在 12:01 和 12:04,然后尝试按照 60 秒的周期检索数据点,则无法看到任何数据点。最佳实践是将开始时间和结束时间延长到超过该指标提供的最小粒度(本例中为 5 分钟),或者使用的周期大于或等于该指标提供的最小粒度。

统计数据

要检索指标的百分位统计数据,请使用 ExtendedStatistic

CloudWatch 使用原始数据点来计算百分位。如果您使用统计数据集发布数据,则仅在满足以下条件之一时,才能检索此数据的百分位统计数据:

  • 统计数据集的 SampleCount 为 1。
  • 统计数据集的最小值和最大值相等。

单位

  • 如果指定的单位与为指标配置的单位不同,则不会返回任何数据点。
  • 如果未指定单位参数,系统会返回所有单位的数据点。

开始时间和结束时间

  • 按照 GetMetricStatistics 文档中所述,设置开始时间和结束时间参数的格式。
  • 如果在开始时间到结束时间之间没有为该指标推送任何数据点,则不会返回任何数据点。

注意:如果数据点的时间戳为 24 小时或更久之前的时间,则从提交数据点开始计算,至少需要经过 48 小时,数据点才能供 get-metric-statistics 使用。有关更多信息,请参阅 put-metric-data


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助?访问 AWS 支持中心

发布时间:2018 年 6 月 5 日