zoukankan      html  css  js  c++  java
  • Logstash Json 过滤器插件

    1. Json Filter

    功能概述

    这是一个JSON解析过滤器。它接受一个包含JSON的现有字段,并将其扩展为Logstash事件中的实际数据结构。

    默认情况下,它将把解析过的JSON放在Logstash事件的根(顶层)中,但是这个过滤器可以配置为使用目标配置将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:

    source => source_field
    例如json数据在message字段中,将会从message字段中解析json数据
    filter {
      json {
        source => "message"
      }
    }

    tag_on_failure:

    默认值["_jsonparsefailure"]当没有成功匹配时,将值附加到标记字段

    例如:

    image

    target:

    定义放置已解析数据的目标字段。如果省略此设置,则JSON数据将存储在事件的根(顶层)。源字段值中的JSON将扩展为目标字段中的数据结构。

    例如将解析后的结果放到MyMessage字段

    filter {
      json {
        target => "MyMessage"
      }
    }

    通用配置项

    下述选项所有的过滤器都支持
    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}包含事件的一部分。

    例如:

    filter {
      json {
        add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }
      }
    }
    filter {
      json {
        add_field => {
          "foo_%{somefield}" => "Hello world, from %{host}"
          "new_field" => "new_static_value"
        }
      }
    }
    如果事件具有字段“somefield”==“hello”,那么在成功时,这个过滤器将添加字段foo_hello(如果存在的话),上面的值和%{host}块将被事件中的值替换。第二个示例还将添加硬编码字段。

    add_tag:

    如果过滤成功,则向事件添加任意标记。标记可以是动态的,并使用%{field}语法包含事件的一部分。
    例如:
    filter {
      json {
        add_tag => [ "foo_%{somefield}" ]
      }
    }
    filter {
      json {
        add_tag => [ "foo_%{somefield}", "taggedy_tag"]
      }
    }
    如果事件有字段“somefield”==“hello”,这个过滤器在成功时,会添加一个标签foo_hello(第二个例子当然会添加一个taggedy_tag标签)。

    enable_metric:

    默认情况下,我们会记录所有可以记录的指标,但您可以为特定的插件禁用指标集合。


    id:

    向插件配置中添加唯一的ID。如果没有指定ID, Logstash将生成一个ID。强烈建议在配置中设置此ID。如果您有两个或多个相同类型的插件,例如,如果您有两个json过滤器,

    那么这是非常有用的。在这种情况下,在使用监视api时添加一个命名ID将有助于监视Logstash。

    例如:

    filter {
      json {
        id => "ABC"
      }
    }

    periodic_flush:

    定期调用filter flush方法。可选的。


    periodic_flush:

    如果过滤成功,则从此事件中删除任意字段。例如:

    filter {
      json {
        remove_field => [ "foo_%{somefield}" ]
      }
    }
    filter {
      json {
        remove_field => [ "foo_%{somefield}", "my_extraneous_field" ]
      }
    }
    如果事件中有字段“somefield”==“hello”,那么在成功时,如果存在名为foo_hello的字段,这个过滤器将删除该字段。第二个示例将删除一个额外的非动态字段。


    remove_tag:

    如果过滤成功,则从事件中删除任意标记。标记可以是动态的,并使用%{field}语法包含事件的一部分。

    例如:

    filter {
      json {
        remove_tag => [ "foo_%{somefield}" ]
      }
    }
    filter {
      json {
        remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"]
      }
    }
    如果事件有字段“somefield”==“hello”,过滤成功时将会删除foo_hello标记。第二个示例还将不想要的标记。

    2. Json_encode Filter

    功能概述

    JSON编码过滤器。获取一个字段并将其序列化为JSON

    如果没有指定目标,则用JSON文本覆盖源字段。(此过滤器非默认安装的,需手动安装bin/logstash-plugin install logstash-filter-json_encode)

    例如,如果您有一个名为foo的字段,并且希望将JSON编码的字符串存储在bar中,例如:

    filter {
      json_encode {
        source => "foo"
        target => "bar"
      }
    }
    source :
    需要转换为json的字段

    target:
    写入JSON的字段。如果没有指定,源字段将被覆盖。


    本文内容主要翻译自官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html
  • 相关阅读:
    如何添加看板娘(转载的)
    golang gin LoadHTMLGlob 加载模板文件
    wpf Popup 不跟随窗口移动的问题
    golang 在vscode 安装插件失败的解决方法
    javaweb + tomcat + 部署 + 域名绑定 + 默认首页
    【RabbitMQ】三种Exchange模式——订阅、路由、通配符模式
    一切的浮点型进行计算操作都要用BigDecimal
    如何让mysql按照两个或多个字段排序
    JAVA枚举操作(获取值,转map集合)
    gitlab 配置 ssh key
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/9817029.html
Copyright © 2011-2022 走看看