logstash过滤器--mutate
原创
©著作权归作者所有:来自51CTO博客作者tiancityycf的原创作品,请联系作者获取转载授权,否则将追究法律责任
概念
filters/mutate 插件是 Logstash 另一个重要插件。它提供了丰富的基础类型数据处理能力。包括类型转换,字符串处理和字段处理等。
Plugin version: v3.5.0
执行顺序
coerce
rename
update
replace
convert
gsub
uppercase
capitalize
lowercase
strip
remove
split
join
merge
copy
也可以指定多个 mutate块来改变执行顺序
filter {
mutate {
split => ["hostname", "."]
add_field => { "shortHostname" => "%{hostname[0]}" }
}
mutate {
rename => ["shortHostname", "hostname" ]
}
}
示例
1、转变参数类型 convert
mutate {
convert => {
"name" => "string"
"age" => "integer"
"state" => "boolean"
}
}
2、复制字段 copy
复制一个已存在的字段到另外一个字段,已存在的字段会被重写到一个新的字段,新的字段不需要单独添加
mutate {
copy => { "source_field" => "dest_field" }
}
3、正则表达式替换 gsub
这里只针对string类型字段
mutate {
gsub => [
#把name字段中的“a”替换为“p”
"name","a","p"
#斜线都替换成下划线
"fieldname", "/", "_",
#正则替换
"fieldname2", "[\\?#-]", "."
]
}
4、大小写转换 lowercase&uppercase
mutate {
#lowercase => [ "name" ]
uppercase => [ "name" ]
}
5、字段重命名 rename
mutate {
rename => {"name" => "name3"}
}
6、除去字段值前后空格 strip
mutate {
strip => ["name"]
}
7、更新字段值 update
mutate {
update => {"name" => "li"}
}
8、修改字段 replace
作用和 update 类似,但是当字段不存在的时候,它会起到 add_field 参数一样的效果,自动添加新的字段。
9、移除字段 remove_field
mutate {
remove_field => ["name"]
}
10、增加字段 add_field
mutate {
add_field => {"testField1" => "0"}
add_field => {"testField2" => "%{name}"} #引用name中的值
}
其他参考官方文档:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-merge