Logstash过滤器之Mutate过滤器详解
Mutate(改变)过滤器插件
该文章内容参考官方文档7.8版本,由于使用范围有限并未翻译全篇文章
描述
Mutate过滤器允许你执行一些对字段的修改操作。你可以通过这个过滤器对事件中的字段进行重命名,移除,替换和修改。
处理命令
在Mutate过滤器的配置文件中可以执行如下命令:
- 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" ]}
}
Mutate过滤器的配置选项
下面是过滤器支持的配置项,配置项详情参考下面的详解。
选项 | 类型 | 是否必须 | 简述 |
---|---|---|---|
convert | hash | No |
转化命令,是对字段类型做转化,例如:String 转为integer
|
copy | hash | No | 将一个已经存在的字段复制给另一个字段。 |
gsub | array | No | 通过正则表达式匹配字段的值,然后替换为指定的字符串。 |
join | hash | No | 使用分隔符连接数组。 |
lowercase | array | No | 将string类型的字段值转化为小写的形式。 |
merge | hash | No | 合并两个数组或者Hash类型的字段。string类型的字段会自动的合并为一个数组。 |
coerce | hash | No | 为存在但是不为空的字段设置默认值 |
rename | hash | No | 字段重命名 |
replace | hash | No | 将一个字段的值替换为一个新的值。 |
split | hash | No | 将一个字段按照指定符号切割为数组。 |
strip | array | No | 去除字段中的空格。 |
update | hash | No | 更新字段为一个新值。 |
uppercase | array | No | 将字符串字段转化为大写形式。 |
capitalize | array | No | 将字符串字段转化为首字母大写的形式。 |
tag_on_failure | string | No | 错误发生时的配置 |
convert
- 字段类型为 hash
- 没有默认值
将字段转化为不同的类型,例如:string 转 integer。如果被转化的字段类型是数组,数组的所有成员都将被转化。如果对象是hash 就不会进行转化。
实例:
filter {mutate {convert => {"fieldname" => "integer""booleanfield" => "boolean"}}
}
copy
- 字段类型为 hash
- 没有默认值
将一个已经存在的字段复制给另一个字段。如果目标字段已经存在,目标字段的值将被覆盖。
实例:
filter {mutate {copy => { "source_field" => "dest_field" }}}
gsub
- 字段类型为 array
- 没有默认值
通过正则表达式匹配字段的值,然后替换为指定的字符串。只有字段类型是string类型或者string数组类型才会进行匹配替换。其他类型字段不会做任何操作。
注意配置文件中需要转义斜杠线。
实例:
filter {mutate {gsub => [# replace all forward slashes with underscore"fieldname", "/", "_",# replace backslashes, question marks, hashes, and minuses# with a dot ".""fieldname2", "[\\?#-]", "."]}
}
join
- 字段类型为 hash
- 没有默认值
使用分隔符连接数组。如果不是数组则不执行操作。
实例:
filter {mutate {join => { "fieldname" => "|" }}
}
[“a”,“b”]转为 “a”|“b”
lowercase
- 字段类型为 array
- 没有默认值
将string类型的字段值转化为小写的形式。
实例:
filter {mutate {lowercase => [ "fieldname" ]}}
merge
- 字段类型为 hash
- 没有默认值
合并两个数组或者Hash类型的字段。string类型的字段会自动的合并为一个数组。例如:
array
+ string
可以合并为一个数组
string
+ string
会合并为数组
array
和 hash
类型的两个字段将不会执行合并.
实例:
filter {mutate {merge => { "dest_field" => "added_field" }}
}
coerce
- 字段类型为 hash
- 没有默认值
为存在但是不为空的字段设置默认值。
实例:
filter {mutate {# Sets the default value of the 'field1' field to 'default_value'coerce => { "field1" => "default_value" }}
}
rename
- 字段类型为 hash
- 没有默认值
字段重命名
实例:
filter {mutate {# Renames the 'HOSTORIP' field to 'client_ip'rename => { "HOSTORIP" => "client_ip" }}
}
replace
- 字段类型为 hash
- 没有默认值
将一个字段的值替换为一个新的值。新值可以包括%{foo}字符串,以帮助您从事件的其他字段构建出新值。
实例:
filter {mutate {replace => { "message" => "%{source_host}: My new message" }}
}
split
- 字段类型为 hash
- 没有默认值
将一个字段按照指定符号切割为数组。仅在string类型的字段中生效。
实例:
filter {mutate {split => { "fieldname" => "," }}
}
strip
- 字段类型为 hash
- 没有默认值
去除字段中的空格。NOTE:去除字段中前端部分.
实例:
filter {mutate {split => { "fieldname" => "," }}
}
update
- 字段类型为 hash
- 没有默认值
更新字段为一个新值。如果这个字段不存在,更新将不执行。
实例:
filter {mutate {update => { "sample" => "My new message" }}
}
uppercase
- 字段类型为 hash
- 没有默认值
将字符串字段转化为大写形式。
实例:
filter {mutate {uppercase => [ "fieldname" ]}
}
capitalize
- 字段类型为 hash
- 没有默认值
将字符串字段转化为首字母大写形式。
实例:
filter {mutate {capitalize => [ "fieldname" ]}
}
tag_on_failure
- 字段类型为 hash
- 默认值
_mutate_error
如果在过滤器中发生了错误,这次操作将不会执行,并且提供一个标记标记当前事件。
Logstash过滤器之Mutate过滤器详解相关推荐
- android edittext 过滤英文名称,Android 限制edittext 整数和小数位数 过滤器(详解)
写了一个过滤器,根据需要限制edittext输入的整数和小数位,如下代码: package allone.verbank.apad.client.component; import android.t ...
- HBase的布隆过滤器详解
HBase的布隆过滤器详解 1.布隆过滤器的简单介绍 2.布隆过滤器的原理分析 2.1 哈希表存在的问题 2.2 布隆过滤器的原理 2.2.1 原理详解 2.2.2 布隆过滤器失误率的调节 2.2.3 ...
- asp.net core MVC 过滤器之ActionFilter过滤器(二)
简介 Action过滤器将在controller的Action执行之前和之后执行相应的方法. 实现一个自定义Action过滤器 自定义一个全局异常过滤器需要实现IActionFilter接口 publ ...
- [转]布隆过滤器详解
布隆过滤器 (Bloom Filter)是由Burton Howard Bloom于1970年提出,它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中.在垃圾邮件过滤 ...
- Java学习日报—Swagger介绍 与 布隆过滤器详解—2021/12/01
目录 1. Swagger 1.1 介绍 1.2 Swagger 的优势 1.3 简单使用 1.3.1 集成 Swagger 管理 API 文档 1.3.2 在线测试接口 1.4 常用注解 1.5 参 ...
- shell sed过滤器详解
1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区 ...
- Servlet之过滤器详解
Servlet分为三种:标准的Servlet----MVC中控制器 .过滤Servlet(过滤器).监听Servlet(监听器). 这篇博客将结合实例来讲解过滤Servlet(过滤器). Servle ...
- 拦截器与过滤器详解,使用方式与注意事项,使用场景以及区别与联系
过滤器Filter 定义 对Servlet容器调用Servlet的过程进行拦截,基于函数回调实现 常见使用场景 统一设置编码 过滤敏感字符 登录校验 URL级别的访问权限控制 数据压缩 使用方式 这了 ...
- STM32定时器之预分频器详解
STM32定时器(TIM)之预分频器(PSC)详解 在STM32的定时器中,预分频器(Prescaler-PSC)用来将定时器时钟源进行分频输出. 预分频器的值由寄存器TIMx_PSC设定,是一个16 ...
- logstash filter 过滤器详解
一.grok 正则捕获插件 grok是一个十分强大的logstash filter插件,他可以通过正则解析任意文本,将非结构化日志数据解析成结构化和方便查询的结构.是目前logstash 中解析非结构 ...
最新文章
- MEET2020 | 嘉宾已确认!李开复、倪光南等AI大咖齐聚,共话人工智能新价值新边界新格局...
- IOS消息机制-委托(ptotocol与delegate)
- VS2010+OpenCV2.4.3配置(一次设置,永久生效)
- DataTable的Ajax使用
- 简易售货机JAVA sql_自动售货机 - 笨拙的小Q的个人空间 - OSCHINA - 中文开源技术交流社区...
- java集合类程序代码_Java集合类源代码分析二:ArrayList(1)
- PHP魔术方法小结.md
- webgis之相关工具
- Charles安卓8手机抓包
- 现在谁还会LOL钻石网吧特权?
- 音频,视频和视觉效果
- mysql字段长度的作用_数据库字段的长度 作用
- Java在线打开word文档实现指定用户只能编辑指定区域
- java黄金分割点游戏_结对编程——Java实现黄金分割点游戏
- 做自媒体短视频,最简单的赚钱方法,就是做流量收益
- iOS 中内存的管理?
- SEO关键词排名优化做到百度首页的核心操作
- 杂牌机搞机之旅最终章————刷入Xposed框架
- C++判断一个数是不是质数
- linux服务器强行删除隐藏文件