cloudwatch API เพื่อดึงเมตริก TransitGatewayAttachment ผ่าน python ไม่ทำงาน
ฉันสามารถดึงเมตริก transitgateway ได้โดยใช้รหัสด้านล่าง แต่ใช้ไม่ได้เมื่อฉันทำกับไฟล์แนบ 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 แนบแบบละเอียดเกิดขึ้นเมื่อเร็ว ๆ นี้ดังนั้นอาจยังไม่รองรับผ่าน 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}}
มีอะไรชัดเจนว่าฉันทำผิด? ขอบคุณล่วงหน้า.
คำตอบ
เนมสเปซของคุณไม่ถูกต้อง:
'Namespace': 'AWS/TransitGatewayAttachment',
มันควรจะเป็น:
'Namespace': 'AWS/TransitGateway',
เหตุผลก็TransitGatewayAttachmentคือมิติภายในAWS/TransitGatewayเนมสเปซดังที่อธิบายไว้ใน:
- เมตริก CloudWatch สำหรับเกตเวย์การขนส่งของคุณ
ในที่สุดสิ่งนี้ก็ใช้ได้ผลและฉันเชื่อว่ากำลังให้เมตริกไฟล์แนบกับฉัน ดูเหมือนว่าคุณต้องให้ทั้ง 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(),
)