使用CloudWatch Insight Logs解析JSON

问题描述

我在将JSON解析为时遇到困难,无法显示消息的ingestId。我上传到CloudWatch的JSON文件如下:

{
    "message": "changeStatus ingestId=2343d8sf-etc,status=UPLOADING","level": "info"
}

我的CloudWatch Log Insight代码如下:

filter level = "error"
| filter @message like /([-\w]{25,})/
| filter strcontains(@logStream,'ingest-')
| fields @timestamp,@message,@logStream,level
| sort @logStream,@timestamp asc

Insight会产生一个新列,其中没有我想要的ID信息。我在做错什么,所以我至少可以知道摄取的ID?

非常感谢您的帮助。

编辑(v2): 我可以使用以下正则表达式代码找到获取Ingest ID所需的正则表达式:

/([-\w]{25,})/

这是代码。它使用新的ingestId列成功运行,但仍然没有我正在寻找的摄取ID:

enter image description here

filter level = "error"
| filter strcontains(@logStream,'ingest-')
| filter @message like /(ingestId)/
| parse @message "\"ingestId\": \"/([-\w]{25,})/\"" as ingestId
| fields @timestamp,@timestamp asc

该怎么办,以便我可以显示收到的每条消息的提取ID?谢谢大家。

解决方法

我能够解决此问题,以在该列中显示提取ID。我希望这将帮助遇到此问题的任何人都能从您的消息中获取信息:

obj