Ubuntu 环境下 Filebeat 处理大文件日志的实用方案
一 核心原则与总体思路
二 关键配置示例 filebeat.yml
# Ubuntu 采集大文件日志的推荐实践
filebeat.inputs:
- type: filestream # 7.0+ 推荐
enabled: true
paths:
- /var/log/**/*.log
- /opt/app/logs/*.log
ignore_older: 72h # 忽略超过 72 小时的文件
scan_frequency: 15s # 每 15 秒扫描新增/轮转文件
close_inactive: 5m # 5 分钟无新内容则关闭文件句柄
clean_inactive: 72h # 清理 72 小时前已关闭的状态
harvester_limit: 1000 # 单输入最大 harvester 数(按主机资源调优)
# 多行示例(按应用实际调整)
# multiline.pattern: '^\['
# multiline.negate: true
# multiline.match: after
# multiline.max_lines: 10000
# 减少在 Filebeat 端的处理开销
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
# 如非必须,不在采集端做 heavy parse(grok/json),放到 ES Ingest 或 Logstash
# 可靠性:持久化队列(磁盘缓冲,防止数据丢失)
queue:
type: persisted
max_bytes: 1GB
flush.min_events: 2048
flush.timeout: 1s
# 输出(按实际选择其一或组合)
output.elasticsearch:
hosts: ["http://es01:9200","http://es02:9200","http://es03:9200"]
bulk_max_size: 5000
compression: gzip
worker: 3
# 可选:高吞吐或解耦时接入消息队列
# output.kafka:
# hosts: ["kafka1:9092","kafka2:9092"]
# topic: "filebeat-logs"
# codec.json: true
# worker: 3
# bulk_max_size: 5000
# 监控 Filebeat 自身
monitoring:
enabled: true
elasticsearch:
hosts: ["http://es01:9200"]
三 系统日志轮转与 Filebeat 协同
/opt/app/logs/*.log {
daily
rotate 14
missingok
notifempty
compress
delaycompress
copytruncate # 适用于不支持信号通知的应用
# postrotate
# systemctl reload filebeat >/dev/null 2>&1 || true
# endscript
}
四 性能与稳定性调优清单
五 快速验证与排错