为了采集用户日志,决定使用filebeat->logstash->elasticsearch的方案。
假设一个机器上可以部署多个应用,应用下有多干个日志文件,我打算按照应用名(或者服务集群名)为索引维度,一个服务一个索引这样维护。
filebeat 可以给日志设置fields,也就是说我可以给要采集的目录的input 增加fields,假设就叫appName,那么配置文件中配置appName: app1 代表我要采集app1应用的日志目录下的 info.log warn.log error.log 等等。
但是如果我还要采集更多的应用,我可以在input.path下增加目录,但是这时我的fields就不好处理了,appName这个变量已经定义成了app1,我如果再增加一个field,那么下游logstash就要再多加一个配置读取对应的这个变量了,感觉维护成本有点高。
还能想到一个办法,就是再起一个filebeat实例,但是这样如果机器上跑了多个应用,恐怕资源占用会越来越厉害。
大神们能给出出建议吗?
假设一个机器上可以部署多个应用,应用下有多干个日志文件,我打算按照应用名(或者服务集群名)为索引维度,一个服务一个索引这样维护。
filebeat 可以给日志设置fields,也就是说我可以给要采集的目录的input 增加fields,假设就叫appName,那么配置文件中配置appName: app1 代表我要采集app1应用的日志目录下的 info.log warn.log error.log 等等。
但是如果我还要采集更多的应用,我可以在input.path下增加目录,但是这时我的fields就不好处理了,appName这个变量已经定义成了app1,我如果再增加一个field,那么下游logstash就要再多加一个配置读取对应的这个变量了,感觉维护成本有点高。
还能想到一个办法,就是再起一个filebeat实例,但是这样如果机器上跑了多个应用,恐怕资源占用会越来越厉害。
大神们能给出出建议吗?
1 个回复
rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk
赞同来自:
不同的 app 配不同的 input,就可以设置不同的 appName ,一个 filebeat 就可以