Filter模块插件的详细介绍
通用配置项
- filter模块所有的过滤器都支持配置项
Setting Input type Required add_field hash No add_tag array No enable_metric boolean No id string No periodic_flush boolean No remove_field array No remove_tag array No - add_field:向此事件中添加任意字段;字段的名字可以是动态的;字段的名字和值可以使用%{field}包含事件的一部分
- 实例:如果事件具有字段"message"=="Weiking",那么在成功时,这个过滤器将添加字段my_Weiking
- 控制台输入:Weiking
filter{ mutate{ add_field =>{ "my_%{message}" => "Hello world, from %{host}" "new_field" => "new_static_value" } } }
- add_tag:向事件添加标签;标签可以是动态的,并使用%{field}语法包含事件的一部分
- 实例:如果事件有字段"message"=="Weiking",这个过滤器在成功时,会添加Weiking和student标签
- 控制台输入:Weiking
filter{ mutate{ add_tag =>["%{message}","student"] } }
- enable_metric:默认情况下,我们会记录所有可以记录的指标,可以为特定的插件禁用指标集合
- ID:向插件配置中添加唯一的ID。如果不指定ID,logstash将会自动生成唯一的ID。(强烈建议在配置中设置此ID)
- 如果您有两个或多个相同类型的插件。例如有两个json过滤器,那么这是非常有用的。在这种情况下,在使用监视api时添加一个命名ID将有助于监视Logstash
- 实例:
filter{ mutate{ id =>"2000" } }
- periodic_flush: 定期调用filter flush方法
- remove_field:从事件中删除任意字段。字段可以是动态的,并使用%{field}语法包含事件的一部分
filter{ json{ source => "message" target => "new_field" remove_field => "message" } }
- remove_tag:从事件中删除任意标记。标记可以是动态的,并使用%{field}语法包含事件的一部分
filter { json { source => "message" target => "new_field" remove_tag => [ "%{field_tag}", "tag_name"] } }
Json插件
- 作用:将Json格式的字符串解析成logstash事件中的实际的Json格式的数据;默认情况下将解析后的Json放在logstash事件的根目录下,也可以通过target指定将解析后的数据放入事件的任意一个字段中
- JSON解析失败:
- 如果JSON格式的数据解析失败,事件不受影响,只是会标记为"_jsonparsefailure"。可以使用tag_on_failure选项配置此标记
- 如果解析后的数据包含@timestamp字段,我们将尝试将其用于事件的@timestamp,如果解析失败,该字段将被重命名为_@timestamp,事件将被标记为_timestampparsefailure
- JSON过滤器配置选项
Setting Input Type Required skip_on_invalid_json boolean NO source string YES tag_on_failure array NO target String NO - 配置说明:
- skip_on_invalid_json:是否允许在无效的json上跳过过滤器(允许不带警告地处理json和非json数据)
- source:接受json格式的字段(source => source_field)
- tag_on_failure:标记故障,将解析失败的的值添加到tag_on_failure,默认会标记失败是_jsonparsefailure;如果解析失败,返回的字段中会多一个"tags" => ["_jsonparsefailure",_timestampparsefailure]
- target:源字段值中的JSON将扩展为目标字段中的数据结构(将source中的字段解析后存放在该字段中)。如果省略设置,则json解析之后的 数据会存储在根目录下面
- 例子:控制台输入
- {"trans_jnls_no":"4","card_no":"444444444444444444","terminal_no":"1","atm_trans_types_type":"2","customer_no":"444444444","cash_mark":}
- {"trans_jnls_no":"4","card_no":"444444444444444444","terminal_no":"1","atm_trans_types_type":"2","customer_no":"444444444","cash_mark":""}
filter{ json{ #stdin输入,默认的字段为message source => "message" #将解析后的JSON格式的数据放入json_field下 target => "json_field" #如果JSON格式解析失败,则会跳过该过滤器,则Json 过滤器的配置不起作用 skip_on_invalid_json => false #添加解析失败标记 tag_on_failure => ["_jsonparsefailure",_timestampparsefailure] } }