filebeat定義處理器


定義處理器

在filebeat將數據發送到配置的輸出之前,可以使用處理器來過濾和增強數據。要定義處理器,需要制定處理器名稱,可選條件和一組參數:

processors:
- <processor_name>:           ##指定執行某種操作的處理器
    when:
      <condition>             ##指定可選條件,如果條件成立則執行
    <parameters>              ##是傳遞給處理器的參數列表

- <processor_name>:
    when:
      <condition>
    <parameters>

處理器再哪里有效?

處理器所處位置:

1)在配置的頂層,處理器應用於filebeat收集的所有數據

2)在具體的輸入下,處理器應用於為該輸入收集的數據,example:

-  type:<input_type> 
  processor:
  -  <processor_name>:
      when:
        <condition> 
      <parameters>

同樣,對於filebeat模塊,可以在input下定義處理器模塊。

支持的處理器:

①add_cloud_metadata

②add_locale  

③decode_json_fields

④drop_event

  刪除事件,如果處理器下關聯的條件被滿足則刪除整個事件,條件時強制性的:

processors:
 - drop_event:
     when:
       condition

⑤drop_fields

  指定哪些字段如果特定條件被滿足下降,條件時可選的。如果缺少,則始終刪除指定的指定。@timestamp和type字段不能被drop,即使它們顯示在drop_fields列表中。

processors:
 - drop_fields:
     when:
        condition
     fields: ["field1", "field2", ...]

 

⑥include_fields

  處理器指定哪些字段滿足條件到出口。條件時可選的,如果缺少,則始終導出到出口。@timestamp和type始終被導出。

processors:
 - include_fields:
     when:
        condition
     fields: ["field1", "field2", ...]

⑦rename

  處理器指定字段命名列表;類似一個key對,每個key對包含一個old-key和一個new-key,form是源名,to是目標名。

  在字段名稱導致沖突的情況下,重命名字段非常有用;重命名字段不能用於覆蓋字段,要覆蓋字段,請先重命名目標字段,或使用drop_fields處理器刪除字段,然后重新命名字段:

processors:
- rename:
    fields:
     - from: "a.g"
       to: "e.d"
    ignore_missing: false    ##(可選)如果設置為true,則在缺少重命名的鍵的情況下不會記錄錯誤,默認是false。
    fail_on_error: true      ##(可選)如果設置為true,則在發生錯誤時停止重命名字段並返回原始事件。如果設置為false,則在重命名期間發生錯誤時,重命名也會繼續,默認是true。

⑧add_kubernetes_metadata

⑨add_docker_metadata

⑩dissect

  使用定義的模式對傳入的字符串進行標記。

processors:
- dissect:
    tokenizer: "%{key1} %{key2}"
    field: "message"      ##(可選),要標記的事件字段,默認是message
    target_prefix: "dissect"   ##(可選)提取字段名稱,處理器將在事件的根目錄中創建密鑰。默認是dissect

 

條件

每個條件都要接收一個要比較的字段,支持的條件有:

①equals

  使用equals條件,可以比較字段是否具有特定值,條件僅接受整數或字符串。

  example,以下條件檢查http事務的響應代碼是否為200:

equals:
  http.response.code: 200

②contains

  所述contains條件檢查如果一個值是一個字段的一部分。該字段可以是字符串或字符串屬組,條件僅接受字符串值。

  example,以下條件檢查錯誤時否是事務狀態的一部分:

contains:
  status: "Specific error"

③regexp

  regxep以正則表達式來核對條件,條件只能是字符串。

  example,以下條件檢查進程名是否以foo開頭:

regexp:
  system.process.name: "foo.*"

④range

  range條件檢查字段是在一定范圍內的值,支持條件lt、lte、gt和gte。條件僅接受整數或浮點數。

  example,以下通過http.response.code字段與400進行比較來檢查失敗的http事務:

range:
    http.response.code:
        gte: 400
##or can be written as:
range:
    http.response.code.gte: 400
##The following condition checks if the CPU usage in percentage has a value between 0.5 and 0.8.
range:
    system.cpu.user.pct.gte: 0.5
    system.cpu.user.pct.lt: 0.8

⑤has_fields

  has_fields檢查是否給定的fields存在於事件中,條件接受表示字段名稱和字符串列表。

  example,以下條件檢查http.response.code事件中是否存在該字段:

has_fields:['http.response.code']

⑥or

  操作者接收的條件列表:

or:
  - <condition1>
  - <condition2>
  - <condition3>
  ...

  example,要配置條件http.response.code = 304 或者 http.response.code = 404:

or:
  -  equals:
      http.response.code:304 
  -  equals:
      http.response.code:404

⑦and

  操作接收的條件列表,格式同or相同。也可以同or配合使用:

  example:

or:
 - <condition1>
 - and:
    - <condition2>
    - <condition3>

⑧not

  操作接收否定的條件:

not:
  <condition>

  example,配置條件NOT status = ok

not:
  equals:
    status: OK

可以在相同條件下使用and指定多個字段,(如:field1 AND fields)

 


免責聲明!

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



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