【发布时间】:2023-02-12 14:56:45
【问题描述】:
aws cloudwatch 可以对单个 ec2 使用 get_metric_data 和 get_metric_statistics。
但是,不可能同时从多个 ec2 中获取信息。
如何通过一次 api 调用获得多个 ec2 指标?
指标应由 ec2 分隔。
例子)
- 获取单个ec2数据(成功)
import boto3 from datetime import datetime, timedelta from dateutil.tz import tzutc session = boto3.Session(profile_name="XXXXXXXXXX") client = session.client('cloudwatch', 'ap-northeast-2') response = client.get_metric_data( MetricDataQueries=[ { 'Id': 'cpuUtilization', 'MetricStat': { 'Metric': { 'Namespace': 'AWS/EC2', 'MetricName': 'CPUUtilization', 'Dimensions': [ { 'Name': 'InstanceId', 'Value': 'i-XXXXXXXXX' }, ] }, 'Period': 60, 'Stat': 'Average' } } ], StartTime=datetime(2022, 7, 7, 0, 0, 0, tzinfo=tzutc()), EndTime=datetime(2022, 7, 7, 23, 59, 59, tzinfo=tzutc()) ) print(response) RESULT: {'MetricDataResults': [{'Id': 'cpuUtilization',- 获取单个 ec2 数据(失败)
import boto3 from datetime import datetime, timedelta from dateutil.tz import tzutc session = boto3.Session(profile_name="XXXXXXXXXX") client = session.client('cloudwatch', 'ap-northeast-2') response = client.get_metric_data( MetricDataQueries=[ { 'Id': 'cpuUtilization', 'MetricStat': { 'Metric': { 'Namespace': 'AWS/EC2', 'MetricName': 'CPUUtilization', 'Dimensions': [ { 'Name': 'InstanceId', 'Value': 'i-XXXXXXXXX' }, ] }, 'Period': 60, 'Stat': 'Average' } }, { 'Id': 'cpuUtilization', 'MetricStat': { 'Metric': { 'Namespace': 'AWS/EC2', 'MetricName': 'CPUUtilization', 'Dimensions': [ { 'Name': 'InstanceId', 'Value': 'i-XXXXXXXXX' }, ] }, 'Period': 60, 'Stat': 'Average' } } ], StartTime=datetime(2022, 7, 7, 0, 0, 0, tzinfo=tzutc()), EndTime=datetime(2022, 7, 7, 23, 59, 59, tzinfo=tzutc()) ) print(response) RESULT: botocore.exceptions.ClientError: An error occurred (ValidationError) when calling the GetMetricData operation: The values for parameter id in MetricDataQueries are not unique.
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-cloudwatch metrics