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

How to query AWS CloudWatch logs using AWS CloudWatch Insights?

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

日志格式是这样的-

Request ID => 572bf6d2-e3ff-45dc-bf7d-c9c858dd5ccd

我可以在没有 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

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

fields @timestamp, @message
| filter @message like /Request ID =>/
| filter @message like /572bf6d2-e3ff-45dc-bf7d-c9c858dd5ccd/
| sort @timestamp desc
| limit 20

或者,如果您所有的日志都遵循相同的格式,您可以使用 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

同时尝试在查询的右上角扩大您的相对时间范围,以防您要查找的请求在尝试第一次查询后超出 1 小时范围。

而不是像接受的答案那样使用两个 like 过滤器,我建议使用 in 运算符,如下所示。这样你的代码就更短更清晰了。

fields @timestamp, @message
| filter @message in ["Request ID =>", "572bf6d2-e3ff-45dc-bf7d-c9c858dd5ccd"]
| sort @timestamp desc
| limit 20