tutorial kafka applications apache-kafka

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