AWS CloudWatch Logs 筛选模式问题

问题描述 投票:0回答: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 个错误。

任何可以提供的帮助将不胜感激。

amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs
3个回答
4
投票

是的!现在您可以使用 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,则需要选择使用查询扫描的服务日志。在查询框顶部的组合框中。


0
投票

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

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

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

语法描述如下:

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


0
投票

用户指南中的指标过滤器、订阅过滤器、过滤日志事件和 Live Tail 的过滤器模式语法下隐藏了一个示例。

根据您的情况,请尝试

{ $.status="4*" }
。 (这与另一个使用方括号的答案中的建议不同,尽管引用了相同的文档页面,但我无法开始工作。)

这是 CloudWatch 中一些 API 网关日志的样子(我只有 5xx 错误可供测试)。

© www.soinside.com 2019 - 2024. All rights reserved.