aws cloudwatch 日志过滤模式包括匹配模式之前和/或之后的行

hai*_*ham 14 amazon-web-services amazon-cloudwatch aws-cli amazon-cloudwatchlogs

有没有办法在 AWS CloudWatch Logs 中的匹配模式之前和/或之后包含 N 行?

假设我有这个查询,并且希望在每次比赛前后都有 3 行。

aws logs filter-log-events --log-group-name my-group --filter-pattern "mypattern"
Run Code Online (Sandbox Code Playgroud)

我目前唯一的解决方法是删除过滤器模式并使用 grep:

aws logs filter-log-events --log-group-name my-group | grep -A 3 -B 3 mypattern
Run Code Online (Sandbox Code Playgroud)

但是,我只想流式传输我需要的日志事件,并将其作为 aws 日志事件查询的一部分。

Kaz*_*sho 11

我遇到了完全相同的问题,发现简单地按时间戳搜索在某种程度上解决了我的问题。

CloudWatch有“Logs Insights”,这是一个流畅的日志搜索器。

通过关键字搜索并获取时间戳,然后使用时间戳过滤附近的日志。

在此输入图像描述

  • Logs Insights 支持数学运算,因此如果您知道特定记录的时间戳是 X,则可以执行“filter @timestamp >= X - 1 和 @timestamp <= X + 1”。当您搜索并复制 X 并且可能希望逐渐增加搜索范围(其中目标事件应大致位于 X 的中间)时,这非常有用 (4认同)

hai*_*ham 6

AWS 目前不支持此功能(由贡献者确认),但有一个开放的 GitHub 问题用于跟踪该功能,以便将来可能支持此功能。

与此同时,您将不得不在问题中提到的日志流式传输后进行过滤。

aws logs filter-log-events --log-group-name my-group | grep -A 3 -B 3 mypattern
Run Code Online (Sandbox Code Playgroud)

  • `-C 3` 将执行 `-A 3 -B 3` (3认同)