在 CentOS 上优化 Filebeat,通常从性能、资源占用、可靠性、采集策略几个维度来做。下面按实用场景给你一个较完整的优化清单。
Filebeat 会同时监听大量日志文件。
# 查看
ulimit -n
# 修改(永久)
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
重启会话或 Filebeat 生效。
CentOS 上常见拖慢系统的:
systemctl disable --now firewalld # 如非必须
配置文件通常在:
/etc/filebeat/filebeat.yml
❌ 不推荐:
paths:
- /var/log/*
✅ 推荐:
paths:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
scan_frequency: 10s
10s ~ 30s1s(CPU 会增加)exclude_files: ['.gz$', '.tmp$']
queue.mem:
events: 4096
flush.min_events: 512
flush.timeout: 5s
queue.disk:
path: /var/lib/filebeat/diskqueue
max_size: 10GB
segment_size: 100MB
✅ 优点:Filebeat 重启不丢数据
output.elasticsearch:
hosts: ["http://es1:9200"]
worker: 4
bulk_max_size: 2048
compression_level: 3
output.logstash:
hosts: ["logstash:5044"]
worker: 4
bulk_max_size: 2048
processors:
- drop_fields:
fields: ["agent.version", "ecs.version"]
- add_host_metadata: ~
- if:
not.contains:
message: "ERROR"
then:
drop_event: ~
systemctl edit filebeat
[Service]
LimitNOFILE=65535
确保 CentOS 的 logrotate 不会破坏 Filebeat inode:
vim /etc/logrotate.d/nginx
copytruncate
或 Filebeat 推荐方式:
copytruncatecreatefilebeat export config
Kibana 中查看:
filebeat-*monitoringscan_frequency 太低paths 太宽泛exclude_files 太复杂queue.mem.events 太大bulk_max_size 太大flush.timeout 太大worker 太少filebeat.inputs:
- type: log
paths:
- /var/log/nginx/*.log
scan_frequency: 10s
exclude_files: ['.gz$']
queue.disk:
path: /var/lib/filebeat/diskqueue
max_size: 5GB
output.elasticsearch:
hosts: ["http://es:9200"]
worker: 4
bulk_max_size: 1024
processors:
- add_host_metadata: ~
- drop_fields:
fields: ["agent.ephemeral_id"]
如果你愿意,可以告诉我:
我可以给你针对性的最优配置。