Filebeat 不会将事件推送到单个 Kafka 集群中的多个 Kafka 代理

Filebeat not pushing events to multiple Kafka broker in a single Kafka cluster

我设置中的 Filebeat 将事件推送到具有 2 个代理的 Kafka 集群。我在主机列表中只添加了一个节点,但发现了集群中的两个代理。我从 Filebeat 日志中了解到这一点。

但是,即使发现了两个代理,事件也只发布给了代理。

下面是用于输出的 filebeat 配置

 output.kafka:
  hosts: ["host1:port"]
  topic: '%{[fields.document_type]}'
  worker: 4
  partition.round_robin:
    reachable_only: true
  required_acks: 1
  compression: gzip
  compression_level: 3

即使在日志中,它也列出了它仅连接到注册的代理之一。

2019-01-07T06:12:38.789-0800    INFO    kafka/log.go:53 client/metadata fetching metadata for all topics from broker host1:port

2019-01-07T06:12:38.799-0800    INFO    kafka/log.go:53 Connected to broker at host1:port (unregistered)

2019-01-07T06:12:38.806-0800    INFO    kafka/log.go:53 client/brokers registered new broker #1 at host1:port
2019-01-07T06:12:38.806-0800    INFO    kafka/log.go:53 client/brokers registered new broker #0 at host2:port
2019-01-07T06:12:38.806-0800    INFO    kafka/log.go:53 kafka message: Successfully initialized new client
2019-01-07T06:12:38.806-0800    INFO    pipeline/output.go:105  Connection to kafka(host1:port,host2:port) established
2019-01-07T06:12:38.807-0800    INFO    kafka/log.go:53 kafka message: Producer.MaxMessageBytes must be smaller than MaxRequestSize; it will be ignored.
2019-01-07T06:12:38.808-0800    INFO    kafka/log.go:53 producer/broker/0 starting up

2019-01-07T06:12:38.814-0800    INFO    kafka/log.go:53 Connected to broker at host2:port (registered as #0)

zookeeper 控制台列出了集群中的两个代理,因此 Kafka 集群也很好。

我无法找出导致 Filebeat 仅推送到一个 Kafka 代理的错误。

谢谢

我想我找到了原因。我的 Kafka 集群采用默认设置,即设置为一个分区。另外,在创建主题时,我用一个节点启动了 Kafka 集群。因此,所有主题的分区都分配给一个节点。当添加第二个节点时,Kafka 不会自动重新平衡节点之间的分区,导致所有分区都在一个地方。因此 Filebeat 只将数据发送到一个节点。