1

我在解析我的 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):我能够找到使用此正则表达式代码获取摄取 ID 所需的正则表达式:

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

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

在此处输入图像描述

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

可以做些什么来显示每条传入消息的摄取 ID?谢谢大家。

4

1 回答 1

0

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

filter level = "error"
| filter strcontains(@logStream, 'ingest-')
| parse message /ingestId=(?<ingestId>[-\w]+)/
| display ingestId
| fields @timestamp, message, level, @logStream
| sort @logStream, @timestamp asc
于 2020-08-26T21:18:32.190 回答