如何在集群中列出所有可用的kafka代理?

j5fpnvbx  于 2021-06-07  发布在  Kafka
关注(0)|答案(9)|浏览(351)

我正在写一个shell脚本来监视Kafka的经纪人。
我浏览了一些链接,发现如果zookeeper包含一个代理列表,并且如果在这个列表中存在ip地址,那么kafka代理正在运行。
我需要一个命令,可以在shell脚本中使用它来获取代理列表并检查kafka是否正在运行。
有吗 curl 命令来获取kafka集群的状态,比如elasticsearch?

7uzetpgm

7uzetpgm1#

如果您使用的是新版本的Kafka,例如5.3.3,您可以使用

kafka-broker-api-versions  --bootstrap-server BROKER | grep 9092

你只需要通过一个经纪人

bqf10yzr

bqf10yzr2#

使用confluent的rest代理api v3:

curl -X GET -H "Accept: application/vnd.api+json" localhost:8082/v3/clusters

哪里 localhost:8082 是Kafka的代理地址。

disbfnqx

disbfnqx3#

我是这样做的


# !/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
c86crjj0

c86crjj04#

此命令将为您提供括号中活动代理的列表:

./bin/zookeeper-shell.sh localhost:2181 ls /brokers/ids
wkftcu5l

wkftcu5l5#

下面是我在bash脚本kafka数据加载到演示环境中时使用的几个快速函数。在本例中,我使用的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"

第二个从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"

第三个再次解析zookeeper以检索kafka代理的列表host:port ready 用于命令行客户端:

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"
nbysray5

nbysray56#

在macos上,可以尝试:

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

zkcli ls /brokers/ids
zkcli get /brokers/ids/1
rslzwgfq

rslzwgfq7#

要在shell脚本中使用zookeeper命令,请尝试
zookeeper/bin/zkcli.sh-服务器localhost:2181 <<“ls/brokers/ids”|尾部-n 1。最后一行通常有响应细节

slhcrj9b

slhcrj9b8#

echo dump | nc localhost 2181 | grep brokers

(将localhost替换为运行zookeeper的主机)

zbq4xfa0

zbq4xfa09#

使用zk客户端的替代方法:
如果您不喜欢将参数传递给 ./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'` 

相关问题