我有几个爬虫,可以爬行多个站点并将内容存储在数据库中。程序的日志存储在 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):
现在你可以看到这个:
现在在你的情况下..你需要这个查询(告诉我你是否需要过滤其他东西)
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,则需要选择使用查询扫描的服务日志。在查询框顶部的组合框中。
您还可以在 CloudWatch 日志的“搜索日志组”功能中使用特殊过滤语法。在您的情况下,您将输入以下搜索词:
[proto, verb, status=4*, ...]
我发现它使用起来更简单一些。但是,不可能将查询保存在任何地方。
语法描述如下:
用户指南中的指标过滤器、订阅过滤器、过滤日志事件和 Live Tail 的过滤器模式语法下隐藏了一个示例。
根据您的情况,请尝试
{ $.status="4*" }
。 (这与另一个使用方括号的答案中的建议不同,尽管引用了相同的文档页面,但我无法开始工作。)
这是 CloudWatch 中一些 API 网关日志的样子(我只有 5xx 错误可供测试)。