在 Debian 上,Filebeat 本身的限流能力有限(它主要是“尽力发送”),但可以通过配置限速、队列限制、以及配合 systemd / 网络层来实现限流。下面按推荐程度给你几种做法。
编辑 /etc/filebeat/filebeat.yml:
output.elasticsearch:
hosts: ["http://localhost:9200"]
bulk_max_size: 50 # 每次批量发送的最大事件数
或 Logstash:
output.logstash:
hosts: ["localhost:5044"]
bulk_max_size: 50
✅ 降低 bulk_max_size 可减少突发流量
queue.mem:
events: 4096
flush.min_events: 512
flush.timeout: 5s
queue.disk:
path: /var/lib/filebeat/diskqueue
max_size: 1GB
✅ 防止 Filebeat 一次吃光系统资源
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
scan_frequency: 10s # 默认 10s,可调大
✅ 降低日志发现频率
harvester_limit: 10
✅ 控制同时读取的文件数
sudo systemctl edit filebeat
添加:
[Service]
CPUQuota=20%
MemoryMax=512M
然后:
sudo systemctl daemon-reload
sudo systemctl restart filebeat
✅ 非常适合“不能影响业务”的场景
tc(流量控制)sudo tc qdisc add dev eth0 root tbf \
rate 1mbit burst 32kbit latency 400ms
✅ 限制 Filebeat 出口带宽(影响所有流量)
wondershapersudo apt install wondershaper
sudo wondershaper eth0 1024 1024
logrotate 控制文件增长✅ 生产推荐:
bulk_max_size: 50
harvester_limit: 10
queue.disk:
max_size: 1GB
CPUQuota=20%
如果你愿意,可以告诉我:
我可以给你一份针对性配置。