Logstash 的使用之 Filter (Mutate)

tech2022-10-19  105

文章目录

1、rename2、update3、replace4、convert5、gsub6、uppercase/lowercase7、split8、strip9、remove_field10、join11、merge

mutate插件可以对事件中的数据进行修改,包括rename、update、replace、convert、split、gsub、uppercase、lowercase、strip、remove_field、join、merge等功能。

1、rename

对于已经存在的字段,重命名其字段名称。

filter { mutate { rename => ["syslog_host", "host"] } }

2、update

更新字段内容,如果字段不存在,不会新建

filter { mutate { update => { "sample" => "My new message" } } }

3、replace

与 update 功能相同,区别在于如果字段不存在则会新建字段

filter { mutate { replace => { "message" => "%{source_host}: My new message" } } }

4、convert

数据类型转换。

filter { mutate { convert => ["request_time", "float"] } }

5、gsub

gsub 提供了通过正则表达式实现文本替换的功能。

filter { mutate { gsub => [ # replace all forward slashes with underscore "fieldname", "/", "_", # replace backslashes, question marks, hashes, and minuses # with a dot "." "fieldname2", "[\\?#-]", "." ] } }

6、uppercase/lowercase

大小写转换

filter { mutate { uppercase => [ "fieldname" ] } }

7、split

将提取到的某个字段按照某个字符分割

filter { mutate { split => ["message", "|"] } } #针对字符串 "123|321|adfd|dfjld*=123",可以看到输出结果: { "message" => [ [0] "123", [1] "321", [2] "adfd", [3] "dfjld*=123" ], "@version" => "1", "@timestamp" => "2014-08-20T15:58:23.120Z", "host" => "raochenlindeMacBook-Air.local" }

8、strip

类似 trim,只去除首尾的空白字符

filter { mutate { strip => ["field1", "field2"] } }

9、remove_field

# 删除字段: filter { mutate { remove_field => [ "foo_%{somefield}" ] } }

10、join

将类型为 array 的字段中的 array 元素使用指定字符为分隔符聚合成一个字符串。 如我们可以将 split 分割的结果再重新聚合起来:

filter { mutate { split => ["message", "|"] } mutate { join => ["message", ","] } } #输出结果: { "message" => "123,321,adfd,dfjld*=123", "@version" => "1", "@timestamp" => "2014-08-20T16:01:33.972Z", "host" => "raochenlindeMacBook-Air.local" }

11、merge

对于几个类型为 array 或 hash 或 string 的字段,我们可以使用 merge 合并

filter { mutate { merge => [ "dest_field", "added_field" ] } } # 需要注意的是,array 和 hash 两个字段是不能 merge 的

转载自:

链接:https://www.jianshu.com/p/f47bf814e032 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最新回复(0)