該文檔是在這裏返回...採樣率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(這確實有意義)。