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
兩位數的年份。示例: 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"]
      }
    }

 

 
          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM