API cloudwatch для получения метрик TransitGatewayAttachment через python не работает

Я могу получить метрики транзитного шлюза в порядке, используя приведенный ниже код, но он не работает, когда я делаю это для вложения tgw. Но я знаю, что есть статистика, потому что панель управления сетевым менеджером показывает показатели для tgw и всех вложений, а также графики значений.

Приведенный ниже код работает, и я получаю обратно массив ответов для tgw, регион настроен правильно и т. Д. Вложение tgw также находится в том же регионе, поэтому я использую тот же объект cloudwatch.

Запрашиваемый временной диапазон идентичен для вложений tgw и tgw, и они оба были созданы одновременно, поэтому я почти уверен, что это не проблема временного диапазона.

response = cloudwatch.get_metric_data(
MetricDataQueries=[
    {
        'Id': 'm1',
        'MetricStat': {
            'Metric': {
                'Namespace': 'AWS/TransitGateway',
                'MetricName': 'BytesIn',
                'Dimensions': [
                    {
                        'Name': 'TransitGateway',
                        'Value': 'tgw-0456c4c6fe596f58b',
                    },
                ]
            },
            'Period': 360,
            'Stat': 'Sum',  
            'Unit': 'None'
        },
        'ReturnData': True,
    },
],
StartTime=datetime(2020, 10, 1),
EndTime=datetime.now(),
)

Код ниже возвращает пустой массив, код возврата - 200 и не жалуется на синтаксис. Идентификатор прикрепления tgw правильный и фактически прикреплен к указанному выше tgw. Я знаю, что недавно появилась поддержка гранулярных облачных метрик tgw attach, поэтому, возможно, она еще не поддерживается через API?

response_attach = cloudwatch.get_metric_data(
MetricDataQueries=[
    {
        'Id': 'm1',
        'MetricStat': {
            'Metric': {
                'Namespace': 'AWS/TransitGatewayAttachment',
                'MetricName': 'BytesIn',
                'Dimensions': [
                    {
                        'Name': 'TransitGatewayAttachment',
                        'Value': 'tgw-attach-08ed0e1d3e5f488d8'
                    },
                ]
            },
            'Period': 360,
            'Stat': 'Sum',
            'Unit': 'None'
        },
        'ReturnData': True,
    },
],
StartTime=datetime(2020, 10, 1),
EndTime=datetime.now(),
)

Результаты выглядят так, без результатов значений, где первый набор кода для tgw возвращает массив в значениях. Я пробовал разные Stat, Period, MetricName, но безрезультатно.

{'MetricDataResults': [{'Id': 'm1', 'Label': 'BytesIn', 'Timestamps': [], 'Values': [], 'StatusCode': 'Complete'}], 'Messages': [], 'ResponseMetadata': {'RequestId': '495f97d5-5862-49f2-b8d0-91346606c88a', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '495f97d5-5862-49f2-b8d0-91346606c88a', 'content-type': 'text/xml', 'content-length': '490', 'date': 'Sat, 03 Oct 2020 10:57:38 GMT'}, 'RetryAttempts': 0}}

Что-нибудь очевидное, что я делаю неправильно? Заранее спасибо.

2 ответа

Решение

Ваше пространство имен неверно:

 'Namespace': 'AWS/TransitGatewayAttachment',

должен быть:

 'Namespace': 'AWS/TransitGateway',

Причина в том, что TransitGatewayAttachment это измерение внутри AWS/TransitGateway пространство имен, как описано в:

Это, наконец, сработало, и я считаю, что дает мне показатели вложений. Кажется, вам нужно указать как tgw, так и вложение в измерении, но он возвращает только 1 массив результатов и, глядя на него и сравнивая, когда я только прошу tgw, похоже, правильное значение только для вложения.

Я получил подсказку, посмотрев на консоль управления cloudwatch и посмотрев на график, вкладка источника показала этот фрагмент ниже и заметила, что в нем указаны tgw и вложение, хотя это только график вложения.

{
    "view": "timeSeries",
    "stacked": false,
    "metrics": [
        [ "AWS/TransitGateway", "BytesIn", "TransitGatewayAttachment", "tgw-attach-08ed0e1d3e5f488d8", "TransitGateway", "tgw-0456c4c6fe596f58b" ]
    ],
    "region": "us-east-1"
}

Код, который работает

response = cloudwatch.get_metric_data(
MetricDataQueries=[
    {
        'Id': 'm1',
        'MetricStat': {
            'Metric': {
                'Namespace': 'AWS/TransitGateway',
                'MetricName': 'BytesIn',
                'Dimensions': [
                    {
                        'Name': 'TransitGateway',
                        'Value': 'tgw-0456c4c6fe596f58b',
                    },
                    {
                        'Name': 'TransitGatewayAttachment',
                        'Value': 'tgw-attach-08ed0e1d3e5f488d8'
                    },
                ]
            },
            'Period': 360, # 3600,
            'Stat': 'Sum',   # 'SampleCount',
            'Unit': 'None'
        },
        'ReturnData': True,
    },
],
StartTime=datetime(2020, 10, 1),
EndTime=datetime.now(),
)
Другие вопросы по тегам