2016-04-19 3 views
9

Я включил JMX на Кафки брокеров, добавивВключить JMX на Кафки ПОВ

`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`“. 

Однако, когда я использую «kafka.tools.JmxTool», чтобы получить метрики, она выводит метки времени Unix, которые не ожидается поведение.

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 

Вышеупомянутая команда печатает отметки времени Unix. Как я могу исправить это и распечатать метрики?

ответ

3

Вы должны установить переменную 'JMX_PORT', или добавить следующую строку в бен/kafka-server-start.sh.

export JMX_PORT=${JMX_PORT:-9999} 

, то вы сможете подключиться к метрикам Kafka JMX. Я использую инструмент jconsole и адрес localhost: 9999.

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

, а затем добавить первые две строки и комментарии, как я сделал для других линий (Примечание: после выполнения этой скрипты Кафку не могут быть использованы для операций клиента для включения темы .. для клиентских операций, которые необходимо используйте отдельные сценарии, загружать снова в разных местах и ​​использование)

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

Правильная идея, неправильная реализация. Вы правы, что вам может потребоваться установить другие JMM JVM args, но вы должны установить эти переменные перед вызовом скрипта, не изменяйте сам скрипт. Вы настраиваете себя на головную боль обслуживания. – Tim

4

Edit бен/kafka-run-class.sh и установить 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" 

Update бен/ка fka-server-start.sh добавить строку ниже

export JMX_PORT=PORT 
0

Установка JMX_PORT внутри bin/kafka-run-class.sh будет конфликтовать с Zookeeper, если вы работаете Zookeeper на одном узле. Лучше всего установить JMX порт индивидуально в соответствующих server-start сценариев:

  1. Вставка строки “export JMX_PORT=${JMX_PORT:-9998}” Перед последней строки в файле $KAFKA_HOME/bin/zookeeper-server-start.sh.
  2. Перезапустите сервер Zookeeper.
  3. Повторите шаги 1 и 2 для всех узлов zookeeper в кластере.
  4. Вставить строку “export JMX_PORT=${JMX_PORT:-9999}” перед последней строкой в ​​файле $KAFKA_HOME/bin/kafka-server-start.sh.
  5. Перезапустить брокера Kafka.
  6. Повторите шаги 4 и 5 для всех брокеров в кластере.