Ubuntu下Filebeat性能调优指南
一 基线检查与快速定位
sudo filebeat -c /etc/filebeat/filebeat.yml validate、sudo systemctl status filebeat、sudo journalctl -u filebeat -f。同时确认采集路径存在且Filebeat有读取权限。若对接ES/Logstash,先用最简输出验证端到端连通性。setup.monitor.enabled: true),重点观察处理速率、事件延迟、队列长度等,定位是采集、处理还是输出瓶颈。二 输入与处理优化
filebeat.inputs:
- type: filestream
paths:
- /var/log/*.log
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
multiline.max_lines: 10000
json.keys_under_root: true
json.overwrite_keys: true
json.message_key: log
json.add_error_key: true
三 队列与并发优化
queue.type: persisted
queue.max_bytes: 1024mb
flush.min_events: 2048
flush.timeout: 1s
harvester_limit: 512(按CPU/内存与文件数调优)。output.elasticsearch.bulk_max_size: 2048 或更高(视ES能力而定)。output.compression: true。worker,并配合flush_interval控制请求间隔。示例:output.elasticsearch:
hosts: ["localhost:9200"]
worker: 2
bulk_max_size: 15000
flush_interval: 1s
compression: true
spooler参数(如filebeat.spool_size、filebeat.idle_timeout、harvester_buffer_size);**7.x+**使用queue.mem或queue.persisted。请勿混用。四 系统资源与网络优化
ulimit -n 65536;永久:在/etc/security/limits.conf添加:* soft nofile 65536
* hard nofile 65536
/etc/sysctl.conf:net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = cubic
执行sysctl -p生效。五 推荐参数模板与验证步骤
filebeat.inputs:
- type: filestream
paths:
- /var/log/*.log
# 多行示例(按堆栈合并)
# multiline.pattern: '^\['
# multiline.negate: true
# multiline.match: after
# multiline.max_lines: 10000
# 队列(7.x+ 持久化队列)
queue.type: persisted
queue.max_bytes: 1024mb
flush.min_events: 2048
flush.timeout: 1s
# 并发与资源
harvester_limit: 512
# 输出到 Elasticsearch
output.elasticsearch:
hosts: ["your-es:9200"]
worker: 2
bulk_max_size: 15000
flush_interval: 1s
compression: true
# ssl.verification_mode: certificate
# ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
# ssl.certificate: "/etc/filebeat/certs/client.crt"
# ssl.key: "/etc/filebeat/certs/client.key"
# 监控
setup.monitor.enabled: true
filebeat -c /etc/filebeat/filebeat.yml validate;检查/var/log/filebeat/filebeat与journalctl -u filebeat -f。