使用通配符获取所有 RDS 实例的 AWS Cloudwatch 指标
Fetch AWS Cloudwatch metrics for all RDS instance using Wildcard
出于某些警报和监控目的,我正在尝试获取 RDS cloudwatch 指标。
大约有 ~50 个 RDS 实例,我想在一次 API 调用中获取所有实例的指标(我使用的是 boto3)。这是我的代码:
response = cloudwatch_client.get_metric_data(
MetricDataQueries=[
{
'Id': 'fetching_data_for_something',
'MetricStat': {
'Metric': {
'Namespace': 'AWS/RDS',
'MetricName': 'FreeStorageSpace',
'Dimensions': [
{
'Name': 'DBInstanceIdentifier',
'Value': '*'
},
]
},
'Period': 300,
'Stat': 'Average'
},
'ReturnData': True
},
],
StartTime=datetime(2019, 6, 11,13,0,0),
EndTime=datetime(2019, 6, 11,13,20,00),
ScanBy='TimestampDescending',
MaxDatapoints=123
)
但这返回了一个空结果,但是当我搜索特定的数据库实例时,它返回了结果。这是有效的:
'Dimensions': [
{
'Name': 'DBInstanceIdentifier',
'Value': 'name_of_db'
},
]
但是,这不是:
'Dimensions': [
{
'Name': 'DBInstanceIdentifier',
'Value': '*'
},
]
有什么办法可以做到吗?要一次获取所有数据库的指标?
您可以使用 SEARCH 函数使用公制数学表达式来完成此操作。详情请看这里:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-search-expressions.html
你的表情看起来像这样:
SEARCH('{AWS/RDS,DBInstanceIdentifier} MetricName="FreeStorageSpace"', 'Average', 300)
完整的 boto3 示例:
response = cloudwatch_client.get_metric_data(
MetricDataQueries=[
{
'Id': 'fetching_data_for_something',
'Expression': "SEARCH('{AWS/RDS,DBInstanceIdentifier} MetricName=\"FreeStorageSpace\"', 'Average', 300)",
'ReturnData': True
},
],
StartTime=datetime(2019, 6, 11,13,0,0),
EndTime=datetime(2019, 6, 11,13,20,0,0),
ScanBy='TimestampDescending',
MaxDatapoints=123
)
出于某些警报和监控目的,我正在尝试获取 RDS cloudwatch 指标。 大约有 ~50 个 RDS 实例,我想在一次 API 调用中获取所有实例的指标(我使用的是 boto3)。这是我的代码:
response = cloudwatch_client.get_metric_data(
MetricDataQueries=[
{
'Id': 'fetching_data_for_something',
'MetricStat': {
'Metric': {
'Namespace': 'AWS/RDS',
'MetricName': 'FreeStorageSpace',
'Dimensions': [
{
'Name': 'DBInstanceIdentifier',
'Value': '*'
},
]
},
'Period': 300,
'Stat': 'Average'
},
'ReturnData': True
},
],
StartTime=datetime(2019, 6, 11,13,0,0),
EndTime=datetime(2019, 6, 11,13,20,00),
ScanBy='TimestampDescending',
MaxDatapoints=123
)
但这返回了一个空结果,但是当我搜索特定的数据库实例时,它返回了结果。这是有效的:
'Dimensions': [
{
'Name': 'DBInstanceIdentifier',
'Value': 'name_of_db'
},
]
但是,这不是:
'Dimensions': [
{
'Name': 'DBInstanceIdentifier',
'Value': '*'
},
]
有什么办法可以做到吗?要一次获取所有数据库的指标?
您可以使用 SEARCH 函数使用公制数学表达式来完成此操作。详情请看这里:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-search-expressions.html
你的表情看起来像这样:
SEARCH('{AWS/RDS,DBInstanceIdentifier} MetricName="FreeStorageSpace"', 'Average', 300)
完整的 boto3 示例:
response = cloudwatch_client.get_metric_data(
MetricDataQueries=[
{
'Id': 'fetching_data_for_something',
'Expression': "SEARCH('{AWS/RDS,DBInstanceIdentifier} MetricName=\"FreeStorageSpace\"', 'Average', 300)",
'ReturnData': True
},
],
StartTime=datetime(2019, 6, 11,13,0,0),
EndTime=datetime(2019, 6, 11,13,20,0,0),
ScanBy='TimestampDescending',
MaxDatapoints=123
)