logstash使用
一、mutate 插件介绍
1. 描述
muatet 过滤器允许用户对字段进行改变,可以重命名、替换和修改事件中的字段。
2. 操作顺序
- coerce
- rename
- update
- replace
- convert
- gsub
- uppercase
- capitalize
- lowercase
- strip
- split
- join
- merge
- copy
二、convert
- 功能:类型转换
- 介绍:将目标字段转换为目标类型
- 类型介绍:
- integer:将字段转换为整数, 逗号分隔符和点小数 1,000=1000 1.000=1
- integer_eu:将字段转换为整数, 点分隔符和逗号小数 1,000=1 1.000=1000
- float:将字段转换为浮点数, 逗号分隔符和点小数
- float_eu:将字段转换为浮点数, 点分隔符和逗号小数
- string:将字段转换为字符串
- boolean:将字段转换为布尔值
- true:1、1.0、“true”、“t”、“yes”、“y”、“1”、“1.0”
- false:0、0.0、“false”、“f”、“no”、“n”、“0”、“0.0”、“”
- 所有其他值直接通过而不进行转换并记录警告消息
filter{ mutate{ convert => { "message" => "integer" "[log][syslog][facility][code]" => "boolean" } } }
{ "log": { "syslog": { "facility": { "code": false, "name": "kernel" }, "priority": 0, "severity": { "code": 0, "name": "Emergency" } } }, "message": 173 }
三、copy
- 功能:复制
- 介绍:将现有字段复制到另一个字段,现有的目标字段将会被覆盖
filter{ mutate{ # 将message的值复制给type copy => { "message" => "type" } } }
四、gsub
- 功能:正则替换
- 介绍:将正则表达式与字段匹配,将匹配字符串替换为替换字符串
filter{ mutate{ gsub => [ # 将message字段中的所有a都替换成b # "message","a","b" # 支持正则替换 "message","a+","b" ] } }
五、join
- 功能:数组连接
- 介绍:使用分隔符连接数组,如果目标不是数组则不执行操作
filter{ mutate{ # 将message字段按照空格拆分成数组 split => { "message" => " " } # 将message数组按照,连接 join => { "message" => "," } } }
{ "event" => { "original" => "姚明 刘翔" }, "message" => "姚明,刘翔", }
六、lowercase
- 功能:小写转换
- 介绍:将字符串中的字母全部变为小写
filter { mutate { # 将message字段变为小写 lowercase => ["message"] } }
{ "event" => { "original" => "Python" }, "message" => "python" }
七、merge
- 功能:合并
- 介绍:将两个字段合并为一个数组
filter { mutate { # 将@timestamp字段与message字段合并为数组 merge => { "message" => "@timestamp" } } }
{ "@timestamp" => 2022-04-25T09:28:20.531150Z, "event" => { "original" => "Python" }, "message" => [ [0] "Python", [1] 2022-04-25T09:28:20.531150Z ] }
八、coerce
- 功能:字段默认值
- 介绍:如果目标字段为空,则为该字段赋默认值
filter { mutate { # 如果field1字段为空则设置为0 coerce => { "field1" => 0 } } }
九、rename
- 功能:重命名
- 介绍:将目标字段重命名为新的名称,如果新的字段名原本就存在,则覆盖原来的字段
filter { mutate { # 将@timestamp字段重命名为time rename => { "@timestamp" => "time" } } }
{ "time" => 2022-04-25T09:35:23.718005Z, "message" => "123" }
filter { mutate { # 将message字段覆盖为@timestamp的值 rename => { "@timestamp" => "message" } } }
{ "event" => { "original" => "123" }, "message" => 2022-04-25T09:36:55.760534Z }
十、replace
- 功能:替换
- 介绍:将目标字段的值替换为新的值,如果该字段不存在,则添加该字段,新值中可以包含变量
filter{ mutate { # 将message字段替换为新的值 replace => { "message" => "这是被替换后的消息" } } }
filter{ mutate { # 将message字段替换为host.ip的值 replace => { "message" => "%{[host][ip]}" } } }
十一、split
- 功能:分隔
- 介绍:使用指定分隔符将字符串拆分为数组
filter { mutate { # 将message字段按照message分隔 split => { "message" => " " } # 取出message分隔后的数组第一个元素 add_field => {"姓名"=>"%{[message][0]}"} # 取出message分隔后的数组第二个元素 add_field => {"性别"=>"%{[message][1]}"} # 取出message分隔后的数组第三个元素 add_field => {"年龄"=>"%{[message][2]}"} } }
十二、strip
- 功能:去除空格
- 介绍:去掉指定字段首尾的空格
filter { mutate { strip => ["message"] } }
{ "event" => { "original" => " 123 " }, "message" => "123" }
十三、update
- 功能:更新字段信息
- 介绍:更新指定字段的内容,如果字段不存在,则不执行任何操作
filter { mutate { update => { "message" => "新的字段信息" } } }
{ "event" => { "original" => "原本的字段信息" }, "message" => "新的字段信息" }
十四、uppercase
- 功能:字段内容大写
- 介绍:将指定字段的字母变为大写
filter { mutate { uppercase => ["message"] } }
{ "event" => { "original" => "Python" }, "message" => "PYTHON" }
十五、capitalize
- 功能:首字母大写
- 介绍:将字段内容的首字母变为大写
filter { mutate { uppercase => ["message"] } }
{ "event" => { "original" => "python" }, "message" => "Python" }全文完
本文由 简悦 SimpRead 优化,用以提升阅读体验
使用了 全新的简悦词法分析引擎 beta,点击查看详细说明
本文来自博客园,作者:游走De提莫,转载请注明原文链接:https://www.cnblogs.com/Gaimo/p/17090048.html