温馨提示×

centos filebeat怎样对接kafka

小樊
49
2026-10-08 20:33:53
栏目: 智能运维

下面给你一套 CentOS 上 Filebeat 对接 Kafka 的常见做法(以 RPM 安装方式为例,适用于 ELK + Kafka 日志架构)。


一、环境准备

假设:

  • CentOS 7 / 8
  • Filebeat 已安装(如 7.x / 8.x)
  • Kafka 已部署,可访问地址:kafka1:9092,kafka2:9092,kafka3:9092
  • 目标 topic:app-logs

二、安装 Filebeat(如未安装)

# 以 8.x 为例
sudo rpm -ivh https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.13.0-x86_64.rpm

启动并开机自启:

systemctl enable filebeat
systemctl start filebeat

三、配置 Filebeat 对接 Kafka

1. 编辑配置文件

vi /etc/filebeat/filebeat.yml

2. 示例配置(常用)

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/app/*.log

output.kafka:
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
  topic: "app-logs"
  partition.round_robin:
    reachable_only: true
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

四、关键配置说明

1. input(采集源)

paths:
  - /var/log/app/*.log

支持通配符、多目录。

2. output.kafka 核心参数

参数 说明
hosts Kafka broker 地址
topic 发送到哪个 topic
required_acks 0 / 1 / -1(推荐 1 或 -1)
compression none / gzip / snappy
partition.round_robin 轮询分区

五、使用变量动态 topic(可选)

output.kafka:
  hosts: ["kafka1:9092"]
  topic: "%{[fields.log_topic]}"

input 中:

fields:
  log_topic: app-logs

六、测试与启动

1. 测试配置

filebeat test config
filebeat test output

2. 重启 Filebeat

systemctl restart filebeat

3. 查看状态

systemctl status filebeat
journalctl -u filebeat -f

七、Kafka 侧验证

kafka-console-consumer.sh \
  --bootstrap-server kafka1:9092 \
  --topic app-logs \
  --from-beginning

能看到 JSON 日志即成功。


八、常见问题

1. 连不上 Kafka

  • 防火墙:9092
  • hosts 解析
  • Kafka 未监听外网 IP

2. topic 不存在

Kafka 默认可自动创建(取决于 auto.create.topics.enable)

3. 数据格式

Filebeat 默认发送 JSON,含:

  • @timestamp
  • message
  • host
  • fields

如果你需要:

  • Filebeat → Kafka → Logstash
  • 多 topic 路由
  • SSL / SASL 认证 Kafka

可以直接告诉我你的 Kafka 版本和安全方式。

0 踩