API cloudwatch để truy xuất chỉ số TransitGatewayAttachment qua python không hoạt động
Tôi có thể truy xuất các chỉ số phương tiện giao thông tốt bằng cách sử dụng mã bên dưới, nhưng nó không hoạt động khi tôi làm điều đó cho tệp đính kèm tgw. Nhưng tôi biết có số liệu thống kê vì trang tổng quan của trình quản lý mạng hiển thị số liệu cho tgw và tất cả tệp đính kèm và vẽ biểu đồ các giá trị.
Đoạn mã bên dưới hoạt động và tôi nhận được một mảng phản hồi cho tgw, khu vực được thiết lập đúng cách, v.v. Tệp đính kèm tgw cũng nằm trong cùng một khu vực nên tôi sử dụng cùng một đối tượng cloudwatch.
Phạm vi thời gian được hỏi là giống hệt nhau cho cả tệp đính kèm tgw và tgw và cả hai đều được tạo cùng một lúc nên tôi khá chắc chắn rằng đó không phải là vấn đề về phạm vi thời gian.
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(),
)
Mã bên dưới trả về một mảng trống, mã trả về là 200 và không phàn nàn về cú pháp. id đính kèm tgw là đúng và thực sự được đính kèm với tgw ở trên. Tôi biết hỗ trợ cho các chỉ số đám mây tgw đính kèm chi tiết đã xảy ra gần đây, vì vậy có thể nó chưa được hỗ trợ qua 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(),
)
Kết quả trông giống như thế này, không có kết quả Giá trị, trong đó như bộ mã đầu tiên cho tgw trả về một mảng trong Giá trị. Tôi đã thử các Thống kê, Thời kỳ, Tên chỉ số khác nhau nhưng không có kết quả.
{'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}}
Có gì rõ ràng là tôi đang làm sai không? Cảm ơn trước.
Trả lời
Không gian tên của bạn không chính xác:
'Namespace': 'AWS/TransitGatewayAttachment',
nó phải là:
'Namespace': 'AWS/TransitGateway',
Lý do là đó TransitGatewayAttachmentlà một thứ nguyên trong AWS/TransitGatewaykhông gian tên như được giải thích trong:
- Các chỉ số CloudWatch cho các cổng chuyển tuyến của bạn
Điều này cuối cùng đã hoạt động và tôi tin rằng đang cung cấp cho tôi các chỉ số về tệp đính kèm. Vì vậy, có vẻ như bạn phải cung cấp cả tgw và tệp đính kèm trong thứ nguyên nhưng nó chỉ trả về 1 mảng kết quả và nhìn vào nó và so sánh khi tôi chỉ yêu cầu tgw, có vẻ như giá trị chính xác chỉ cho tệp đính kèm.
Tôi có manh mối từ việc nhìn vào bảng điều khiển mgmt của cloudwatch và nhìn vào biểu đồ, tab nguồn hiển thị đoạn mã này bên dưới và nhận thấy nó đã chỉ định tgw và tệp đính kèm mặc dù nó chỉ là đồ thị tệp đính kèm.
{
"view": "timeSeries",
"stacked": false,
"metrics": [
[ "AWS/TransitGateway", "BytesIn", "TransitGatewayAttachment", "tgw-attach-08ed0e1d3e5f488d8", "TransitGateway", "tgw-0456c4c6fe596f58b" ]
],
"region": "us-east-1"
}
Mã hoạt động
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(),
)