Logstash的filter插件介绍

℡╲_俬逩灬. 提交于 2020-12-06 02:27:22

一 官网说明

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

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

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
两位数的年份。示例: 15 2015年。

中号

一年中的月份

中号
最小位数月份。示例: 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
星期几的缩写。例如:  Mon Tue Wed Thu Fri Sat Sun 注意:此操作的实际语言将取决于您的区域设置。
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"]
      }
    }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!