web-dev-qa-db-ja.com

クラスター内で利用可能なすべてのKafkaブローカーを一覧表示する方法は?

kafkaブローカーを監視するシェルスクリプトを書いています。

いくつかのリンクを調べたところ、ZooKeeperにブローカーのリストが含まれており、このリストにIPアドレスが存在する場合、kafkaブローカーが実行されていることがわかりました。

シェルスクリプトで使用してブローカーリストを取得し、kafkaが実行されているかどうかを確認できるコマンドが必要です。

Elasticsearchのようなkafkaクラスターステータスを取得するcurlコマンドはありますか?

45

このコマンドは、括弧内のアクティブなブローカーのリストを表示します:

./bin/zookeeper-Shell.sh localhost:2181 ls /brokers/ids
75
jimijazz

Zk-Clientを使用した代替方法:

引数を./zookeeper-Shell.shに渡したくない場合、Zookeeper CLIからブローカーの詳細を確認するには、スタンドアロンのZookeeperをインストールする必要があります(従来のKafkaはJline JARに対応していません)。

スタンドアロンのZookeeperをインストール(解凍)したら、次のようにします。

  • Zookeeper CLIを実行します。
    $ zookeeper/bin/zkCli.sh -server localhost:2181#Make sure your Broker is already running

  • 成功すると、Zkクライアントが次のように実行されていることがわかります。

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
  • ここから、さまざまなコマンドを使用してブローカーの詳細を調べることができます。

$ ls /brokers/ids# Gives the list of active brokers
$ ls /brokers/topics#Gives the list of topics
$ get /brokers/ids/0#Gives more detailed information of the broker id '0'

47
Panchu
echo dump | nc localhost 2181 | grep brokers

(localhostをzookeeperが実行されているホストに置き換えてください)

18
Aydin K.

Kafkaデータロードデモ環境へのbashスクリプトを作成するときに使用するいくつかのクイック関数を次に示します。この例では、セキュリティなしでHDPを使用していますが、他の環境に簡単に変更でき、特に堅牢ではなく、高速で機能することを目的としています。

最初は、設定から最初のZooKeeperノードのアドレスを取得します。

ZKS1=$(cat /usr/hdp/current/zookeeper-client/conf/Zoo.cfg | grep server.1)
[[ ${ZKS1} =~ server.1=(.*?):[0-9]*:[0-9]* ]]
export ZKADDR=${BASH_REMATCH[1]}:2181
echo "using ZooKeeper Server $ZKADDR"

2番目は、ZooKeeperからブローカーIDを取得します。

echo "Fetching list of Kafka Brokers"
export BROKERIDS=$(/usr/hdp/current/kafka-broker/bin/zookeeper-Shell.sh ${ZKADDR} <<< 'ls /brokers/ids' | tail -1)
export BROKERIDS=${BROKERIDS//[!0-9 ]/}
echo "Found Kafka Broker IDS: $BROKERIDS"

3番目は、ZooKeeperを再度解析して、コマンドラインクライアントで使用可能なKafka Brokers Host:portのリストを取得します。

unset BROKERS
for i in $BROKERIDS
do
DETAIL=$(/usr/hdp/current/kafka-broker/bin/zookeeper-Shell.sh ${ZKADDR} <<< "get /brokers/ids/$i")
[[ $DETAIL =~ PLAINTEXT:\/\/(.*?)\"\] ]]
if [ -z ${BROKERS+x} ]; then BROKERS=${BASH_REMATCH[1]}; else 
BROKERS="${BROKERS},${BASH_REMATCH[1]}"; fi
done
echo "Found Brokerlist: $BROKERS"
6
Chaffelson

シェルスクリプトでzookeeperコマンドを使用するには

zookeeper/bin/zkCli.sh -server localhost:2181 <<< "ls/brokers/ids" | tail -n 1.最後の行には通常、応答の詳細が含まれます

1
Gangadhar

私はこうしました

#!/bin/bash

ZK_Host="localhost"
ZK_PORT=2181


for i in `echo dump | nc $ZK_Host $ZK_PORT | grep brokers`
do
    echo $i
    DETAIL=`zkCli -server "$ZK_Host:$ZK_PORT" get $i 2>/dev/null | tail -n 1`
    echo $DETAIL
done
0
Olivier Refalo

MacOSでは、次を試すことができます。

brew tap let-us-go/zkcli
brew install zkcli

zkcli ls /brokers/ids
zkcli get /brokers/ids/1
0
Jose Alban