在 AWS 控制台的 WAF 部分,有一个“CloudWatch Log Insights”选项卡,其中提供了一些示例查询。其中一个是“前 100 个主机”。
fields @timestamp, @message
| parse @message '{"name":"Host","value":"*"}' as host
| stats count(*) as requestCount by host
| sort requestCount desc
| limit 100
我猜想,对于大多数人来说,这是一个有点误导性的报告标题。我发现大约一半的流量使用host
而不是Host
。我花了 30 分钟尝试在解析该标头时使此查询不区分大小写,然后放弃,并决定在这里提问。
实现这一目标最简单的方法是什么?
答案1
这是我解决问题的方法:
fields @timestamp, @message
| parse @message /\{"name":"(H|h)ost","value":"(?<host>.*?)"\}/
| stats count(*) as requestCount by host
| sort requestCount desc
| limit 100
从 glob 模式更改为正则表达式捕获组还允许使用正则表达式进行其他匹配。