cloudwatch API 无法通过 python 检索 TransitGatewayAttachment 指标
cloudwatch API to retrieve TransitGatewayAttachment metrics via python not working
我可以使用下面的代码很好地检索中转网关指标,但是当我为 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(),
)
下面的代码返回一个空数组,return 代码是 200 并且不抱怨语法。 tgw 附加 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(),
)
结果看起来像这样,没有值结果,其中作为 tgw 的第一组代码 returns 值中的数组。我尝试了不同的 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}}
有什么明显的我做错了吗?提前致谢。
您的命名空间不正确:
'Namespace': 'AWS/TransitGatewayAttachment',
应该是:
'Namespace': 'AWS/TransitGateway',
原因是 TransitGatewayAttachment
是 AWS/TransitGateway
命名空间中的一个维度,如以下所述:
这终于奏效了,我相信它给了我附件指标。因此,似乎您必须在维度中同时提供 tgw 和附件,但它只有 returns 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(),
)
我可以使用下面的代码很好地检索中转网关指标,但是当我为 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(),
)
下面的代码返回一个空数组,return 代码是 200 并且不抱怨语法。 tgw 附加 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(),
)
结果看起来像这样,没有值结果,其中作为 tgw 的第一组代码 returns 值中的数组。我尝试了不同的 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}}
有什么明显的我做错了吗?提前致谢。
您的命名空间不正确:
'Namespace': 'AWS/TransitGatewayAttachment',
应该是:
'Namespace': 'AWS/TransitGateway',
原因是 TransitGatewayAttachment
是 AWS/TransitGateway
命名空间中的一个维度,如以下所述:
这终于奏效了,我相信它给了我附件指标。因此,似乎您必须在维度中同时提供 tgw 和附件,但它只有 returns 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(),
)