在使用Filebeat导入数据的时候,Filebeat会附带一些环境相关的json数据一起发送到out端,但是在一些日志入库场景下,日志数量庞大,额外的数据字段会带来不必要的磁盘消耗,所以需要在入库的时候剔除掉,那么如何剔除呢?
在满足需求的情况下,我使用了Filebeat自身的剔除逻辑,未使用Logstash相关的功能。在Filebeat中,程序提供了processor
模块,用以对数据在发送前进行自定义的处理操作。所以,可以通过此功能,将原始event中的一些不需要的字段进行剔除。
同样,在processor
中,可以定义drop_fields
,通过这个,就可以drop掉一些不需要的字段,当然,正如官方文档中说的那样,@timestamp
和type
字段是无法去除的,好在这两个字段不算大,可以保留,至于其他的字段,例如agent
、host
、cloud
等,如不需要,可以直接去掉了,配置方法如下:
但是,有时候,明明配置了drop掉这些字段,但是最后入库的时候仍然会保留这些字段,令人费解,然鹅实际上,drop配置是生效的,但是
processor
逻辑是可以重复的,也就是我们在自己的process中去掉了,但是有其他的地方又给加回去了,例如filebeat.yml配置文件中的全局processor配置,如下所示:Snipaste_2021-07-06_10-55-37.png
但是,即使在这里注释掉了这些全局processor配置,在最后的入库中仍然可能会携带那些多余的字段,so why?至少明面上没发现有哪里在添加,不过背后肯定是又默默加上去了,所以,我们需要把我们的drop逻辑放到全局配置里,如下:
Snipaste_2021-07-06_10-55-50.png
这样的话,多余的字段终于被去掉了,不过放到全局配置里,意味着全局生效,至于是否满足各自的需要,还需各自评估。
网友评论