Filter模块插件的详细介绍

通用配置项

  1. 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
  2. add_field:向此事件中添加任意字段;字段的名字可以是动态的;字段的名字和值可以使用%{field}包含事件的一部分
    1. 实例:如果事件具有字段"message"=="Weiking",那么在成功时,这个过滤器将添加字段my_Weiking
    2. 控制台输入:Weiking
      filter{
          mutate{
              add_field =>{
                  "my_%{message}" => "Hello world, from %{host}"
                  "new_field" => "new_static_value"
              }
          }
      }
  3. add_tag:向事件添加标签;标签可以是动态的,并使用%{field}语法包含事件的一部分
    1. 实例:如果事件有字段"message"=="Weiking",这个过滤器在成功时,会添加Weiking和student标签
    2. 控制台输入:Weiking
      filter{
          mutate{
              add_tag =>["%{message}","student"]
          }
      }
  4. enable_metric:默认情况下,我们会记录所有可以记录的指标,可以为特定的插件禁用指标集合
  5. ID:向插件配置中添加唯一的ID。如果不指定ID,logstash将会自动生成唯一的ID。(强烈建议在配置中设置此ID)
    1. 如果您有两个或多个相同类型的插件。例如有两个json过滤器,那么这是非常有用的。在这种情况下,在使用监视api时添加一个命名ID将有助于监视Logstash
    2. 实例:
      filter{
          mutate{
              id =>"2000"
          }
      }
  6. periodic_flush: 定期调用filter flush方法
  7. remove_field:从事件中删除任意字段。字段可以是动态的,并使用%{field}语法包含事件的一部分
    filter{
        json{
            source => "message"
            target => "new_field"
            remove_field => "message"
        }
    }
  8. remove_tag:从事件中删除任意标记。标记可以是动态的,并使用%{field}语法包含事件的一部分
    filter {
        json {
            source => "message"
            target => "new_field"
            remove_tag => [ "%{field_tag}", "tag_name"]
        }
    }

Json插件

  1. 作用:将Json格式的字符串解析成logstash事件中的实际的Json格式的数据;默认情况下将解析后的Json放在logstash事件的根目录下,也可以通过target指定将解析后的数据放入事件的任意一个字段中
  2. JSON解析失败:
    1. 如果JSON格式的数据解析失败,事件不受影响,只是会标记为"_jsonparsefailure"。可以使用tag_on_failure选项配置此标记
    2. 如果解析后的数据包含@timestamp字段,我们将尝试将其用于事件的@timestamp,如果解析失败,该字段将被重命名为_@timestamp,事件将被标记为_timestampparsefailure
  3. JSON过滤器配置选项
    Setting Input Type   Required
    skip_on_invalid_json boolean NO 
    source string YES
    tag_on_failure array NO 
    target String NO 
  4. 配置说明:
    1. skip_on_invalid_json:是否允许在无效的json上跳过过滤器(允许不带警告地处理json和非json数据)
    2. source:接受json格式的字段(source => source_field)
    3. tag_on_failure:标记故障,将解析失败的的值添加到tag_on_failure,默认会标记失败是_jsonparsefailure;如果解析失败,返回的字段中会多一个"tags" => ["_jsonparsefailure",_timestampparsefailure]
    4. target:源字段值中的JSON将扩展为目标字段中的数据结构(将source中的字段解析后存放在该字段中)。如果省略设置,则json解析之后的 数据会存储在根目录下面
  5. 例子:控制台输入
    1. {"trans_jnls_no":"4","card_no":"444444444444444444","terminal_no":"1","atm_trans_types_type":"2","customer_no":"444444444","cash_mark":}
    2. {"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]
          }
      }

 

posted @ 2020-08-13 10:07  WeiKing  阅读(556)  评论(0编辑  收藏  举报