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

CloudWatch日志提取client、orderId等字段失败求解决方案

CloudWatch日志字段提取方案

日志格式示例

POST /api/v1/order 200 123 bytes 456 bytes 458.000 ms Apache-HttpClient/4.5.14 (Java/17.0.12) { "orderId": "A123" } {"partnerOrderId": "B456", "createdDate": "2023-04-05"}

原查询语句(无法正常工作)

fields @timestamp, @message, @client, @orderId, @partnerOrderId
| parse @message /(?<@client>(?<=ms\s).*)/
| parse @message /(?<@orderId>(?<=orderId\s).*)/
| parse @message /(?<@partnerOrderId>(?<=partnerOrderId\s).*)/

问题分析

  1. 提取@client时,.*是贪婪匹配,会捕获ms之后的所有内容,无法截止到{之前
  2. 提取orderId和partnerOrderId时,仅匹配orderId\s后的内容,未考虑JSON键值对的引号结构,导致无法正确捕获ID值

正确查询语句

fields @timestamp, @message, @client, @orderId, @partnerOrderId
| parse @message /ms\s(?<@client>.*?)\s{/
| parse @message /"orderId":\s*"(?<@orderId>[^"]+)"/
| parse @message /"partnerOrderId":\s*"(?<@partnerOrderId>[^"]+)"/

语句说明

  • 提取@client:用非贪婪匹配.*?,精准捕获ms之后到第一个 {之前的客户端标识内容
  • 提取orderId/partnerOrderId:直接匹配JSON键值对格式,\s*忽略键与值之间的空格,[^"]+捕获引号内的ID字符串,确保只提取目标ID值

预期提取结果

@timestamp @message  @client                   @orderId  @partnerOrderId
timestamp  message   Apache-HttpClient/4.5.14  A123     B456

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:05:55