AWS CloudWatch 日志过滤模式问题

3
我有几个爬虫程序,用于爬取多个网站并将内容存储在数据库中。该程序的日志存储在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错误。
非常感谢提供任何帮助。
2个回答

4

是的!现在你可以使用 Logs Insights 来查询日志 :)

首先... 你需要拥有新的用户界面(或者另一种方法是进入 "Logs Insights" 服务... 哈哈)

CloudWatch -> CloudWatch 日志 -> 日志组 -> [你的服务日志]

在新的用户界面中,你会看到这个按钮(或者在 AWS CLI 的搜索引擎中选择 Logs Insights):

Cloud Watch Example

现在你可以看到这个:

Logs Insights UI

  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]的日志。希望这能解决您的问题。

注意:如果您直接从搜索引擎进入“日志洞察”,则需要在查询框顶部的组合框中选择使用查询扫描的服务日志。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接