Filebeat自定义索引 && 多output过滤

一、目标

1)实现自定义索引

2)不同的input输出到各自对应的索引,nginx的日志输出到index-nginx的索引,zabbix的日志输出到index-zabbix,app的日志输出到index-app(如图1);这样不会弄成大杂烩。

图1:

Filebeat自定义索引 && 多output过滤_第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

 

你可能感兴趣的:(Filebeat自定义索引 && 多output过滤)