Извлечение метрик AWS Cloudwatch для всех экземпляров RDS с использованием Wildcard - PullRequest
0 голосов
/ 14 июня 2019

Для некоторых целей оповещения и мониторинга я пытаюсь получить метрики 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': '*'
},
]

Есть ли способ сделать это? Получить показатели для всех БД одновременно?

1 Ответ

2 голосов
/ 14 июня 2019

Вы можете сделать это с помощью метрических математических выражений, используя функцию ПОИСК.Подробности смотрите здесь: 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
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...