You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取指定源请求处理时间的CloudWatch Insights查询需求

问题描述

我的应用每个请求会生成两条日志事件,格式示例如下:

日志事件1----> Found Source : A | CorrelationId : GuidA
日志事件2----> Total Processing Time : 15 | CorrelationId : GuidA
日志事件3----> Found Source : B | CorrelationId : GuidB
日志事件4----> Total Processing Time : 35 | CorrelationId : GuidB
日志事件5----> Found Source : B | CorrelationId : GuidC
日志事件6----> Total Processing Time : 45 | CorrelationId : GuidC

需要编写CloudWatch Insights查询语句,获取指定源(比如源为B)的所有请求处理时间,返回结果需包含Processing Time和CorrelationId字段,格式如下:

Processing TimeCorrelationId
35GuidB
45GuidC

尝试过嵌套查询,但CloudWatch Insights不支持子查询,求可行方案。

解决方案

可以利用CloudWatch Insights的字段解析和分组统计能力来实现,具体查询语句如下:

fields @message
| parse @message "Found Source : * | CorrelationId : *" as Source, CorrelationId
| parse @message "Total Processing Time : * | CorrelationId : *" as ProcessingTime, CorrelationId
| stats max(ProcessingTime) as "Processing Time" by CorrelationId, Source
| filter Source = "B"
| display "Processing Time", CorrelationId

语句解释:

  • 先提取日志的原始消息内容,为后续解析做准备
  • 用两次解析规则,分别从两类日志里提取出Source、CorrelationId和ProcessingTime字段——同一个请求的两条日志会通过CorrelationId自动关联到同一条记录中
  • 按CorrelationId和Source分组,取出每组的处理时间(因为每个请求对应唯一的处理时间,用max/min/first任意一个函数都能拿到正确值)
  • 过滤出源为B的请求记录
  • 最后指定要显示的字段及顺序,输出符合需求的格式

如果要查询其他源,只需要修改filter Source = "B"中的值即可。

内容的提问来源于stack exchange,提问作者Vinit Divekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:31:04