Amazon web services 使用boto3 get_metric_statistics()返回的数据的采样率

Amazon web services 使用boto3 get_metric_statistics()返回的数据的采样率,amazon-web-services,boto,boto3,amazon-cloudwatch,amazon-cloudwatch-metrics,Amazon Web Services,Boto,Boto3,Amazon Cloudwatch,Amazon Cloudwatch Metrics,文档在这里… 这是我们的电话 response = cloudwatch.get_metric_statistics( Namespace='AWS/EC2', MetricName='CPUUtilization', #reported every 5 minutes Dimensions=[ { 'Name': 'AutoScalingGroupName', 'Value': 'Celery-Au

文档在这里…

这是我们的电话

response = cloudwatch.get_metric_statistics(
    Namespace='AWS/EC2', 
    MetricName='CPUUtilization', #reported every 5 minutes

    Dimensions=[
        {
            'Name': 'AutoScalingGroupName', 
            'Value': 'Celery-AutoScalingGroup' 
        },
    ],
    StartTime=now - datetime.timedelta(minutes=12),
    EndTime=now,
    Period=60, #I can't figure out what exactly changing this is doing
    Statistics=['Average','SampleCount','Sum','Minimum','Maximum'],
)
以下是我们的回应

>>> response['Datapoints']
[ {u'SampleCount': 5.0, u'Timestamp': datetime.datetime(2017, 8, 25, 12, 46, tzinfo=tzutc()), u'Average': 0.05,  u'Maximum': 0.17, u'Minimum': 0.0, u'Sum': 0.25, u'Unit': 'Percent'},
  {u'SampleCount': 5.0, u'Timestamp': datetime.datetime(2017, 8, 25, 12, 51, tzinfo=tzutc()), u'Average': 0.034, u'Maximum': 0.08, u'Minimum': 0.0, u'Sum': 0.17, u'Unit': 'Percent'}
]
这是我的问题

查看返回列表中的第一个词典。我想,样本数为5是有意义的,因为我们的周期是60秒,CloudWatch每5分钟提供一次“CPUUtilization”度量

但若我改变周期,比如说3分钟(180),我仍然会得到5个样本(我希望是1或2个)

这是一个问题,因为我想要平均值,但我认为平均值是5个数据点,其中只有2个是有效的(开始和结束,对应于最小值和最大值,即某个时间t的CloudWatch度量,以及该度量的下一个报告时间t+5分钟)

它使用3个中间0值数据点对其进行平均,因此平均值为(最小值+最大值+0+0+0)/5

我可以得到最小值,最大值,再加上它们,然后除以2,以获得更好的读数——但我希望有人能准确地解释“周期”参数在做什么。
正如我所说,将其更改为360并没有改变SampleCount,但当我将其更改为600时,一个数据点的SampleCount突然变为10.0(这是有意义的)。

数据可以通过两种不同的方式发布到CloudWatch:

  • 您可以逐个发布您的观察结果,并让CloudWatch进行聚合
  • 您可以自己聚合数据并发布统计集(SampleCount、Sum、Minimum、Maximum)
  • 如果使用方法1发布数据,您将获得预期的行为。但是,如果使用方法2发布数据,则会受到已发布数据粒度的限制

    如果ec2将数据聚合5分钟,然后发布统计集,则没有必要在3分钟级别请求数据。但是,如果您请求的数据周期是发布数据周期的倍数(例如10分钟),则可以计算统计数据,CloudWatch会这样做