AWS CloudWatch 解析 JSON 不区分大小写

AWS CloudWatch 解析 JSON 不区分大小写

在 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 模式更改为正则表达式捕获组还允许使用正则表达式进行其他匹配。

相关内容