如何使用 AWS CloudWatch Insights 查询 AWS CloudWatch 日志?

Ani*_*aje 7 amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights

我有很多 AWS Lambda 日志,我需要查询它们以找到相关的日志流名称,
我正在日志中记录一个特定的字符串,
我需要对其进行类似或精确查询。

日志格式是这样的 -

Request ID => 572bf6d2-e3ff-45dc-bf7d-c9c858dd5ccd
Run Code Online (Sandbox Code Playgroud)

我可以在没有 UUID 字符串的情况下查询日志 -

在此处输入图片说明

但是如果我在查询中提到 UUID,它不会显示结果 - 在此处输入图片说明

使用的查询 -

fields @timestamp, @message
| filter @message like /Request ID =>/
| sort @timestamp desc
| limit 20

fields @timestamp, @message
| filter @message like /Request ID => 572bf6d2-e3ff-45dc-bf7d-c9c858dd5ccd/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)

小智 7

您是否尝试在第一个查询的消息字段上添加额外的过滤器以进一步缩小结果范围?

fields @timestamp, @message
| filter @message like /Request ID =>/
| filter @message like /572bf6d2-e3ff-45dc-bf7d-c9c858dd5ccd/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)

或者,如果您的所有日志都遵循相同的格式,您可以使用 parse 关键字来拆分您的 UUID 字段并使用类似的内容进行搜索

fields @timestamp, @message
| parse @message "* * Request ID => *" as datetime, someid, requestuuid
| filter uuid like /572bf6d2-e3ff-45dc-bf7d-c9c858dd5ccd/
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)

还可以尝试扩大查询右上角的相对时间范围,以防万一您要查找的请求自尝试第一个查询以来已超出 1 小时范围。