为什么我的 CloudWatch GetMetricStatistics API 调用未返回数据点?

1 分钟阅读
0

我的 Amazon CloudWatch “GetMetricStatistics” API 调用没有返回任何数据点。但是,在 CloudWatch 控制台上可以使用数据点。

解决方案

**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

CloudWatch 是一项区域性的服务,因此请确保 API 调用使用的 AWS 区域正确。CloudWatch 发出的 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 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

周期

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

例如,假设您为某个实例激活了基本监控,则 Amazon Elastic Compute Cloud(Amazon EC2)会每五分钟推送一次数据点。例如,假设 Amazon EC2 推送数据点的时间戳为 12:00、12:05、12:10 等等。您的开始时间和结束时间为 12:01 和 12:04,然后尝试在 60 秒内检索数据点。在此情况下,您看不到任何数据点。最佳实践是将从开始时间到结束时间的间隔设置为一个大于指标所提供最低粒度的间隔。(对于此使用案例,粒度为 5 分钟。) 或者,使用大于或等于指标所提供最小粒度的周期。

统计数据

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

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

  • 统计数据集的样本容量为 1。
  • 统计数据集的最小值和最大值相等。

单位

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

开始时间和结束时间

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

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


相关信息

发布 CloudWatch 指标的 AWS 服务

AWS 官方
AWS 官方已更新 1 年前