所以我使用标准的ELK堆栈来分析Apache访问日志,这种方式运行良好,但我希望使用KV过滤器将URL参数分解为字段,以便我可以编写更好的查询.
我的问题是,我正在分析的应用程序具有"缓存破坏"动态生成的参数,这导致成千上万的"字段",每个字段发生一次.ElasticSearch似乎对此有严重的麻烦,它们对我没有任何价值,所以我想删除它们.以下是该模式的示例
GET /page?rand123PQY=ABC&other_var=something
GET /page?rand987ZDQ=DEF&other_var=something
在上面的示例中,我要删除的参数以'rand'开头.目前我的logstash.conf使用grok从访问日志中提取字段,然后使用kv提取查询字符串参数:
filter {
grok {
path => "/var/log/apache/access.log"
type => "apache-access"
}
kv {
field_split => "&?"
}
}
有没有办法可以过滤掉与模式匹配的任何字段rand[A-Z0-9]*=[A-Z0-9]*?我见过的大多数示例都是按照确切名称定位字段,我无法使用.我确实想知道将请求字段重新编写到一个新字段中,在其上运行KV,然后将其删除.那会有用吗?