1

我可以使用下面的代码很好地检索中转网关指标,但是当我为 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}}

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

4

2 回答 2

0

您的命名空间不正确:

 'Namespace': 'AWS/TransitGatewayAttachment',

它应该是:

 'Namespace': 'AWS/TransitGateway',

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

于 2020-10-03T12:18:50.830 回答
0

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

我从 cloudwatch mgmt 控制台和图表中得到了线索,源选项卡在下面显示了这个片段,并注意到它指定了 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(),
)
于 2020-10-04T08:13:49.107 回答