J'ai activé JMX sur les courtiers Kafka en ajoutant
`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`“.
Cependant, lorsque j’utilise «kafka.tools.JmxTool» pour obtenir les métriques, il génère des horodatages Unix qui ne correspondent pas au comportement attendu.
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
La commande ci-dessus imprime des horodatages Unix. Comment puis-je résoudre ce problème et le faire imprimer les métriques?
Éditez bin/kafka-run-class.sh et définissez la variable KAFKA_JMX_OPTS
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"
Mettre à jour bin/kafka-server-start.sh ajouter la ligne ci-dessous
export JMX_PORT=PORT
Vous devez définir la variable 'JMX_PORT' ou ajouter la ligne suivante à bin/kafka-server-start.sh.
export JMX_PORT=${JMX_PORT:-9999}
vous pourrez alors vous connecter aux métriques Kafka JMX. J'utilise jconsole tool et l'adresse 'localhost: 9999'.
vim kafka_2.11-0.10.1.1/bin/kafka-run-class.sh
puis ajoutez les deux premières lignes et le commentaire comme je l'ai fait pour les autres lignes (Remarque: après cela, les scripts Kafka ne peuvent plus être utilisés pour les opérations client. dans différents endroits et utilisation)
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
La définition de JMX_PORT
dans bin/kafka-run-class.sh
entrera en conflit avec Zookeeper si vous exécutez Zookeeper sur le même nœud . Le mieux est de définir le port JMX
individuellement dans les scripts server-start
correspondants:
“export JMX_PORT=${JMX_PORT:-9998}”
avant la dernière ligne du fichier $KAFKA_HOME/bin/zookeeper-server-start.sh
.“export JMX_PORT=${JMX_PORT:-9999}”
avant la dernière ligne du fichier $KAFKA_HOME/bin/kafka-server-start.sh
.Si vous utilisez via systemd:
systemctl daemon-reload
systemctl restart kafka
echo 'beans' | Java -jar jmxterm-1.0-alpha-4-uber.jar -l localhost:9989 -n 2>&1
Utilisez kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
Le préfixe AllTopics
a été utilisé dans les versions antérieures. Vous pouvez spécifier un sujet en utilisant kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=<topic-name>
src: http://grokbase.com/t/kafka/users/164ksnhff0/enable-jmx-on-kafka-brokers