在 CentOS 上,Filebeat 本身并不支持“分卷(按大小/时间切割输出文件)”,因为 Filebeat 的定位是日志收集与转发,而不是日志切割工具。
如果你说的“分卷”是指把日志按大小或时间分成多个文件,通常有以下几种正确做法:
这是最常见、推荐的做法。
CentOS 一般用 logrotate 做分卷:
/var/log/app/*.log {
daily
rotate 7
size 100M
copytruncate
compress
}
Filebeat 只需监控目录:
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
✅ Filebeat 会自动:
Filebeat 的 file output 不能按大小或时间滚动:
output.file:
path: "/data/filebeat"
filename: filebeat.out
⚠️ 这个文件会一直变大,不会自动分卷。
用 Logstash / Kafka / 外部程序 接收后再分卷:
✅ Filebeat 本身就是流式读取
你不需要手动分卷。
用 processors + fields 并不能分文件,但可以打标签:
processors:
- add_fields:
fields:
log_type: app
真正按时间分卷,应在 输出端(ES / Logstash) 做。
| 需求 | 是否支持 | 正确方式 |
|---|---|---|
| Filebeat 自动分卷输出 | ❌ | 用 logrotate / Logstash |
| Filebeat 采集分卷日志 | ✅ | 配置目录即可 |
| Filebeat 读取大文件 | ✅ | 原生支持 |
| Filebeat 按时间切文件 | ❌ | ES 索引 / Logstash |
如果你能具体说一下:
我可以给你一份可直接用的配置。