【问题标题】:cloudwatch API to retrieve TransitGatewayAttachment metrics via python not working通过 python 检索 TransitGatewayAttachment 指标的 cloudwatch API 不起作用
【发布时间】:2021-01-18 20:10:40
【问题描述】:

我可以使用下面的代码很好地检索中转网关指标,但是当我为 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 attach id 是正确的,实际上是附加到上面的 tgw 上的。我知道最近出现了对粒度 tgw 附加云指标的支持,所以它可能还没有通过 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(),
)

结果看起来像这样,没有 Values 结果,其中 tgw 的第一组代码在 Values 中返回一个数组。我尝试了不同的 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}}

有什么明显的我做错了吗?提前致谢。

【问题讨论】:

    标签: boto3 amazon-cloudwatch transit-gateway


    【解决方案1】:

    您的命名空间不正确:

     'Namespace': 'AWS/TransitGatewayAttachment',
    

    应该是:

     'Namespace': 'AWS/TransitGateway',
    

    原因是TransitGatewayAttachmentAWS/TransitGateway 命名空间中的一个维度,如下所述:

    【讨论】:

    • 感谢您了解这一点,我正在尝试 AWS/TransitGateway 和 AWS/TransitGatewayAttachment 只是为了查看,但两者均不返回结果,但您指出的正确方法是使用 AWS/TransitGateway 和 TransitGatewayAttachment 的维度。有趣的是,api 在使用不正确的命名空间时不会出错,但是当您尝试不正确的 metricname 或其他参数时,它确实会出错。
    • @js9999 没问题。如果答案很有帮助,我们将不胜感激。
    【解决方案2】:

    这终于奏效了,我相信它给了我附件指标。因此,您似乎必须在维度中同时提供 tgw 和附件,但它只返回 1 个结果数组并查看它并在我只要求 tgw 时进行比较,它看起来就像附件的正确值。

    我从 cloudwatch mgmt 控制台和图表中得到了线索,源选项卡在下面显示了这个 sn-p,并注意到它指定了 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(),
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多