在 CentOS 上部署 Filebeat 时,性能调优主要从 采集效率、发送吞吐、资源占用、系统限制 四个方面入手。下面按「配置项 + 系统层 + 实践建议」给你一套可落地的调优方法。
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
# 每个文件使用一个 harvester
harvester_limit: 512 # 默认是 0(不限),生产可设 256~1024
scan_frequency: 10s # 默认 10s,日志量大可降到 1s
output.elasticsearch:
hosts: ["http://es:9200"]
bulk_max_size: 2048 # 默认 50,建议 1024~4096
worker: 4 # 并发 worker 数(CPU 核数的一半或相等)
compression_level: 1 # 开启压缩,降低网络压力
如果是 Kafka / Logstash:
output.kafka:
hosts: ["kafka:9092"]
topic: logs
bulk_max_size: 2048
worker: 4
内存队列(默认)
queue.mem:
events: 8192 # 默认 4096
flush.min_events: 2048
flush.timeout: 1s
磁盘队列(推荐高可靠场景)
queue.disk:
path: /var/lib/filebeat/diskqueue
max_size: 10GB
write_ahead: true
在 systemd 中限制(CentOS 7/8):
systemctl edit filebeat
[Service]
CPUQuota=200%
MemoryLimit=1G
processors:
- drop_fields:
fields: ["agent.ephemeral_id", "ecs.version"]
如果不用:
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
ulimit -n
修改:
/etc/security/limits.conf
filebeat soft nofile 65535
filebeat hard nofile 65535
Systemd 也要加:
[Service]
LimitNOFILE=65535
queue.disk.path: /data/filebeat/queue
sysctl -w net.core.somaxconn=4096
sysctl -w net.ipv4.tcp_tw_reuse=1
filebeat test output
filebeat export config
http.enabled: true
http.host: 0.0.0.0
http.port: 5066
访问:
http://ip:5066/stats
关注:
events.totalpublish.eventsqueue.fillfilebeat.inputs:
- type: log
paths: ["/var/log/app/*.log"]
harvester_limit: 512
scan_frequency: 1s
queue.disk:
path: /data/filebeat/queue
max_size: 20GB
output.elasticsearch:
hosts: ["http://es:9200"]
worker: 4
bulk_max_size: 2048
compression_level: 1
如果你愿意,可以告诉我:
我可以直接帮你给一份 精准配置模板。