zoukankan      html  css  js  c++  java
  • Logstash的filter插件介绍

    一 官网说明

    过滤器插件对事件执行中介处理。通常根据事件的特征有条件地应用过滤器。

    以下过滤器插件在下面可用。

    Plugin

    Description

    Github repository

    aggregate

    Aggregates information from several events originating with a single task

    logstash-filter-aggregate

    alter

    Performs general alterations to fields that the mutatefilter does not handle

    logstash-filter-alter

    bytes

    Parses string representations of computer storage sizes, such as "123 MB" or "5.6gb", into their numeric value in bytes

    logstash-filter-bytes

    cidr

    Checks IP addresses against a list of network blocks

    logstash-filter-cidr

    cipher

    Applies or removes a cipher to an event

    logstash-filter-cipher

    clone

    Duplicates events

    logstash-filter-clone

    csv

    Parses comma-separated value data into individual fields

    logstash-filter-csv

    date

    Parses dates from fields to use as the Logstash timestamp for an event

    logstash-filter-date

    de_dot

    Computationally expensive filter that removes dots from a field name

    logstash-filter-de_dot

    dissect

    Extracts unstructured event data into fields using delimiters

    logstash-filter-dissect

    dns

    Performs a standard or reverse DNS lookup

    logstash-filter-dns

    drop

    Drops all events

    logstash-filter-drop

    elapsed

    Calculates the elapsed time between a pair of events

    logstash-filter-elapsed

    elasticsearch

    Copies fields from previous log events in Elasticsearch to current events

    logstash-filter-elasticsearch

    environment

    Stores environment variables as metadata sub-fields

    logstash-filter-environment

    extractnumbers

    Extracts numbers from a string

    logstash-filter-extractnumbers

    fingerprint

    Fingerprints fields by replacing values with a consistent hash

    logstash-filter-fingerprint

    geoip

    Adds geographical information about an IP address

    logstash-filter-geoip

    grok

    Parses unstructured event data into fields

    logstash-filter-grok

    http

    Provides integration with external web services/REST APIs

    logstash-filter-http

    i18n

    Removes special characters from a field

    logstash-filter-i18n

    java_uuid

    Generates a UUID and adds it to each processed event

    core plugin

    jdbc_static

    Enriches events with data pre-loaded from a remote database

    logstash-filter-jdbc_static

    jdbc_streaming

    Enrich events with your database data

    logstash-filter-jdbc_streaming

    json

    Parses JSON events

    logstash-filter-json

    json_encode

    Serializes a field to JSON

    logstash-filter-json_encode

    kv

    Parses key-value pairs

    logstash-filter-kv

    memcached

    Provides integration with external data in Memcached

    logstash-filter-memcached

    metricize

    Takes complex events containing a number of metrics and splits these up into multiple events, each holding a single metric

    logstash-filter-metricize

    metrics

    Aggregates metrics

    logstash-filter-metrics

    mutate

    Performs mutations on fields

    logstash-filter-mutate

    prune

    Prunes event data based on a list of fields to blacklist or whitelist

    logstash-filter-prune

    range

    Checks that specified fields stay within given size or length limits

    logstash-filter-range

    ruby

    Executes arbitrary Ruby code

    logstash-filter-ruby

    sleep

    Sleeps for a specified time span

    logstash-filter-sleep

    split

    Splits multi-line messages into distinct events

    logstash-filter-split

    syslog_pri

    Parses the PRI (priority) field of a syslog message

    logstash-filter-syslog_pri

    threats_classifier

    Enriches security logs with information about the attacker’s intent

    logstash-filter-threats_classifier

    throttle

    Throttles the number of events

    logstash-filter-throttle

    tld

    Replaces the contents of the default message field with whatever you specify in the configuration

    logstash-filter-tld

    translate

    Replaces field contents based on a hash or YAML file

    logstash-filter-translate

    truncate

    Truncates fields longer than a given length

    logstash-filter-truncate

    urldecode

    Decodes URL-encoded fields

    logstash-filter-urldecode

    useragent

    Parses user agent strings into fields

    logstash-filter-useragent

    uuid

    Adds a UUID to events

    logstash-filter-uuid

    xml

    Parses XML into fields

    logstash-filter-xml

    二 介绍几个查用的插件

    grok正则捕获

    示例:

     input {
          file {
            path => "/var/log/http.log"
          }
        }
        filter {
          grok {
            match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
          }
        }

    Grok过滤器配置选项

    该插件支持以下配置选项以及稍后介绍的“ 通用选项”

    设置输入类型需要

    break_on_match

    布尔值

    没有

    keep_empty_captures

    布尔值

    没有

    match

    Hash

    没有

    named_captures_only

    布尔值

    没有

    overwrite

    数组

    没有

    pattern_definitions

    Hash

    没有

    patterns_dir

    数组

    没有

    patterns_files_glob

    没有

    tag_on_failure

    数组

    没有

    tag_on_timeout

    没有

    timeout_millis

    没有

    break_on_match

    • 值类型为布尔值
    • 默认值为 true

    在第一个比赛上休息。grok的首次成功匹配将导致过滤器完成。如果您想让grok尝试所有模式(也许您正在解析不同的内容),请将其设置为false。

    keep_empty_captures

    • 值类型为布尔值
    • 默认值为 false

    如果为true则将空捕获保留为事件字段。

    match

    • 值类型为哈希
    • 默认值为 {}

    一个散列,它定义了查找位置和模式的映射

    例如,以下内容将匹配message给定模式字段中的现有值,如果找到匹配项,则将字段duration与捕获的值添加到事件中:

    filter {
          grok {
            match => {
              "message" => "Duration: %{NUMBER:duration}"
            }
          }
        }

    如果您需要针对一个字段匹配多个模式,则该值可以是模式数组:

     filter {
          grok {
            match => {
              "message" => [
                "Duration: %{NUMBER:duration}",
                "Speed: %{NUMBER:speed}"
              ]
            }
          }
        }

    named_captures_only

    • 值类型为布尔值
    • 默认值为 true

    如果为true,则仅存储来自grok的命名捕获。

    overwrite

    • 值类型为数组
    • 默认值为 []

    要覆盖的字段。

    这使您可以覆盖已经存在的字段中的值。

    例如,如果message字段中有syslog行,则可以message用部分匹配项覆盖该字段,如下所示:

       filter {
          grok {
            match => { "message" => "%{SYSLOGBASE} %{DATA:message}" }
            overwrite => [ "message" ]
          }
        }

    在这种情况下,May 29 16:37:11 sadness logger: hello world 将解析诸如这样的行hello world并将覆盖原始消息。

    pattern_definitions

    • 值类型为哈希
    • 默认值为 {}

    模式名称和模式元组的散列,定义了当前过滤器要使用的自定义模式。与现有名称匹配的模式将覆盖先前的定义。认为这是仅适用于grok定义的内联模式

    patterns_dir

    • 值类型为数组
    • 默认值为 []

    Logstash默认附带了许多模式,因此除非添加其他模式,否则不必自己定义。您可以使用此设置指向多个病毒码目录。请注意,Grok将读取目录中与patterns_files_glob相匹配的所有文件,并假定它是特征码文件(包括所有波浪号备份文件)。

       patterns_dir => ["/opt/logstash/patterns", "/opt/logstash/extra_patterns"]

    模式文件是纯文本,格式为:

        名称模式

    例如:

        NUMBER  d +

    创建管道时将加载模式。

    patterns_files_glob

    • 值类型为字符串
    • 默认值为 "*"

    Glob模式,用于在patterns_dir指定的目录中选择模式文件

    tag_on_failure

    • 值类型为数组
    • 默认值为 ["_grokparsefailure"]

    tags没有成功匹配时将值追加到字段

    tag_on_timeout

    • 值类型为字符串
    • 默认值为 "_groktimeout"

    如果grok regexp超时,则应用标签。

    timeout_millis

    • 值类型是数字
    • 默认值为 30000

    在这段时间之后尝试终止正则表达式。如果应用了多个模式,则对每个模式都适用。这永远不会过早超时,但可能需要更长的时间才能超时。实际超时是基于250ms量化的近似值。设置为0以禁用超时

    常用选项

    所有过滤器插件均支持以下配置选项:

    设置输入类型需要

    add_field

    杂凑

    没有

    add_tag

    数组

    没有

    enable_metric

    布尔值

    没有

    id

    没有

    periodic_flush

    布尔值

    没有

    remove_field

    数组

    没有

    remove_tag

    数组

    没有

    add_field

    • 值类型为哈希
    • 默认值为 {}

    如果此筛选器成功,则将任何任意字段添加到此事件。字段名称可以是动态的,并且可以使用包含事件的一部分%{field}

    例:

     filter {
          grok {
            add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }
          }
        }
     # You can also add multiple fields at once:
        filter {
          grok {
            add_field => {
              "foo_%{somefield}" => "Hello world, from %{host}"
              "new_field" => "new_static_value"
            }
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将添加字段(foo_hello如果存在),并使用上面的值,并将%{host}片段替换为事件中的值。第二个示例还将添加一个硬编码字段。

    add_tag

    • 值类型为数组
    • 默认值为 []

    如果此过滤器成功,则将任意标签添加到事件中。标签可以是动态的,并可以使用%{field} 语法包括事件的一部分

    例:

     filter {
          grok {
            add_tag => [ "foo_%{somefield}" ]
          }
        }
      # You can also add multiple tags at once:
        filter {
          grok {
            add_tag => [ "foo_%{somefield}", "taggedy_tag"]
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将添加标签foo_hello(第二个示例当然会添加taggedy_tag标签)。

    enable_metric

    • 值类型为布尔值
    • 默认值为 true

    默认情况下,为此特定插件实例禁用或启用度量标准日志记录,我们会记录所有可以度量的数据,但是您可以禁用特定插件的度量标准收集。

    id

    • 值类型为字符串
    • 此设置没有默认值。

    ID向插件配置添加唯一如果未指定ID,Logstash将生成一个。强烈建议在您的配置中设置此ID。当您有两个或多个相同类型的插件时(例如,如果您有2个grok过滤器),这特别有用。在这种情况下,添加命名ID将有助于在使用监视API时监视Logstash。

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

    periodic_flush

    • 值类型为布尔值
    • 默认值为 false

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

    remove_field

    • 值类型为数组
    • 默认值为 []

    如果此筛选器成功,请从此事件中删除任意字段。字段名称可以是动态的,并且可以使用%{field}示例来包含事件的一部分:

      filter {
          grok {
            remove_field => [ "foo_%{somefield}" ]
          }
        }
    # You can also remove multiple fields at once:
        filter {
          grok {
            remove_field => [ "foo_%{somefield}", "my_extraneous_field" ]
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将删除具有名称的字段(foo_hello如果存在)。第二个示例将删除一个附加的非动态字段。

    remove_tag

    • 值类型为数组
    • 默认值为 []

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

    例:

    filter {
          grok {
            remove_tag => [ "foo_%{somefield}" ]
          }
        }
     # You can also remove multiple tags at once:
        filter {
          grok {
            remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"]
          }
        }

    Date插件

    日期过滤器配置选项

    该插件支持以下配置选项以及稍后介绍的“ 通用选项”

    设置输入类型需要

    locale

    没有

    match

    数组

    没有

    tag_on_failure

    数组

    没有

    target

    没有

    timezone

    没有 

    locale

    • 值类型为字符串
    • 此设置没有默认值。

    使用IETF-BCP47或POSIX语言标签指定用于日期解析的语言环境。简单的例子是enen-US对于BCP47或en_US对POSIX。

    解析月份名称(带有的模式MMM)和工作日名称(带有的模式)时,最需要设置语言环境EEE

    如果未指定,将使用平台默认值,但对于非英语平台默认值,还将使用英语解析器作为后备机制。

    match

    • 值类型为数组
    • 默认值为 []

    一个数组,其字段名在前,格式模式在后, [ field, formats... ]

    如果您的时间字段具有多种可能的格式,则可以执行以下操作:

        match => [ “ logdate” “ MMM dd yyyy HH:mm:ss” “ MMM d yyyy HH:mm:ss” “ ISO8601” ]

    上面的代码将匹配系统日志(rfc3164)或iso8601时间戳。

    有一些特殊的例外。存在以下格式文字,以帮助您节省时间并确保日期解析的正确性。

    • ISO8601 -应该解析任何有效的ISO8601时间戳,例如 2011-04-19T03:44:01.103Z
    • UNIX-将解析自epoch以来的以秒为单位的unix时间的float或int值,如1326149001.132和1326149001
    • UNIX_MS-将解析自epoch以来以毫秒为单位的表示unix时间的int值,如1366125117000
    • TAI64N -将解析tai64n时间值

    例如,如果您有一个field logdate,其值看起来像 Aug 13 2010 00:03:44,则可以使用以下配置:

     filter {
          date {
            match => [ "logdate", "MMM dd yyyy HH:mm:ss" ]
          }
        }

    如果字段嵌套在结构中,则可以使用嵌套语法[foo][bar]来匹配其值。有关更多信息,请参考 字段参考

    有关语法的更多详细信息

    用于解析日期和时间文本的语法使用字母表示时间值的类型(月,分钟等),重复使用字母表示该值的形式(2位数字的月份,全月的名称等) 。

    这是您可以用来解析日期和时间的内容:

    ÿ

    yyyy
    全年数字。范例:2015
    y
    两位数的年份。示例:152015年。

    中号

    一年中的月份

    中号
    最小位数月份。示例:1一月和12十二月。
    MM
    两位数的月份。如果需要,请补零。示例:01一月和12十二月
    MMM
    缩写的月份文本。例如:一Jan月份。注意:使用的语言取决于您的语言环境。请参阅有关locale如何更改语言设置。
    MMMM
    整月文字,例如:January注意:使用的语言取决于您的语言环境。

    d

    一个月中的某天

    d
    最小位数的一天。示例:1每月的1号。
    dd
    两位数的日期,如有必要,请补零。示例:01每月的1号。

    H

    一天中的小时(24小时制)

    H
    最小位数小时。例如:0午夜。
    H
    两位数的小时数,如果需要,可以补零。例如:00午夜。

    每小时的分钟数(每小时60分钟)

    分钟数分钟。范例:0
    毫米
    两位数的分钟,如果需要,可以零填充。范例:00

    s

    每分钟的秒数(每分钟60秒)

    s
    最小位数秒。范例:0
    ss
    两位数的秒,如果需要,则补零。范例:00

    小号

    一秒的 最大精度为毫秒(SSS)。除此之外,还会附加零。

    小号
    十分之一秒。示例: 0一个亚秒值012
    SS
    百分之一秒。示例: 01一个亚秒值01
    SSS
    千分之一秒。示例: 012一个亚秒值012

    ž

    时区偏移量或标识

    ž
    时区偏移的结构为HHmm(与Zulu / UTC的小时和分钟偏移)。范例:-0700
    Z Z
    时区偏移量的结构为HH:mm(小时和分钟偏移量之间的冒号)。范例:-07:00
    ZZZ
    时区标识。范例:America/Los_Angeles注意:有效ID列在Joda.org可用时区页面上

    ž

    时区名称。无法解析时区名称(z)。

    w

    一年中的第几周

    w
    最低位数的星期。范例:1
    w
    两位数的星期,如果需要,则补零。范例:01

    d

    一年中的一天

    Ë

    星期几(数字)

    Ë

    星期几(文本)

    E,EE,EEE
    星期几的缩写。例如: MonTueWedThuFriSatSun注意:此操作的实际语言将取决于您的区域设置。
    EEEE
    一周中的全文。示例:Monday,,Tuesday......注:实际语言取决于您的语言环境。

    对于非格式语法,您需要在值周围放置单引号字符。例如,如果您要解析ISO8601时间,“ 2015-01-01T01:12:23”,则小“ T”不是有效的时间格式,而您想说的是“字面意义上的T”,则格式为这个:“ yyyy-MM-dd'T'HH:mm:ss”

    其他不太常见的日期单位,例如时代(G),世纪(C),上午/下午(a)和#以上,可以在 joda-time文档中了解

    tag_on_failure

    • 值类型为数组
    • 默认值为 ["_dateparsefailure"]

    tags没有成功匹配时将值追加到字段

    target

    • 值类型为字符串
    • 默认值为 "@timestamp"

    将匹配的时间戳存储到给定的目标字段中。如果未提供,则默认更新@timestamp事件字段。

    timezone

    • 值类型为字符串
    • 此设置没有默认值。

    指定用于日期解析的时区规范ID。有效ID列在Joda.org可用时区页面上如果无法从值中提取时区,并且不是平台默认值,这很有用。如果未指定,将使用平台默认值。规范ID很好,因为它可以为您节省夏令时。例如,America/Los_Angeles或是Europe/Paris有效的ID。该字段可以是动态的,并使用%{field}语法包括事件的一部分

    常用选项

    所有过滤器插件均支持以下配置选项:

    设置输入类型需要

    add_field

    Hash

    没有

    add_tag

    数组

    没有

    enable_metric

    布尔值

    没有

    id

    没有

    periodic_flush

    布尔值

    没有

    remove_field

    数组

    没有

    remove_tag

    数组

    没有

    add_field

    • 值类型为哈希
    • 默认值为 {}

    如果此筛选器成功,则将任何任意字段添加到此事件。字段名称可以是动态的,并且可以使用包含事件的一部分%{field}

    例:

    filter {
          date {
            add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }
          }
        }
     # You can also add multiple fields at once:
        filter {
          date {
            add_field => {
              "foo_%{somefield}" => "Hello world, from %{host}"
              "new_field" => "new_static_value"
            }
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将添加字段(foo_hello如果存在),并使用上面的值,并将%{host}片段替换为事件中的值。第二个示例还将添加一个硬编码字段。

    add_tag

    • 值类型为数组
    • 默认值为 []

    如果此过滤器成功,则将任意标签添加到事件中。标签可以是动态的,并可以使用%{field} 语法包括事件的一部分

    例:

    filter {
          date {
            add_tag => [ "foo_%{somefield}" ]
          }
        }
        # You can also add multiple tags at once:
        filter {
          date {
            add_tag => [ "foo_%{somefield}", "taggedy_tag"]
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将添加标签foo_hello(第二个示例当然会添加taggedy_tag标签)。

    enable_metric

    • 值类型为布尔值
    • 默认值为 true

    默认情况下,为此特定插件实例禁用或启用度量标准日志记录,我们会记录所有可以度量的数据,但是您可以禁用特定插件的度量标准收集。

    id

    • 值类型为字符串
    • 此设置没有默认值。

    ID向插件配置添加唯一如果未指定ID,Logstash将生成一个。强烈建议在您的配置中设置此ID。当您有两个或多个相同类型的插件时(例如,如果您有2个日期过滤器),这特别有用。在这种情况下,添加命名ID将有助于在使用监视API时监视Logstash。

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

    periodic_flush

    • 值类型为布尔值
    • 默认值为 false

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

    remove_field

    • 值类型为数组
    • 默认值为 []

    如果此筛选器成功,请从此事件中删除任意字段。字段名称可以是动态的,并且可以使用%{field}示例来包含事件的一部分:

      filter {
          date {
            remove_field => [ "foo_%{somefield}" ]
          }
        }
        # You can also remove multiple fields at once:
        filter {
          date {
            remove_field => [ "foo_%{somefield}", "my_extraneous_field" ]
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将删除具有名称的字段(foo_hello如果存在)。第二个示例将删除一个附加的非动态字段。

    remove_tag

    • 值类型为数组
    • 默认值为 []

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

    例:

     filter {
          date {
            remove_tag => [ "foo_%{somefield}" ]
          }
        }
        # You can also remove multiple tags at once:
        filter {
          date {
            remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"]
          }
        }

    mutate插件

    例:

    filter {
        mutate {
            split => ["hostname", "."]
            add_field => { "shortHostname" => "%{hostname[0]}" }
        }
    
        mutate {
            rename => ["shortHostname", "hostname" ]
        }
    } 

    mutate配置选项

    该插件支持以下配置选项以及稍后介绍的“ 通用选项”

    设置输入类型需要

    convert

    杂凑

    没有

    copy

    杂凑

    没有

    gsub

    数组

    没有

    join

    杂凑

    没有

    lowercase

    数组

    没有

    merge

    杂凑

    没有

    coerce

    杂凑

    没有

    rename

    杂凑

    没有

    replace

    杂凑

    没有

    split

    杂凑

    没有

    strip

    数组

    没有

    update

    杂凑

    没有

    uppercase

    数组

    没有

    capitalize

    数组

    没有

    tag_on_failure

    没有

     

    convert

    • 值类型为哈希
    • 此设置没有默认值。

    将字段的值转换为其他类型,例如将字符串转换为整数。如果字段值为数组,则将转换所有成员。如果该字段是哈希,则不会采取任何措施。

    有效的转换目标及其在不同输入下的预期行为是:

    • integer

      • 字符串被解析;支持逗号分隔符(例如,字符串"1,000"产生一个值为一千的整数);当字符串具有小数部分时,它们将被截断
      • 浮点数和小数点被截断(例如,3.99变为3-2.7变为-2
      • 布尔真和布尔假被转换为10分别
    • integer_eu

      • 与相同integer,除了字符串值支持点分隔符和逗号小数(例如,"1.000"产生一个值为一千的整数)
    • float

      • 整数转换为浮点数
      • 字符串被解析;支持逗号分隔符和点小数(例如,"1,000.5"产生一个值为1000的整数)
      • 布尔真和布尔假被转换为1.00.0分别
    • float_eu

      • 与相同float,不同之处"1.000,5"在于字符串值支持点分隔符和逗号小数(例如,产生一个值为1000的整数)
    • string

      • 所有值均已字符串化并使用UTF-8编码
    • boolean

      • 整数0转换为布尔值 false
      • 整数1转换为布尔值 true
      • 浮点数0.0转换为布尔值 false
      • float 1.0转换为boolean true
      • "true""t""yes""y""1"`and `"1.0"被转换成布尔true
      • "false""f""no""n""0""0.0"被转换成布尔false
      • 空字符串将转换为布尔值 false
      • 所有其他值直接通过而不进行转换并记录警告消息
      • 对于数组,使用上面的规则分别处理每个值

    该插件可以转换同一文档中的多个字段,请参见下面的示例。

    例:

     filter {
          mutate {
            convert => {
              "fieldname" => "integer"
              "booleanfield" => "boolean"
            }
          }
        }

    copy

    • 值类型为哈希
    • 此设置没有默认值。

    将现有字段复制到另一个字段。现有目标字段将被覆盖。

    例:

    filter {
          mutate {
             copy => { "source_field" => "dest_field" }
          }
        }

    gsub

    • 值类型为数组
    • 此设置没有默认值。

    将正则表达式与字段值匹配,然后将所有匹配项替换为替换字符串。仅支持字符串或字符串数​​组的字段。对于其他类型的字段,将不采取任何措施。

    此配置采用每个字段/替换由3个元素组成的数组。

    请注意转义配置文件中的任何反斜杠。

    例:

     filter {
          mutate {
            gsub => [
              # replace all forward slashes with underscore
              "fieldname", "/", "_",
              # replace backslashes, question marks, hashes, and minuses
              # with a dot "."
              "fieldname2", "[\?#-]", "."
            ]
          }
        }

    join

    • 值类型为哈希
    • 此设置没有默认值。

    用分隔符连接数组。对非数组字段不执行任何操作。

    例:

       filter {
         mutate {
           join => { "fieldname" => "," }
         }
       }

    lowercase

    • 值类型为数组
    • 此设置没有默认值。

    将字符串转换为其小写形式。

    例:

    filter {
          mutate {
            lowercase => [ "fieldname" ]
          }
        }

    merge

    • 值类型为哈希
    • 此设置没有默认值。

    合并两个数组或哈希字段。字符串字段将自动转换为数组,因此:

    数组+字符串将起作用
    字符串+字符串将在dest_field中产生2个条目数组
    `array`和`hash`将不起作用

    例:

      filter {
          mutate {
             merge => { "dest_field" => "added_field" }
          }
        }

    coerce

    • 值类型为哈希
    • 此设置没有默认值。

    设置存在但为空的字段的默认值

    例:

     filter {
          mutate {
            # Sets the default value of the 'field1' field to 'default_value'
            coerce => { "field1" => "default_value" }
          }
        }

    rename

    • 值类型为哈希
    • 此设置没有默认值。

    重命名一个或多个字段。

    例:

    filter {
          mutate {
            # Renames the 'HOSTORIP' field to 'client_ip'
            rename => { "HOSTORIP" => "client_ip" }
          }
        }

    replace

    • 值类型为哈希
    • 此设置没有默认值。

    用新值替换字段的值。新值可以包含%{foo}字符串,以帮助您从事件的其他部分构建新值。

    例:

    filter {
          mutate {
            replace => { "message" => "%{source_host}: My new message" }
          }
        }

    split

    • 值类型为哈希
    • 此设置没有默认值。

    使用分隔符将字段拆分为数组。仅适用于字符串字段。

    例:

    filter {
          mutate {
             split => { "fieldname" => "," }
          }
        }

    strip

    • 值类型为数组
    • 此设置没有默认值。

    从字段中删除空格。注意:这仅适用于前导和尾随空白。

    例:

      filter {
          mutate {
             strip => ["field1", "field2"]
          }
        }

    update

    • 值类型为哈希
    • 此设置没有默认值。

    用新值更新现有字段。如果该字段不存在,则不会采取任何措施。

    例:

     filter {
          mutate {
            update => { "sample" => "My new message" }
          }
        }

    uppercase

    • 值类型为数组
    • 此设置没有默认值。

    将字符串转换为其大写形式。

    例:

     filter {
          mutate {
            uppercase => [ "fieldname" ]
          }
        }

    capitalize

    • 值类型为数组
    • 此设置没有默认值。

    将字符串转换为其大写形式。

    例:

      filter {
          mutate {
            capitalize => [ "fieldname" ]
          }
        }

    tag_on_failure

    • 值类型为字符串
    • 此设置的默认值为 _mutate_error

    如果在应用此mutate过滤器期间发生故障,则其余操作将中止,并将提供的标签添加到事件中。

    常用选项

    所有过滤器插件均支持以下配置选项:

    设置输入类型需要

    add_field

    杂凑

    没有

    add_tag

    数组

    没有

    enable_metric

    布尔值

    没有

    id

    没有

    periodic_flush

    布尔值

    没有

    remove_field

    数组

    没有

    remove_tag

    数组

    没有

    add_field

    • 值类型为哈希
    • 默认值为 {}

    如果此筛选器成功,则将任何任意字段添加到此事件。字段名称可以是动态的,并且可以使用包含事件的一部分%{field}

    例:

      filter {
          mutate {
            add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }
          }
        }
        # You can also add multiple fields at once:
        filter {
          mutate {
            add_field => {
              "foo_%{somefield}" => "Hello world, from %{host}"
              "new_field" => "new_static_value"
            }
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将添加字段(foo_hello如果存在),并使用上面的值,并将%{host}片段替换为事件中的值。第二个示例还将添加一个硬编码字段。

    add_tag

    • 值类型为数组
    • 默认值为 []

    如果此过滤器成功,则将任意标签添加到事件中。标签可以是动态的,并可以使用%{field} 语法包括事件的一部分

    例:

     filter {
          mutate {
            add_tag => [ "foo_%{somefield}" ]
          }
        }
        # You can also add multiple tags at once:
        filter {
          mutate {
            add_tag => [ "foo_%{somefield}", "taggedy_tag"]
          }
        }

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将添加标签foo_hello(第二个示例当然会添加taggedy_tag标签)。

    enable_metric

    • 值类型为布尔值
    • 默认值为 true

    默认情况下,为此特定插件实例禁用或启用度量标准日志记录,我们会记录所有可以度量的数据,但是您可以禁用特定插件的度量标准收集。

    id

    • 值类型为字符串
    • 此设置没有默认值。

    ID向插件配置添加唯一如果未指定ID,Logstash将生成一个。强烈建议在您的配置中设置此ID。当您有两个或多个相同类型的插件时(例如,如果您有2个变异过滤器),这特别有用。在这种情况下,添加命名ID将有助于在使用监视API时监视Logstash。

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

    periodic_flush

    • 值类型为布尔值
    • 默认值为 false

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

    remove_field

    • 值类型为数组
    • 默认值为 []

    如果此筛选器成功,请从此事件中删除任意字段。字段名称可以是动态的,并且可以使用%{field}示例来包含事件的一部分:

     filter {
          mutate {
            remove_field => [ "foo_%{somefield}" ]
          }
        }
        # You can also remove multiple fields at once:
        filter {
          mutate {
            remove_field => [ "foo_%{somefield}", "my_extraneous_field" ]
          }
        }
     

    如果事件具有字段,则"somefield" == "hello"此过滤器成功后将删除具有名称的字段(foo_hello如果存在)。第二个示例将删除一个附加的非动态字段。

    remove_tag

    • 值类型为数组
    • 默认值为 []

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

    例:

    filter {
          mutate {
            remove_tag => [ "foo_%{somefield}" ]
          }
        }
        # You can also remove multiple tags at once:
        filter {
          mutate {
            remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"]
          }
        }
    
    
  • 相关阅读:
    设计模式(连载)
    菜鸟成长记录——2015-2016半年总
    订餐系统——TreeView显示目录结构
    网上商城——ApplicationContext.xml
    订餐系统——Gridview、Repeater和DataList 区别
    订餐系统——后台获取GridView值
    网上商城——邮件发送(二)
    网上商城——邮件发送(一)
    J2EE基础概念
    工作流——顺序工作流
  • 原文地址:https://www.cnblogs.com/dalianpai/p/11971454.html
Copyright © 2011-2022 走看看