在 CentOS 上,“Filebeat 做集群”通常并不是指 Filebeat 本身组成高可用集群(Filebeat 是轻量级采集器,官方不推荐做多节点主备),而是多个 Filebeat 节点统一采集、集中管理、避免重复或丢失数据。下面按常见场景说明。
Filebeat 设计目标是:
✅ 集群化的是“后端”,不是 Filebeat
❌ 不建议让多个 Filebeat 同时采同一文件(会重复)
CentOS A (Filebeat)
CentOS B (Filebeat)
CentOS C (Filebeat)
↓
Logstash 集群
↓
Elasticsearch 集群
sudo rpm -ivh filebeat-8.x.x-x86_64.rpm
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
output.logstash:
hosts: ["logstash1:5044", "logstash2:5044"]
✅ 多个 Filebeat 各自采自己机器的日志
✅ Logstash / ES 做集群,保证高可用
Filebeat → Kafka Cluster → Logstash → ES
output.kafka:
hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
topic: logs-topic
✅ Kafka 本身是高可用集群
✅ Filebeat 无状态,重启不丢数据(有 offset)
如果你意思是:
多台 CentOS 采 同一个 NFS / 共享目录
❌ 不要这样做
会导致:
✅ 正确做法:
systemctl enable filebeat
systemctl start filebeat
queue.spool:
file:
path: /var/lib/filebeat/queue
output.elasticsearch:
hosts: ["es1:9200", "es2:9200", "es3:9200"]
⚠️ 官方不支持
替代方案:
| 目标 | 推荐方案 |
|---|---|
| 多机日志采集 | 多 Filebeat + ES/Logstash 集群 |
| 高并发 | Filebeat + Kafka |
| 高可用 | 后端集群,不是 Filebeat |
| 共享日志 | 避免多 Filebeat 同采 |
如果你能补充:
我可以给你一套可直接用的配置模板。