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
  • 相关阅读:
    Asp.NET 4.0 ajax实例DataView 模板编程1
    ASP.NET 4.0 Ajax 实例DataView模板编程 DEMO 下载
    部分东北话、北京话
    .NET 培训课程解析(一)
    ASP.NET 4.0 Ajax 实例DataView模板编程2
    ASP.NET Web Game 架构设计1服务器基本结构
    ASP.NET Web Game 构架设计2数据库设计
    TFS2008 基本安装
    Linux上Oracle 11g安装步骤图解
    plsql developer远程连接oracle数据库
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/9817029.html
Copyright © 2011-2022 走看看