apache kafka - applications - Comando para obtener la lista de brokers kafka del zookeeper
apache kafka windows (6)
Estoy escribiendo un script de shell para monitorear a los corredores kafka. He revisado algunos enlaces y descubrí que si ZooKeeper contiene una lista de corredores, y si, en esta lista, la dirección IP está presente, entonces se está ejecutando un corredor kafka.
Quiero un comando que pueda usar en mi script de shell para obtener la lista de agentes y comprobar si Kafka se está ejecutando.
¿Hay algún comando curl
para obtener el estado del cluster kafka como elasticsearch?
Aquí hay un par de funciones rápidas que uso cuando bash ejecuta scripts de carga de datos Kafka en entornos de demostración. En este ejemplo, uso HDP sin seguridad, pero se puede modificar fácilmente a otros entornos y se pretende que sea rápido y funcional, en lugar de particularmente robusto.
El primero recupera la dirección del primer nodo de ZooKeeper desde la configuración:
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"
El segundo recupera las ID de Broker de ZooKeeper:
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"
El tercero vuelve a analizar ZooKeeper para recuperar la lista de Kafka Brokers Host: puerto listo para su uso en el cliente de línea de comandos:
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"
Este comando le dará la lista de los corredores activos entre paréntesis:
./zookeeper-shell.sh localhost:2181 <<< "ls /brokers/ids"
Lo hice asi
#!/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
Para usar comandos de zookeeper con shell script intente
zookeeper / bin / zkCli.sh -server localhost: 2181 <<< "ls / brokers / ids" | cola -n 1. La última línea por lo general tiene los detalles de respuesta
Forma alternativa utilizando Zk-Client:
Si no prefiere pasar los argumentos a ./zookeeper-shell.sh
y desea ver los detalles del agente de la CLI de Zookeeper, debe instalar el Zookeeper independiente (como Kafka tradicional no aparece con Jline JAR).
Una vez que instale (descomprima) el Zookeeper independiente, entonces:
Ejecutar el CLI Zookeeper:
$ zookeeper/bin/zkCli.sh -server localhost:2181
#Make sure your Broker is already running
Si tiene éxito, puede ver el cliente Zk ejecutándose como:
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
- Desde aquí puede explorar los detalles del agente usando varios comandos:
$ 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''
echo dump | nc localhost 2181 | grep brokers