温馨提示×

centos filebeat如何做集群

小樊
37
2026-10-05 21:38:26
栏目: 智能运维

在 CentOS 上,“Filebeat 做集群”通常并不是指 Filebeat 本身组成高可用集群(Filebeat 是轻量级采集器,官方不推荐做多节点主备),而是多个 Filebeat 节点统一采集、集中管理、避免重复或丢失数据。下面按常见场景说明。


一、正确认知:Filebeat 本身“不是集群组件”

Filebeat 设计目标是:

  • 轻量
  • 单节点运行
  • 从文件读日志 → 发到 Elasticsearch / Logstash / Kafka

✅ 集群化的是“后端”,不是 Filebeat
❌ 不建议让多个 Filebeat 同时采同一文件(会重复)


二、常见 Filebeat “集群方案”

方案 1:多节点 Filebeat → 统一 Logstash(最常用)

CentOS A (Filebeat)
CentOS B (Filebeat)
CentOS C (Filebeat)
        ↓
     Logstash 集群
        ↓
   Elasticsearch 集群

1. 各节点安装 Filebeat(CentOS)

sudo rpm -ivh filebeat-8.x.x-x86_64.rpm

2. 配置 filebeat.yml(示例)

filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log

output.logstash:
  hosts: ["logstash1:5044", "logstash2:5044"]

✅ 多个 Filebeat 各自采自己机器的日志
✅ Logstash / ES 做集群,保证高可用


方案 2:Filebeat → Kafka 集群(高并发场景)

Filebeat → Kafka Cluster → Logstash → ES

filebeat.yml

output.kafka:
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
  topic: logs-topic

✅ Kafka 本身是高可用集群
✅ Filebeat 无状态,重启不丢数据(有 offset)


方案 3:同一目录多 Filebeat(❌ 不推荐)

如果你意思是:

多台 CentOS 采 同一个 NFS / 共享目录

❌ 不要这样做
会导致:

  • 日志重复
  • offset 混乱

✅ 正确做法:

  • NFS 上只放日志
  • 一台 Filebeat 采
  • 或用 Filebeat Module + 去重

三、Filebeat 高可用建议(CentOS)

1. 使用 systemd 保活

systemctl enable filebeat
systemctl start filebeat

2. 防止数据丢失

queue.spool:
  file:
    path: /var/lib/filebeat/queue

3. 配置多个 output(自动故障转移)

output.elasticsearch:
  hosts: ["es1:9200", "es2:9200", "es3:9200"]

四、如果你真正想要的是“Filebeat 主备”

⚠️ 官方不支持
替代方案:

  • Keepalived + 单节点 Filebeat
  • 或容器化 + K8s Deployment(1 副本)

五、总结

目标 推荐方案
多机日志采集 多 Filebeat + ES/Logstash 集群
高并发 Filebeat + Kafka
高可用 后端集群,不是 Filebeat
共享日志 避免多 Filebeat 同采

如果你能补充:

  • 是 同机器多 Filebeat 还是 多台 CentOS
  • 发到 ES / Logstash / Kafka
  • 是否容器环境

我可以给你一套可直接用的配置模板。

0 踩