背景

在实际的生产中的大量实践后我们会发现即使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