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 |
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"]
- }
- }
Logstash的filter插件介绍的更多相关文章
- logstash之Filter插件
Logstash之所以强悍的主要原因是filter插件:通过过滤器的各种组合可以得到我们想要的结构化数据 1:grok正则表达式 grok**正则表达式是logstash非常重要的一个环节**:可以通 ...
- logstash实战filter插件之grok(收集apache日志)
有些日志(比如apache)不像nginx那样支持json可以使用grok插件 grok利用正则表达式就行匹配拆分 预定义的位置在 /opt/logstash/vendor/bundle/jruby/ ...
- Logstash filter 插件之 grok
本文简单介绍一下 Logstash 的过滤插件 grok. Grok 的主要功能 Grok 是 Logstash 最重要的插件.它可以解析任意文本并把它结构化.因此 Grok 是将非结构化的日志数据解 ...
- Logstash学习系列之插件介绍
Logstash插件获取方式 插件获取地址: https://github.com/logstash-plugins 在线安装: /plugin install logstash-input-jdb ...
- logstash的filter之grok
logstash的filter之grokLogstash中的filter可以支持对数据进行解析过滤. grok:支持120多种内置的表达式,有一些简单常用的内容就可以使用内置的表达式进行解析 http ...
- logstash的output插件
logstash 的output插件 nginx,logstash和redis在同一台机子上 yum -y install redis,vim /etc/redis.conf 设置bind 0.0.0 ...
- 五十八.Kibana使用 、 Logstash配置扩展插件
1.导入数据 批量导入数据并查看 1.1 导入数据 1) 使用POST方式批量导入数据,数据格式为json,url 编码使用data-binary导入含有index配置的json文件 ]# ...
- 【记录】logstash 的filter 使用
概述 logstash 之所以强大和流行,与其丰富的过滤器插件是分不开的 过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理,甚至添加独特的新事件到后续流程中 强大的文本 ...
- logstash 过滤filter
logstash过滤器插件filter详解及实例 1.logstash过滤器插件filter 1.1.grok正则捕获 grok是一个十分强大的logstash filter插件,他可以通过正则解 ...
随机推荐
- XOR on segment(线段树区间异或更新)
原题传送门 本题大意:给定n个数字和m个操作,操作共有两种,第一种是求解区间l到r上元素的和,第二种是将区间l到r的元素都异或一个x,作为某个位置的新值. 很容易想到线段树维护区间和,但是我们发现,在 ...
- 关于Mybatis的Batch模式性能测试及结论(转)
近日在公司项目中,使用到spring+mybatis的架构,特对mybatis的batch模式做了相关研究,得出以下结论: 1.Mybatis内置的ExecutorType有3种,默认的是simple ...
- Servlet概念及与Jsp的区别
一.Servlet概念 Servlet是在服务器上运行的小程序.一个Servlet就是一个Java类,并且可以通过”请求-响应”编程模型来访问这个驻留在服务器内存里的Servlet程序 二.Servl ...
- 【6.18校内test】T2分数线划定
分数线划定[题目链接] 这道题也不是什么难题,思路一带而过吧: SOLUTION: First.输入n,m,计算m*1.5的值,接着输入编号和成绩,然后我的做法是在输入编号成绩之后,开一个101大小的 ...
- laravel修改用户模块的密码验证
做项目的时候,用户认证几乎是必不可少的,如果我们的项目由于一些原因不得不使用 users 之外的用户表进行认证,那么就需要多做一点工作来完成这个功能. 现在假设我们只需要修改登录用户的表,表名和表结构 ...
- Android尺寸适配问题
1, 布局与组件大小用dp,文字大小用sp 2,
- p标签在div中水平垂直居中且文本左对齐
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Host xxx is not allowed to connect to this MariaDb server
直接复制代码,无需修改 第一:// %:表示从任何主机连接到mysql服务器 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'pass ...
- Python回调函数用法实例
Python回调函数用法实例 作者:no.body链接:https://www.zhihu.com/question/19801131/answer/27459821 什么是回调函数? 我们绕点远路来 ...
- ArrayList知识详解
简介 ArrayList是Java集合常用的数据结构之一,继承自AbstractList,实现了List,RandomAccess.Cloneable.Serializable等一系列接口,支持快速访 ...