背景
在实际的生产中的大量实践后我们会发现即使Elasticsearch官方宣称filebeat为轻量级采集agent,但是如果一个性能较好的机器上同时部署几十个应用,也就意味着有几十个应用在源源不断的产生大量日志,这种情况下无论filebeat再怎么轻量也会不堪重负,从而成为cpu负载的No.1。
解决
解决起来很简单,只要在主配置filebeat.yml中加入 max_procs: 2即可(这里假定机器是4核的),由于yaml这种文件格式极易出错引起不适,我就把完整的配置贴出来一下,供大家参阅!
filebeat.inputs:
- type: log
enabled: false
paths:
- /var/log/*.log
filebeat.config.inputs:
enabled: true
path: ${path.config}/config/*.yml
setup.ilm.enabled: false
setup.template.name: "xxlog"
setup.template.pattern: "xx-*"
output.elasticsearch:
hosts: [""]
loadbalance: true
#index: "xx-%{[fields.appname]}-%{+yyyy.MM.dd}"
index: "xx-%{[fields.appname]}-%{+yyyy.w}"
username: ""
password: ""
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- drop_fields:
fields: ["ecs","host","input.type","log","agent.ephemeral_id","agent.type","agent.id","agent.version"]
ignore_older: 48h
clean_inactive: 72h
max_procs: 2