该文档是在这里返回...采样率boto3 get_metric_statistics()
这里是我们的呼叫
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的SampleCount是有意义的,因为我们的周期是60(秒),CloudWatch每5分钟提供一次'CPUUtilization'度量。但如果我改变Period,说3分钟(180),我仍然得到5的SampleCount(我期望1或2)。
这是一个问题,因为我需要Average,但我认为它是平均5个数据点,其中只有2个数据点是有效的(开始和结束,对应于Min和Max,即CloudWatch指标在某些时间t以及在时间t + 5分钟时下一次报告该指标)。
它与3中间0值的数据点的平均这使得平均是(最小+最大+ 0 + 0 + 0)/ 5
我可以只得到的最少,最大通过添加它们和分2以获得更好的阅读效果 - 但我希望有人能够准确解释'Period'参数正在做什么。 正如我所说的,将其更改为360并不会改变SampleCount,但是当我将其更改为600时,突然我的SampleCount对于一个数据点为10.0(这确实有意义)。