一 官网说明
过滤器插件对事件执行中介处理。通常根据事件的特征有条件地应用过滤器。
以下过滤器插件在下面可用。
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 |
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 |
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过滤器配置选项
该插件支持以下配置选项以及稍后介绍的“ 通用选项”。
设置 | 输入类型 | 需要 |
---|---|---|
|
布尔值 |
没有 |
|
布尔值 |
没有 |
|
Hash |
没有 |
|
布尔值 |
没有 |
|
数组 |
没有 |
|
Hash |
没有 |
|
数组 |
没有 |
|
串 |
没有 |
|
数组 |
没有 |
|
串 |
没有 |
|
数 |
没有 |
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
- 值类型为哈希
- 默认值为
{}
如果此筛选器成功,则将任何任意字段添加到此事件。字段名称可以是动态的,并且可以使用包含事件的一部分%{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
- 值类型为字符串
- 此设置没有默认值。
使用IETF-BCP47或POSIX语言标签指定用于日期解析的语言环境。简单的例子是en
,en-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和1326149001UNIX_MS
-将解析自epoch以来以毫秒为单位的表示unix时间的int值,如1366125117000TAI64N
-将解析tai64n时间值
例如,如果您有一个field logdate
,其值看起来像 Aug 13 2010 00:03:44
,则可以使用以下配置:
filter {
date {
match => [ "logdate", "MMM dd yyyy HH:mm:ss" ]
}
}
如果字段嵌套在结构中,则可以使用嵌套语法[foo][bar]
来匹配其值。有关更多信息,请参考 字段参考
有关语法的更多详细信息
用于解析日期和时间文本的语法使用字母表示时间值的类型(月,分钟等),重复使用字母表示该值的形式(2位数字的月份,全月的名称等) 。
这是您可以用来解析日期和时间的内容:
ÿ |
年
|
中号 |
一年中的月份
|
d |
一个月中的某天
|
H |
一天中的小时(24小时制)
|
米 |
每小时的分钟数(每小时60分钟)
|
s |
每分钟的秒数(每分钟60秒)
|
小号 |
一秒的 最大精度为毫秒(
|
ž |
时区偏移量或标识
|
ž |
时区名称。无法解析时区名称(z)。 |
w |
一年中的第几周
|
d |
一年中的一天 |
Ë |
星期几(数字) |
Ë |
星期几(文本)
|
对于非格式语法,您需要在值周围放置单引号字符。例如,如果您要解析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}
语法包括事件的一部分
常用选项
所有过滤器插件均支持以下配置选项:
设置 | 输入类型 | 需要 |
---|---|---|
|
Hash |
没有 |
|
数组 |
没有 |
|
布尔值 |
没有 |
|
串 |
没有 |
|
布尔值 |
没有 |
|
数组 |
没有 |
|
数组 |
没有 |
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
- 值类型为哈希
- 此设置没有默认值。
将字段的值转换为其他类型,例如将字符串转换为整数。如果字段值为数组,则将转换所有成员。如果该字段是哈希,则不会采取任何措施。
有效的转换目标及其在不同输入下的预期行为是:
-
integer
:- 字符串被解析;支持逗号分隔符(例如,字符串
"1,000"
产生一个值为一千的整数);当字符串具有小数部分时,它们将被截断。 - 浮点数和小数点被截断(例如,
3.99
变为3
,-2.7
变为-2
) - 布尔真和布尔假被转换为
1
和0
分别
- 字符串被解析;支持逗号分隔符(例如,字符串
-
integer_eu
:- 与相同
integer
,除了字符串值支持点分隔符和逗号小数(例如,"1.000"
产生一个值为一千的整数)
- 与相同
-
float
:- 整数转换为浮点数
- 字符串被解析;支持逗号分隔符和点小数(例如,
"1,000.5"
产生一个值为1000的整数) - 布尔真和布尔假被转换为
1.0
和0.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
- 所有其他值直接通过而不进行转换并记录警告消息
- 对于数组,使用上面的规则分别处理每个值
- 整数0转换为布尔值
该插件可以转换同一文档中的多个字段,请参见下面的示例。
例:
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
- 值类型为哈希
- 默认值为
{}
如果此筛选器成功,则将任何任意字段添加到此事件。字段名称可以是动态的,并且可以使用包含事件的一部分%{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"]
}
}
来源:oschina
链接:https://my.oschina.net/u/4415923/blog/3336923