2016-04-19 35 views
9

ho attivato JMX il broker Kafka con l'aggiunta diAbilita JMX su Kafka Brokers

`KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true 
    -Dcom.sun.management.jmxremote.authenticate=false 
    -Dcom.sun.management.jmxremote.ssl=false 
    -Djava.rmi.server.hostname=<server_IP> 
    -Djava.net.preferIPv4Stack=true`“. 

Tuttavia, quando uso 'kafka.tools.JmxTool' per ottenere le metriche, emette Unix timestamp che non sono l'atteso comportamento.

sh /usr/local/kafka/bin/kafka-run-class.sh kafka.tools.JmxTool -- object-name 'kafka.server:type=BrokerTopicMetrics,name=AllTopicsMessagesInPerSec' --jmx-url service:jmx:rmi:///jndi/rmi://<server_IP>:9111/jmxrmi 

Il comando stampa precede rispecchia Unix timestamp. Come posso risolvere questo problema e stampare le metriche?

risposta

3

È necessario impostare la variabile 'JMX_PORT', oppure aggiungere la seguente riga a bin/kafka-server-start.sh.

export JMX_PORT=${JMX_PORT:-9999} 

quindi sarà possibile connettersi alle metriche Kafka JMX. Uso lo strumento jconsole e l'indirizzo "localhost: 9999".

1
vim kafka_2.11-0.10.1.1/bin/kafka-run-class.sh 

e quindi aggiungere le prime due righe e commentare come ho fatto per le altre linee, (Nota: dopo aver fatto questo script Kafka non può essere utilizzato per le operazioni client per la messa in vendita di argomenti .. per le operazioni del client è necessario utilizzare uno script separati, scaricare di nuovo in luoghi diversi e l'uso)

export JMX_PORT=9096 
KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<ipaddress> -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT" 



# JMX settings 
#if [ -z "$KAFKA_JMX_OPTS" ]; then 
# KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false " 

#fi 

# JMX port to use 
#if [ $JMX_PORT ]; then 
# KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT " 
#fi 
+4

Giusta idea, implementazione errata. Hai ragione che potrebbe essere necessario impostare altri argomenti JM JMX, ma è necessario impostare tali variabili prima di richiamare lo script, non modificare lo script stesso. Ti stai preparando per un mal di testa di manutenzione. – Tim

4

Modifica bin/kafka-run-class.sh e impostare KAFKA_JMX_OPTS variabile

KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=your.kafka.broker.hostname -Djava.net.preferIPv4Stack=true" 

Aggiornamento bin/ka fka-server-start.sh aggiungere la riga in basso

export JMX_PORT=PORT 
0

Impostazione JMX_PORT all'interno bin/kafka-run-class.sh si scontreranno con Zookeeper, se si esegue Zookeeper sullo stesso nodo. migliore è quello di impostare JMX porta individualmente all'interno corrispondente server-start script:

  1. Inserisci linea “export JMX_PORT=${JMX_PORT:-9998}” prima dell'ultima riga in $KAFKA_HOME/bin/zookeeper-server-start.sh file.
  2. Riavvia il server Zookeeper.
  3. Ripetere i passaggi 1 e 2 per tutti i nodi dello zookeeper nel cluster.
  4. Inserire la riga “export JMX_PORT=${JMX_PORT:-9999}” prima dell'ultima riga nel file $KAFKA_HOME/bin/kafka-server-start.sh.
  5. Riavvia il broker Kafka.
  6. Ripetere i passaggi 4 e 5 per tutti i broker nel cluster.