概述
在使用Filebeat替代Logstash的时候遇到需要从log中摘取数据的case,比如解析access log,最开始的方案是使用Filebeat module功能,把所有load都转移到Elasticsearch的Ingest Node上面。
之后遇到的case是文件路径中带有IP信息,需要把ip摘取出来之后通过DNS域名解析服务器转变成域名。如果依然使用module方式在Ingest node上面抓取的话没法后续做DNS转换的操作,遂考虑在Filebeat上面使用Dissect+DNS Reverse的方案。
-
Dissect:
Dissect是一款轻量级的匹配过滤器,相比于Grok,不做过多的正则匹配。如若数据格式相对固定并且有明显的分割边界,使用Dissect会比Grok消耗更少的资源。
- dissect:
when:
equals:
type: 'XXX'
tokenizer: "/%{}/%{}/%{}/%{}/%{}/%{IP}/"
field: "path"
target_prefix: "ip"
target_prefix 表示新生成了一个叫ip object字段,所有匹配到的字段名都会在这个字段之下
%{IP}表示生成的字段会位于IP这个字段内,结合target_prefix,则位于ip.IP 字段下
%{} 可以用于跳过匹配
%{?test}用于匹配到之后不生成新字段
%{+test}用于多个匹配都追加到test字段中
-
DNS Reverse
DNS Reverse 用于DNS域名解析,因为每个事件都需要一次request查询匹配,不适宜放在中央的ES端处理,遂在client端可以进行如下配置
- dns:
when:
equals:
component: 'xxx'
type: reverse
action: replace
fields:
ip.IP: host
success_cache:
capacity.initial: 1000
capacity.max: 10000
timeout: 60s
nameservers: ["xx.xxx.xxx.xxx"]
最后
以上就是妩媚芹菜为你收集整理的Filebeat Filter - Dissect/DNS Reverse的全部内容,希望文章能够帮你解决Filebeat Filter - Dissect/DNS Reverse所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复