SASL を使用した Filebeat kafka 入力?

SASL を使用した Filebeat kafka 入力?

私は、kafka 入力を使用して、Filebeat が kafka からのメッセージを消費するようにしようとしています。何らかの理由で SASL で認証できませんが、その理由はよくわかりません。SASL で使用しようとすると、Kafka と Filebeat の両方のドキュメントが少し不足しています。

私の Filebeat 設定は次のとおりです。

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

filebeat.inputs:
- type: kafka
  hosts: 'the.kafka.server.com:9092'
  topics: 'my_topic'
  group_id: 'my_group'
  ssl.enabled: yes
  username: "$ConnectionString"
  password: "org.apache.kafka.common.security.plain.PlainLoginModule required username='my_username' password='my_password';"

processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~

output.console:
  pretty: true

出力は

INFO    input/input.go:114      Starting input of type: kafka; ID: 14409252276502564738
INFO    kafka/log.go:53 kafka message: Initializing new client
INFO    kafka/log.go:53 client/metadata fetching metadata for all topics from broker the.kafka.server.com:9092

INFO    crawler/crawler.go:106  Loading and starting Inputs completed. Enabled inputs: 1
INFO    cfgfile/reload.go:171   Config reloader started
INFO    cfgfile/reload.go:226   Loading of config files completed.
INFO    kafka/log.go:53 kafka message: Successful SASL handshake. Available mechanisms: %!(EXTRA []string=[PLAIN OAUTHBEARER])
INFO    kafka/log.go:53 Failed to read response while authenticating with SASL to broker the.kafka.server.com:9092: EOF

INFO    kafka/log.go:53 Closed connection to broker the.kafka.server.com:9092

INFO    kafka/log.go:53 client/metadata got error from broker -1 while fetching metadata: EOF

ここで何が起こっているのかわかりません。追加も試しましたがcompression: none、役に立ちませんでした。また、openssl を使用してサーバー証明書が検証可能であることを確認しました。ここで何を間違っているのでしょうか? 問題の kafka サーバーはクラウドでホストされている kafka サーバーであり、サーバー構成を確認できません。kafka のクラウド UI から「接続文字列」が提供されました。

答え1

問題が見つかりました。$ConnectionString構文が Confluent Cloud Kafka クラスターでは機能しません。正しい構文は次のとおりです。

filebeat.inputs:
- type: kafka
  hosts: 'the.kafka.server.com:9092'
  topics: 'my_topic'
  group_id: 'my_group'
  ssl.enabled: yes
  username: <API KEY>
  password: <API SECRET>

接続して消費するにはこれで十分です

関連情報