2016-04-19 12 views
9

ich JMX auf Kafka Broker aktiviert durch Zugabe vonaktivieren JMX auf 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`“. 

Allerdings, wenn ich ‚kafka.tools.JmxTool‘ verwenden, um die Metriken zu bekommen, gibt es Unix Zeitstempel, die nicht die zu erwarten sind Verhalten.

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 

Der obige Befehl gibt Unix-Zeitstempel aus. Wie kann ich das beheben und die Metriken ausdrucken lassen?

Antwort

3

Sie müssen 'JMX_PORT' Variable gesetzt, oder fügen Sie die folgende Zeile bin/kafka-server-start.sh.

export JMX_PORT=${JMX_PORT:-9999} 

dann können Sie eine Verbindung zu Kafka JMX Metriken herstellen. Ich benutze jconsole tool und 'localhost: 9999' Adresse.

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

und dann die ersten beiden Zeilen hinzufügen und kommentieren, wie ich für andere Linien getan habe, (Hinweis: Nach Ausführung dieses Kafka Skripte tun kann nicht für Client-Operationen verwendet werden, um Themen Auflistung .. für Ihre Client-Operationen müssen Sie verwenden Sie eine separate Skripte, laden Sie wieder an verschiedenen Orten und zu verwenden)

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

Richtige Idee, falsche Implementierung. Sie haben Recht, dass Sie möglicherweise andere JMX-JVM-Argumente festlegen müssen. Sie sollten diese Variablen jedoch vor dem Aufruf des Skripts festlegen und das Skript nicht selbst ändern. Du machst dich auf einen Maintenance-Kopfschmerz gefasst. – Tim

4

bearbeiten bin/kafka-run-class.sh und setzen KAFKA_JMX_OPTS Variable

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" 

Update-bin/ka fka-server-start.sh fügen Sie die unterhalb der Linie

export JMX_PORT=PORT 
0

Einstellung JMX_PORT innen bin/kafka-run-class.sh mit Zookeeper kollidieren, wenn Sie Zookeeper auf demselben Knoten ausgeführt werden. Beste ist JMX Port individuell einstellen server-start Skripte innerhalb entsprechen:

  1. Zeile einfügen “export JMX_PORT=${JMX_PORT:-9998}” vor der letzten Zeile in $KAFKA_HOME/bin/zookeeper-server-start.sh Datei.
  2. Starten Sie den Zookeeper-Server neu.
  3. Wiederholen Sie die Schritte 1 und 2 für alle Zookeeper-Knoten im Cluster.
  4. Die Zeile “export JMX_PORT=${JMX_PORT:-9999}” vor der letzten Zeile in die Datei $KAFKA_HOME/bin/kafka-server-start.sh einfügen.
  5. Starten Sie den Kafka Broker neu.
  6. Wiederholen Sie die Schritte 4 und 5 für alle Broker im Cluster.