Ubuntu 上 Filebeat 高可用部署实践
一、总体思路
- 在每台业务主机上运行独立的 Filebeat 实例,通过输出到具备副本机制的 Elasticsearch 集群实现端到端高可用;Filebeat 本身是无状态的“边车”进程,不需要集群模式。
- 利用 多输出主机列表 + 负载均衡/故障转移能力,使采集链路在后端节点故障时自动切换;Elasticsearch 侧通过 副本分片保障数据可用性。
- 通过 **Registry(注册表)**记录读取位点,确保进程重启或主机迁移时不丢数;必要时使用 多实例隔离承载不同日志类型或不同 SLA 的采集任务。
二、部署步骤
- 安装与版本管理
- Ubuntu 建议使用官方 APT 仓库或下载 .deb 包安装,保持所有节点 Filebeat 版本一致,便于配置与维护。
- 配置输出高可用
- 输出到 Elasticsearch 时提供 多个节点地址;如经 Logstash/ Kafka,也配置多个目标以实现故障转移。
- 启用关键处理与模板
- 启用 add_host_metadata / add_cloud_metadata 丰富元数据;按需配置 ILM(Index Lifecycle Management) 或自定义索引模板与副本数,保证写入高可用与滚动策略。
- 启动与守护
- 使用 systemd 托管进程,设置 Restart=always,确保异常退出自动拉起;生产环境避免使用 nohup 前台方式。
三、关键配置示例
- 最小可用配置(直连 ES,多主机故障转移)
- filebeat.yml
- filebeat.inputs:
- type: log
enabled: true
paths:
- output.elasticsearch:
- hosts: [“http://es-node1:9200”,“http://es-node2:9200”,“http://es-node3:9200”]
- index: “filebeat-%{[agent.version]}-%{+yyyy.MM.dd}”
- setup.ilm.enabled: true
- processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- 多实例隔离运行(同一台主机不同采集任务)
- 目录规划
- mkdir -p /opt/filebeat_instances/{app,nginx}/{data,logs,config}
- 启动实例 1(应用日志)
- filebeat -e -c /opt/filebeat_instances/app/config/filebeat.yml
–path.data /opt/filebeat_instances/app/data
–path.logs /opt/filebeat_instances/app/logs
- 启动实例 2(Nginx 日志)
- filebeat -e -c /opt/filebeat_instances/nginx/config/filebeat.yml
–path.data /opt/filebeat_instances/nginx/data
–path.logs /opt/filebeat_instances/nginx/logs
- 说明:通过 –path.data / --path.logs / --path.config 实现数据与配置的完全隔离,避免注册表与日志互相干扰。
四、高可用与可靠性要点
- 数据不丢与断点续传
- 依赖 Registry 文件记录已发送事件位点;避免随意清理 /var/lib/filebeat/registry;在升级或迁移时保留旧数据目录直至确认无回放需求。
- 队列与背压
- 调整 queue.mem.events / flush.min_events 与 bulk_max_size,在突发流量时提供缓冲,降低后端抖动带来的丢数风险。
- 重试与超时
- 配置合理的 backoff 策略与超时,配合输出端的 负载均衡/故障转移,提升临时性故障下的自愈能力。
- 安全与合规
- 全链路启用 TLS/SSL 加密,使用 基于角色的访问控制(RBAC) 与 Keystore 管理凭据,避免明文密码落地。
五、监控与验证
- 自我监控
- 启用 logging.metrics,用 Metricbeat 采集 Filebeat 自身指标;关注 registry 状态、事件处理速率、队列积压、输出错误等关键面板。
- 目标端健康
- 对 Elasticsearch 集群进行健康检查与告警(集群状态、节点数、磁盘水位、延迟),确保索引创建与写入正常。
- 故障演练
- 定期演练 停掉单个 Filebeat 实例、重启 ES 节点、断网/限流等场景,验证位点续传、无重复、无丢失与自动恢复能力。