一、背景
我的elk架构是filebeat--redis--logstash--elasticsearch--kibana,我的想法是:我一台服务器多个程序有多个日志文件,在kibana里面想创建不通项目索引,指定不同日志文件
二、问题及解决思路
因为filebeat在6.0之后配置文件只能写一个output,因此多个日志文件都会传到redis的同一个库,同时key只能写一个。
但这样会有一个问题,在logstash配置里,input只有一个redis,type字段也就只能写一个,那在filter及output部分就无法通过type字段进行判断,继而无法写多个elasticsearch和里面的index字段,最终无法在kibana创建多个项目索引。
开始思路是尝试类似nginx的方式,写多个配置文件,未果,研究了一下filebeat的配置文件说明,也未果,想利用document_type字段,还未果(可能我配置问题)。后来突然发现网上关于一个关于tag字段的文章,就有了思路,就是不用纠结利用logstash里input的type字段。就是利用filebeat的tag字段,在logstash的output里面,写if [fields][tag] == "<tag变量值>",这种方式解决。下面直接上配置。
三、具体配置
1、filebeat配置
filebeat.prospectors:
- type: log
enabled: true
paths:
- "/data/test1.log"
tail_files: true
fields:<