温馨提示×

centos filebeat怎么输出到kafka

小樊
50
2026-08-18 20:36:58
栏目: 智能运维

CentOS 上把 Filebeat 的日志输出到 Kafka,核心就是修改 filebeat.yml,把 output.elasticsearch 改成 output.kafka。下面给你一个完整可用的配置示例 + 步骤说明


一、环境准备

1. 安装 Filebeat(CentOS)

# 下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.11.3-x86_64.rpm

# 安装
rpm -ivh filebeat-8.11.3-x86_64.rpm

版本可按需调整,建议 Filebeat 和 Kafka 版本兼容即可(Filebeat 对 Kafka 兼容性很好)


二、Filebeat 输出到 Kafka 配置

1. 编辑配置文件

vim /etc/filebeat/filebeat.yml

2. 示例配置(重点)

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

# ========== 输出到 Kafka ==========
output.kafka:
  enabled: true
  hosts: ["192.168.1.10:9092", "192.168.1.11:9092"]
  topic: "filebeat-logs"
  version: "2.8.1"   # Kafka 版本
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

# 可选:不带 ES,关闭 ES 输出
# setup.template.enabled: false
# setup.ilm.enabled: false

三、关键参数说明

参数 说明
hosts Kafka broker 地址
topic Kafka topic(不存在会自动创建,取决于 Kafka 配置)
version Kafka 版本(建议和 Kafka 实际版本一致)
required_acks 0 / 1 / -1(all)
compression none / gzip / snappy / lz4
max_message_bytes 单条消息最大大小

四、Kafka Topic 准备(可选)

1. 自动创建(默认)

如果 Kafka 开启:

auto.create.topics.enable=true

Filebeat 会自动创建 topic。

2. 手动创建(推荐)

kafka-topics.sh \
--create \
--bootstrap-server localhost:9092 \
--partitions 3 \
--replication-factor 2 \
--topic filebeat-logs

五、启动 Filebeat

systemctl enable filebeat
systemctl start filebeat

查看状态:

systemctl status filebeat

六、验证是否写入 Kafka

1. 消费 Kafka 消息

kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic filebeat-logs \
--from-beginning

2. 查看 Filebeat 日志

journalctl -u filebeat -f
# 或
tail -f /var/log/filebeat/filebeat

七、高级用法

1. 按日志类型动态 topic

output.kafka:
  topic: '%{[fields.log_topic]}'
filebeat.inputs:
  - type: log
    paths:
      - /var/log/nginx/access.log
    fields:
      log_topic: nginx-logs

2. 输出 JSON 格式(推荐)

processors:
  - decode_json_fields:
      fields: ["message"]
      target: ""

八、常见问题

❌ Filebeat 连不上 Kafka

  • 检查防火墙
  • 检查 Kafka listeners 配置(不要用 localhost
  • 检查 advertised.listeners

❌ Kafka 收不到数据

  • Filebeat 是否启动
  • Kafka topic 是否存在
  • output.kafka.enabled: true

如果你愿意,可以把你的 Kafka 版本 / Filebeat 版本 / 日志路径发我,我可以帮你写一份完全贴合你环境的配置

0