CloudWatch Logs按端点聚合并获取最新请求时间记录的查询优化需求
解决CloudWatch Logs端点聚合去重问题
要实现按端点聚合,只保留每个端点最新且耗时最长的记录,你可以借助CloudWatch Logs Insights的dedup命令来完成,结合排序逻辑就能精准得到你想要的结果。
调整后的查询语句
fields request.url as URL, response.content.manager.company.label as Empresa, timestamp as Data, response.status as Status, request.time as TEMPO | filter @logStream = 'production' | sort request.time DESC, Data DESC -- 先按耗时降序,再按时间戳降序,确保优先保留耗时最长且最新的记录 | dedup URL -- 按端点去重,只保留每个端点的第一条记录(也就是排序后的最优记录) | limit 30
逻辑说明
- 过滤与字段提取:和你原来的查询一致,先筛选生产环境的日志流,提取需要的核心字段。
- 排序规则:先按
request.time(请求耗时)降序排列,再按Data(时间戳)降序,这样同一个端点的记录里,耗时最长且最新的那条会排在最前面。 - 去重聚合:
dedup URL会对每个端点(URL字段)只保留排序后的第一条记录,完美实现你要的“每个端点仅保留最新最长耗时记录”的需求。
验证结果
用这个查询后,你会得到和期望完全匹配的结果:每个端点只会出现一次,对应的是该端点耗时最长且时间戳最新的那条请求记录。
内容的提问来源于stack exchange,提问作者Raank




