温馨提示×

centos filebeat怎么接kafka

小樊
47
2026-10-11 19:51:13
栏目: 智能运维

在 CentOS 上让 Filebeat 把日志发送到 Kafka,一般步骤如下(以常见 CentOS 7/8 + Filebeat 7.x/8.x 为例):


一、安装 Filebeat(CentOS)

1. 使用 RPM 安装(推荐)

# 以 8.13.0 为例,按版本替换
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.13.0-x86_64.rpm
rpm -ivh filebeat-8.13.0-x86_64.rpm

或启用官方 YUM 源:

cat > /etc/yum.repos.d/elastic.repo <<EOF
[elastic]
name=Elastic repository
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
EOF

yum install filebeat -y

二、配置 Filebeat 输出到 Kafka

编辑配置文件:

vi /etc/filebeat/filebeat.yml

示例配置(重点看 output.kafka)

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

# 可选:多行日志(如 Java 堆栈)
  # multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  # multiline.negate: true
  # multiline.match: after

output.kafka:
  hosts: ["192.168.1.10:9092", "192.168.1.11:9092"]
  topic: "filebeat-logs"
  partition.round_robin:
    reachable_only: false
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

logging.level: info

配置说明

  • hosts:Kafka broker 地址
  • topic:日志写入的 topic(可静态或动态)
  • required_acks:
    • 0:不等确认
    • 1:leader 确认
    • -1:全部副本确认
  • compression:gzip / snappy / lz4

三、动态 Topic(按服务名区分)

output.kafka:
  hosts: ["kafka:9092"]
  topic: '%{[fields.log_type]}'
  codec.format:
    string: '%{[message]}'

并在 input 中加:

fields:
  log_type: app_log

四、启动 Filebeat

systemctl enable filebeat
systemctl start filebeat

查看状态:

systemctl status filebeat
journalctl -u filebeat -f

五、Kafka 侧验证

1. 创建 topic(如未自动创建)

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

2. 消费验证

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

六、常见问题排查

1. 连不上 Kafka

  • 防火墙:firewall-cmd --add-port=9092/tcp --permanent
  • 检查 listeners 和 advertised.listeners

2. Filebeat 无数据

filebeat test config
filebeat test output

3. Kafka 未开启自动创建 topic

在 server.properties 中:

auto.create.topics.enable=true

如果你愿意,可以告诉我:

  • Kafka 版本
  • Filebeat 版本
  • 日志类型(Nginx / Java / 容器)

我可以给你一份可直接用的生产级配置。

0 踩