CloudWatch Insights日志解析:如何提取GOOGLE前缀ID及StatusCode字段值
可直接使用的CloudWatch Insights查询方案
方案1:通配符parse(写法简单,适合固定格式日志)
fields @timestamp, @message | filter @message like "StatusCode=" # 替换日志中的换行符为空格,避免多行日志匹配失败 | str_replace(@message, "\n", " ") as @message # 拆分日志基础分段 | parse @message "* | * | * | *" as log_time, log_level, log_type, remain_content # 提取GOOGLE前缀的ID,如需保留GOOGLE_前缀,可将匹配规则改为"* " | parse remain_content "GOOGLE_* " as google_id # 提取StatusCode数值 | parse remain_content "StatusCode=*" as status_code # 展示需要的字段 | display @timestamp, google_id, status_code
方案2:正则parse(匹配更严谨,避免格式波动导致匹配错误)
fields @timestamp, @message | filter @message like "StatusCode=" | str_replace(@message, "\n", " ") as @message # 正则直接匹配目标字段,精准捕获GOOGLE前缀ID和状态码 | parse @message /.*\| (?<google_id>GOOGLE_[a-f0-9\-]+).*StatusCode=(?<status_code>\d+)/ | display @timestamp, google_id, status_code
逻辑说明
- 首先用
str_replace把日志里的换行符替换为空格,避免多行日志的结构导致parse匹配失败 - 通配符方案里的
*会自动匹配对应分隔符之间的所有内容,你可以根据实际日志的分隔符调整匹配规则的边界 - 正则方案里的命名捕获组会直接把匹配到的内容赋值为对应字段,
GOOGLE_[a-f0-9\-]+精准匹配GOOGLE开头的UUID格式ID,\d+精准匹配状态码的数字格式,适配性更强
内容的提问来源于stack exchange,提问作者user391
相关产品推荐
相关产品推荐

