Filebeat自定義索引 && 多output過濾


一、目標

1)實現自定義索引

2)不同的input輸出到各自對應的索引,nginx的日志輸出到index-nginx的索引,zabbix的日志輸出到index-zabbix,app的日志輸出到index-app(如圖1);這樣不會弄成大雜燴。

圖1:

 

 

結果圖:

 

二、配置文件

 

# 定義app、zabbix、nginx等應用的input類型、以及存放的具體路徑
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
  fields: 
    source: app
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log
  fields:
    source: nginx
- type: log
  enabled: true
  paths:
    - /var/log/zabbix/*.log
  fields:
    source: zabbix
    
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: true
  
setup.template.settings:
  index.number_of_shards: 1
  
# 定義kibana的IP:PORT
setup.kibana:
  host: "10.0.0.11:5601"

# 定義模板的相關信息  
setup.template.name: "lile_log"
setup.template.pattern: "lile-*"
setup.template.overwrite: true
setup.template.enabled: true
# 在7.4這個版本中,自定義ES的索引需要把ilm設置為false
setup.ilm.enabled: false

# 定義app、zabbix、nginx的output
output.elasticsearch:
  # 定義ES的IP:PORT
  hosts: ["10.0.0.24:9200"]
  # 這里的index前綴lile與模板的pattern匹配,中間這一串設置為field.source變量,方面后面具體的匹配
  index: "lile-%{[fields.source]}-*"
  indices:
    # 這里的前綴lile同為與模板的pattern匹配,中間為field.source具體的值,當前面的input的field.source值與這里的匹配時,則index設置為定義的
    - index: "lile-app-%{+yyyy.MM.dd}"
      when.equals:
        fields:
            source: "app"
    - index: "lile-zabbix-%{+yyyy.MM.dd}"
      when.equals: 
        fields.source: "zabbix"
    - index: "lile-nginx-%{+yyyy.MM.dd}"
      when.equals: 
        fields.source: "nginx"
  
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

 

難點:

setup.ilm.enabled: false 在7.4版本中,需要把ilm這個設置關閉掉,才能自定義索引

 

三、總結

這個多output弄了將近一個星期,不斷的測試,網上感覺資料很少,更多的是自己知識的匱乏,不理解原理。雖然用了這么長的時間,可能覺得有點浪費時間,但是既然開始了,就不想放棄,人的自信心也是這樣一件事情一件事情累計起來的,如果覺得這個太難了不想浪費時間,久而久之,什么都做不好。后續還得好好把ES的原理好好理解。

 

參考網址:

https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html

 


免責聲明!

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



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