如何调整CloudWatch Insights查询输出的列顺序与Timestamp显示?
问题
我使用以下CloudWatch Log Insights查询提取内存/CPU相关统计数据:
stats avg(MemoryUtilized) as MemoryUsed, avg(CpuUtilized) as CpuUsed by TaskDefinitionFamily, TaskId, MemoryReserved, CpuReserved, Timestamp | filter Type="Task" and TaskDefinitionFamily="auth-customer-TEST" | sort Timestamp, TaskDefinition, TaskId desc | limit 2
当前输出结果:
| TaskDefinitionFamily | TaskId | MemoryReserved | CpuReserved | Timestamp | MemoryUsed | CpuUsed |
|---|---|---|---|---|---|---|
| my-service | 901abb3daadd49c6983f3c6431fd33b8 | 1024 | 256.0 | 1690275900000 | 322 | 1.6687 |
| my-service | 9c831a65724e4b90ab2c4366954ac392 | 1024 | 256.0 | 1690275900000 | 295 | 1.1168 |
需要解决的问题:
- 调整列顺序,让
MemoryUsed与MemoryReserved相邻,CPU相关列也相邻; - 想移除Timestamp字段,但不在
stats子句中指定会导致排序异常; - 希望Timestamp能显示为人类可读格式,或者至少移到表格末尾。
解决方案
方案1:调整列顺序+格式化Timestamp(显示在末尾)
使用display指定输出列顺序,结合format转换时间格式,最终查询如下:
stats avg(MemoryUtilized) as MemoryUsed, avg(CpuUtilized) as CpuUsed by TaskDefinitionFamily, TaskId, MemoryReserved, CpuReserved, Timestamp | filter Type="Task" and TaskDefinitionFamily="auth-customer-TEST" | sort Timestamp, TaskDefinition, TaskId desc | display TaskDefinitionFamily, TaskId, MemoryReserved, MemoryUsed, CpuReserved, CpuUsed, Timestamp | format Timestamp as date("%Y-%m-%d %H:%M:%S") | limit 2
输出效果示例:
| TaskDefinitionFamily | TaskId | MemoryReserved | MemoryUsed | CpuReserved | CpuUsed | Timestamp |
|---|---|---|---|---|---|---|
| my-service | 901abb3daadd49c6983f3c6431fd33b8 | 1024 | 322 | 256.0 | 1.6687 | 2023-07-25 15:45:00 |
| my-service | 9c831a65724e4b90ab2c4366954ac392 | 1024 | 295 | 256.0 | 1.1168 | 2023-07-25 15:45:00 |
方案2:保留排序逻辑但隐藏Timestamp
如果不需要显示Timestamp,只需在display中排除该字段即可,stats里仍保留它用于排序:
stats avg(MemoryUtilized) as MemoryUsed, avg(CpuUtilized) as CpuUsed by TaskDefinitionFamily, TaskId, MemoryReserved, CpuReserved, Timestamp | filter Type="Task" and TaskDefinitionFamily="auth-customer-TEST" | sort Timestamp, TaskDefinition, TaskId desc | display TaskDefinitionFamily, TaskId, MemoryReserved, MemoryUsed, CpuReserved, CpuUsed | limit 2
输出效果示例:
| TaskDefinitionFamily | TaskId | MemoryReserved | MemoryUsed | CpuReserved | CpuUsed |
|---|---|---|---|---|---|
| my-service | 901abb3daadd49c6983f3c6431fd33b8 | 1024 | 322 | 256.0 | 1.6687 |
| my-service | 9c831a65724e4b90ab2c4366954ac392 | 1024 | 295 | 256.0 | 1.1168 |
关键说明
display子句是CloudWatch Log Insights中控制输出列顺序的核心,可完全自定义列的排列;format子句支持多种日期格式,可根据需求调整(比如date("%Y-%m-%d")只显示日期);stats中保留Timestamp是为了维持排序逻辑,避免分组后排序异常,即使不显示也不会影响性能。
内容的提问来源于stack exchange,提问作者mal
相关产品推荐
相关产品推荐

