13

インスタンス (実際には複数のインスタンスですが、最初は 1 つだけです) の CPU 使用率に関する最新のデータを取得しようとしていますが、次の呼び出しではデータが返されません。

cw = boto.cloudwatch.connect_to_region(Region)
cw.get_metric_statistics(
    300,
    datetime.datetime.now() - datetime.timedelta(seconds=600),
    datetime.datetime.now(),
    'CPUUtilization',
    'AWS/EC2',
    'Average',
    dimensions={'InstanceId':['i-11111111']}
    # for stats across multiple instances:
    # dimensions={'InstanceId':['i-11111111', 'i-22222222', 'i-33333333']}
)

他のサイトのさまざまな投稿は、地域のチェックが正しいこと、period(最初の引数) が 60 の倍数であること、および (詳細な監視が有効になっていない場合) が 300 以上であることを確認していることを示しています。これらすべてのものと私はまだデータを取得していません。

4

3 に答える 3

28

これはサマータイム/タイムゾーンの問題です!

Cloudwatch から統計を受け取るときは、UTC 時間を使用する必要があります。

    cw = boto.cloudwatch.connect_to_region(Region)
    cw.get_metric_statistics(
        300,
        datetime.datetime.utcnow() - datetime.timedelta(seconds=600),
        datetime.datetime.utcnow(),
        'CPUUtilization',
        'AWS/EC2',
        'Average',
        dimensions={'InstanceId':['i-11111111']}
   )

いくつかの実験から、複数のInstanceIdディメンションを指定すると、最後に指定されたインスタンスのデータのみが得られるようです (少なくとも詳細な監視が有効になっていない場合)。

于 2013-05-05T11:00:48.020 に答える
1

また、単位を「メガバイト」に設定するとデータが返されず、単位を「バイト」に設定するとデータが返されませんでした。

どちらもAPI リファレンスで許可されています。

data = conn.get_metric_statistics(period=60,start_time=start,end_time=end,metric_name="NetworkOut",namespace="AWS/EC2",statistics="Average",unit="Megabytes",dimensions={'InstanceId':'XXXXXX'})
print "data length: %d"%len(data)
    # data length: 0


data = conn.get_metric_statistics(period=60,start_time=start,end_time=end,metric_name="NetworkOut",namespace="AWS/EC2",statistics="Average",unit="Bytes",dimensions={'InstanceId':'XXXXXX'})
print "data length: %d"%len(data)
    # data length: 59
于 2014-04-30T22:04:43.870 に答える