在CloudWatch Insight中搜索WAF日志的键/值对



因此,AWS Cloudfront WAF日志被发送到AWS Cloud Insights。我如何搜索的键/值对的随机位置为httpRequest数组?

日志示例如下:

httpRequest.headers.0.name  host
httpRequest.headers.0.value www.somedomain.com
httpRequest.headers.1.name  cache-control
httpRequest.headers.1.value no-cache
httpRequest.headers.2.name  pragma
httpRequest.headers.2.value no-cache
httpRequest.headers.3.name  accept
httpRequest.headers.3.value */*
httpRequest.headers.4.name  accept-encoding
httpRequest.headers.4.value gzip, deflate
httpRequest.headers.5.name  from
httpRequest.headers.5.value bingbot(at)microsoft.com
httpRequest.headers.6.name  user-agent
httpRequest.headers.6.value Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

所以,一个JSON数组有两个哈希值。这个数组的顺序是随机的。有时user-agent将在1或3或x中,我如何搜索"value"的值?与"名称"的值对应的字段。字段"user-agent";? 例如:我想搜索"bingbot"但是要使它特定于匹配"用户代理"。我知道我可以为bingbot在@message上做一个过滤器,但这似乎很昂贵,而且不特定/容易产生错误点击。

好的,我认为最简单的方法是将@message视为字符串并编写自己的解析规则,通过regex将您想要的值拉到自己的列中,然后您可以搜索/做任何事情。

如果谁有更好的主意,我洗耳恭听。
fields @timestamp, @message
| parse @message /(?i)"name":"user-agent","value":"(?<httpRequestUserAgent>[^"]+)/
| filter action == "BLOCK"
| stats count() as httpRequestUserAgentCount by httpRequestUserAgent 
| sort by httpRequestUserAgentCount desc 

(?i)标记为不区分大小写。

最新更新