如何在Logstash过滤后的输出中移除各类默认字段?
在Logstash过滤后移除指定默认字段的方法
嘿,这个需求很常见!要在Logstash完成过滤操作后移除那些默认生成的字段,用mutate插件就能轻松搞定,下面给你两种实用的配置方式:
方法一:批量移除(推荐,适用于Logstash 5.x及以上版本)
新版本的mutate插件支持remove_fields参数,可以一次性传入所有要移除的字段数组,配置起来更简洁。把这段代码放在你的filter块末尾(确保所有过滤逻辑完成后再删字段):
filter { # 这里放你已有的过滤逻辑,比如grok解析、date格式化等 mutate { remove_fields => [ "version", "hostname", "name", "tags", "@version", "prospector", "source", "host", "type", "offset" ] } }
方法二:单个字段移除(适用于Logstash 2.x及更早版本)
如果你的Logstash版本比较老,不支持批量的remove_fields,可以用remove_field参数逐个指定要移除的字段:
filter { # 已有过滤逻辑放在这里 mutate { remove_field => "version" remove_field => "hostname" remove_field => "name" remove_field => "tags" remove_field => "@version" remove_field => "prospector" remove_field => "source" remove_field => "host" remove_field => "type" remove_field => "offset" } }
小提示
- 注意字段名的准确性,比如
@version是带@符号的,别写错大小写或符号; - 如果某些字段在你的场景下可能不存在(比如部分输入插件不会生成
prospector字段),也不用担心,Logstash会自动忽略不存在的字段,不会报错; - 一定要把这个
mutate移除字段的配置放在所有过滤逻辑的最后,避免中间步骤需要用到这些字段时被提前删掉。
内容的提问来源于stack exchange,提问作者sabbisetty bhagavan
相关产品推荐
相关产品推荐

