我正在编写一个shell脚本来监控kafka经纪人.我已经浏览了一些链接,发现如果ZooKeeper包含一个代理列表,并且如果在此列表中存在IP地址,那么kafka代理正在运行.
我想要一个可以在我的shell脚本中使用的命令来获取代理列表并检查kafka是否正在运行.
是否有任何curl命令可以获得像elasticsearch一样的kafka集群状态?
jim*_*azz 82
此命令将为您提供括号中活动代理的列表:
./bin/zookeeper-shell.sh localhost:2181 ls /brokers/ids
Run Code Online (Sandbox Code Playgroud)
Pan*_*chu 49
使用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]
Run Code Online (Sandbox Code Playgroud)
$ 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'
Ayd*_* K. 21
echo dump | nc localhost 2181 | grep brokers
Run Code Online (Sandbox Code Playgroud)
这是将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"
Run Code Online (Sandbox Code Playgroud)
第二个从ZooKeeper检索Broker 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"
Run Code Online (Sandbox Code Playgroud)
第三个解析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"
Run Code Online (Sandbox Code Playgroud)
如果您使用的是新版本的 Kafka 例如 5.3.3,则可以使用
kafka-broker-api-versions --bootstrap-server BROKER | grep 9092
Run Code Online (Sandbox Code Playgroud)
您只需要通过其中一位经纪人
| 归档时间: |
|
| 查看次数: |
89780 次 |
| 最近记录: |