Filebeat定義index


一、Filebeat自定義index

默認情況下filebeat寫入elasticsearch中的數據,將會自動生成一個flibe-version-date的索引,采集的數據都在這個索引下面。根據要求希望將不同服務的日志輸出到各自對應的索引。

如下:

配置文件
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /data/logs/pb-dubbo-user/err_*.log
  fields:
    source: dubbo-user
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after 
​
- type: log
  enabled: true
  paths:
    - /data/logs/pb-server-admin/err_*.log
  fields:
    source: server-admin
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
​
- type: log
  enabled: true
  paths:
    - /data/logs/pb-dubbo-product/err_*.log
  fields:
    source: dubbo-product
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: false
  multiline.match: after
​
- type: log
  enabled: true
  paths:
    - /data/logs/pb-server-api/err_*.log
  fields:
    source: server-api
  multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by|^java\.net|^org\.spring|^org\.apache:'
  multiline.negate: true
  multiline.match: after
​
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
​
​
setup.template.settings:
  index.number_of_shards: 1
​
# 定義模板的相關信息
setup.template.name: "pb_log"
setup.template.pattern: "pb-*"
setup.template.overwrite: true
setup.template.enabled: true
​
#7版本自定義ES的索引需要把ilm設置為false
setup.ilm.enabled: false
​
​
setup.kibana:
 hosts: "192.168.100.163:5601"
​
output.elasticsearch:
  hosts: ["192.168.100.163:9200"]
  index: "pb-%{[fields.source]}-*"
  indices:
    - index: "pb-dubbo-user-%{+yyyy.MM.dd}"
      when.equals:
        fields.source: "dubbo-user"
    - index: "pb-server-admin-%{+yyyy.MM.dd}"
      when.equals:
        fields.source: "server-admin"
    - index: "pb-server-api-%{+yyyy.MM.dd}"
      when.equals:
        fields.source: "server-api"
    - index: "pb-dubbo-product-%{+yyyy.MM.dd}"
      when.equals:
        fields.source: "dubbo-product"
​
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

  如果不想以日期來划分,可以將{+yyyy.MM.dd}日期格式去掉

 

二、Filebeat合並多行日志

將JAVA堆棧跟蹤日志組合成一個message

示例:

Exception in thread "main" java.lang.IllegalStateException: A book has a null property
       at com.example.myproject.Author.getBookIds(Author.java:38)
       at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
Caused by: java.lang.NullPointerException
       at com.example.myproject.Book.getId(Book.java:22)
       at com.example.myproject.Author.getBookIds(Author.java:35)
       ... 1 more

 

要將這些行整合到Filebeat中的單個事件中,請使用以下多行配置:

multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
multiline.negate: false
multiline.match: after

 

C風格的日志

一些編程語言在一行末尾使用反斜杠()字符,表示該行仍在繼續,如本例中所示:

printf ("%10.10ld  \t %10.10ld \t %s\
  %f", w, x, y, z );

 

要將這些行整合到Filebeat中的單個事件中,請使用以下多行配置

multiline.pattern: '\\$'
multiline.negate: false
multiline.match: before

 

此配置將以"\"字符結尾的任何行與后面的行合並。

 

時間戳

來自Elasticsearch等服務的活動日志通常以時間戳開始,然后是關於特定活動的信息,如下例所示:

[2015-08-24 11:49:14,389][INFO ][env                      ] [Letha] using [1] data paths, mounts [[/
(/dev/disk1)]], net usable_space [34.5gb], net total_space [118.9gb], types [hfs]

 

要將這些行整合到Filebeat中的單個事件中,請使用以下多行配置:

multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after

 

Multiline

  • multiline.pattern: 正則表達式,以空格開頭,值為^[[:space:]]

  • multiline.negate: 是否匹配正則表達式內容,取值為 true|false

  • multiline.match: 取值為after|before

pattern=^b,意思是以b開頭。negate有false和true兩種取值,match也有after和before兩種取值。下面詳述:
​
negate參數為false,表示“否定參數=false”。multiline多行參數負負得正,表示符合pattern、match條件的行會融入多行之中、成為一條完整日志的中間部分。如果match=after,則以b開頭的和前面一行將合並成一條完整日志;如果match=before,則以b開頭的和后面一行將合並成一條完整日志。
​
negate參數為true,表示“否定參數=true”。multiline多行參數為負,表示符合match條件的行是多行的開頭,是一條完整日志的開始或結尾。如果match=after,則以b開頭的行是一條完整日志的開始,它和后面多個不以b開頭的行組成一條完整日志;如果match=before,則以b開頭的行是一條完整日志的結束,和前面多個不以b開頭的合並成一條完整日志。
 

 


免責聲明!

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



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