AWS CloudWatch Logs 过滤器模式问题

AWS CloudWatch Logs filter pattern issues

我有几个抓取多个站点并将内容存储在数据库中的抓取工具。该程序的日志存储在 CloudWatch Logs 中。

如果爬虫成功拉回内容,它看起来类似于下面

HTTP GET: 200 - https://www.thecheyennepost.com/news/national/r

HTTP GET: 200 - https://www.thecheyennepost.com/news/f-e-warren-hous

我正在处理的问题是确定何时弹出 400 错误。下面是一个例子:

HTTP GET: 429 - https://www.livingstonparishnews.com/search/?l=25&sort=

HTTP GET: 429 - https://www.livingstonparishnews.com/search/?l=25&sort=rele

HTTP GET: 429 - https://www.ktbs.com/search/?l=25&s=start_time&sd=desc&f=

我尝试使用 status_code=4*,但没有任何效果

我只想过滤掉所有 400 错误。

如能提供任何帮助,我们将不胜感激。

是的!现在您可以使用 Logs Insights :)

首先...您需要安装新的 UI 或以其他方式转到“Logs Insights”服务...jaja

CloudWatch -> CloudWatch Logs -> 日志组 -> [您的服务日志]

使用新的 UI 你可以看到这个按钮(或者去 aws cli 的搜索引擎中的 Logs Insights):

现在你可以看到这个:

  1. 这是一个查询框,就像一个SQL。
  2. 您要搜索的时间范围

现在你的情况..你需要这个查询(告诉我你是否需要过滤其他东西)

fields @message
| sort @timestamp desc
| filter @message like /4{1}[0-9]{1}[0-9]{1}/

我看到了你的日志,你的状态代码之间有空格,我认为这是最好的

fields @message
| sort @timestamp desc
| filter @message like / 4{1}[0-9]{1}[0-9]{1} /

就这些了

现在 运行 查询,您将只看到包含状态代码 [4xx] 的日志。 希望能解决你的问题

注意:如果您直接从搜索引擎转到 Logs Insights,您需要 select 您使用查询扫描的服务日志。在查询框顶部的组合框上。

您还可以在 CloudWatch 日志的“搜索日志组”功能中使用特殊的过滤语法。在您的情况下,您将输入以下搜索词:

[proto, verb, status=4*, ...]

我发现它使用起来更简单一些。但是,无法将查询保存在任何地方。

语法描述如下:

https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#extract-log-event-values