显示多个实例的RDS指标

2024-09-30 14:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用Boto一次为多个数据库提取RDS Cloudwatch指标。在

到目前为止,我只能使用以下方法获取一个实例的度量:

botoRDS = boto.connect_cloudwatch(aws_access_key_id=Key, aws_secret_access_key=OtherKey)

instanceStats = botoRDS.get_metric_statistics(period=60, 
                start_time=self.startTime,
                end_time=self.endTime, 
                namespace="AWS/RDS", 
                metric_name='CPUUtilization', 
                statistics=["Average"],
                dimensions={'DBInstanceIdentifier':['DB1','DB2']})

我得到的是:

^{pr2}$

我想能够返回的是两个数据库分别的平均值。像这样:

[
{
    u'Timestamp': datetime.datetime(2034,1,14,21,2),
    u'DBInstanceID':'DB1',
    u'Average': 33.02,
    u'Unit': u'Percent'
},
{
   u'Timestamp': datetime.datetime(2034,1,14,21,2),
   u'DBInstanceID':'DB2',
    u'Average': 45.1,
    u'Unit': u'Percent'
}

]

是否可以形成指定的维度以获得这样的结果。我真的不想为每一个数据库拉数据。在


Tags: keyselfaws数据库datetimeaccesstimemetric
2条回答

使用Boto3时,尺寸要求如下:

response = cloudwatch.get_metric_data(
    MetricDataQueries=[
        {
            'Id': 'cpu_1',
            'MetricStat': {
            'Metric': {
                'Namespace': 'AWS/RDS',
                'MetricName': 'CPUUtilization',
                'Dimensions': [
                        {
                            "Name": "DBInstanceIdentifier",
                            "Value": "DB1"  
                        }]
            },
            'Period': period,
            'Stat': 'Maximum',
            }
        },
        {
            'Id': 'cpu_2',
            'MetricStat': {
            'Metric': {
                'Namespace': 'AWS/RDS',
                'MetricName': 'CPUUtilization',
                'Dimensions': [
                        {
                            "Name": "DBInstanceIdentifier",
                            "Value": "DB2"  
                        }]
            },
            'Period': period,
            'Stat': 'Maximum',
            }
        }
    ],
    StartTime=(datetime.now() - timedelta(seconds=300 * 3)).timestamp(),
    EndTime=datetime.now().timestamp()
)

我不认为有任何办法可以满足你的要求。您可以指定一个DBInstanceIndentifier作为维度,并获取该数据库实例的特定数据;也可以指定多个DBInstanceIdentifiers并获得跨这些维度聚合的度量数据,但我不认为有任何方法可以在单个API调用中请求多个单独的维度。我认为你必须为你感兴趣的每一个特定维度打电话。在

相关问题 更多 >