Как включить удаленный JMX на брокерах Kafka (для JmxTool)?
Я включил JMX на брокерах Kafka, добавив
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
для получения метрик JMX, он выводит только метки времени Unix. Почему?
./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"
Как я могу распечатать метрики?
Ответы
Ответ 1
Измените bin/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"
Обновить bin/kafka-server-start.sh добавить строку ниже
export JMX_PORT=PORT
Ответ 2
Вы должны установить переменную "JMX_PORT" или добавить следующую строку в bin/kafka-server-start.sh.
export JMX_PORT=${JMX_PORT:-9999}
то вы сможете подключиться к метрикам Kafka JMX. Я использую инструмент jconsole и адрес localhost: 9999.
Ответ 3
Настройка JMX_PORT
внутри bin/kafka-run-class.sh
столкнется с Zookeeper, если вы используете Zookeeper в том же node.
Лучше всего установить JMX
порт отдельно в соответствующих сценариях server-start
:
- Вставить строку
"export JMX_PORT=${JMX_PORT:-9998}"
перед последней строкой в файле $KAFKA_HOME/bin/zookeeper-server-start.sh
.
- Перезапустите сервер Zookeeper.
- Повторите шаги 1 и 2 для всех узлов zookeeper в кластере.
- Вставить строку
"export JMX_PORT=${JMX_PORT:-9999}"
перед последней строкой в файле $KAFKA_HOME/bin/kafka-server-start.sh
.
- Перезапустите брокера Kafka.
- Повторите шаги 4 и 5 для всех брокеров в кластере.
Ответ 4
Если вы работаете через systemd:
- изменить /etc/systemd/system/multi-user.target.wants/kafka.service
- в разделе "[service]" добавьте строку:
- Environment = JMX_PORT = 9989
- перезагрузить:
systemctl daemon-reload
- перезагрузка:
systemctl restart kafka
- наслаждайтесь бобами:
echo 'beans' | java -jar jmxterm-1.0-alpha-4-uber.jar -l localhost:9989 -n 2>&1
Ответ 5
vim kafka_2.11-0.10.1.1/bin/kafka-run-class.sh
а затем добавьте первые две строки и комментарии, как я сделал для других строк (Примечание: после выполнения этого сценария Kafka не могут использоваться для операций клиента для публикации тем. Для ваших операций с клиентом вам нужно использовать отдельные сценарии, загрузите снова в разных местах и используйте)
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
Ответ 6
Используйте kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
Префикс AllTopics
использовался в более старых версиях. Вы можете указать тему, используя kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=<topic-name>
src: http://grokbase.com/t/kafka/users/164ksnhff0/enable-jmx-on-kafka-brokers
Ответ 7
Это Кафка 2.3.0.
Использование jconsole для доступных MBeans
Сначала вы должны использовать jconsole
, чтобы узнать имена доступных MBeans.
Правильное имя MBean, для которого вы хотите запросить метрики, - kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
(префикс AllTopics
использовался в старых версиях). Спасибо AndyTheEntity.
![jconsole]()
Включение удаленного JMX (без аутентификации или SSL)
Как описано в Мониторинге и управлении с использованием технологии JMX, вы должны установить определенные системные свойства при запуске Java VM брокера Kafka.
Сценарий оболочки Kafka bin/kafka-run-class.sh
делает настройку безболезненной, поскольку она делает для вас основы и устанавливает KAFKA_JMX_OPTS
.
# 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 вы должны установить com.sun.management.jmxremote.port
, который устанавливает сценарий оболочки Kafka bin/kafka-run-class.sh
, используя переменную среды JMX_PORT
.
# JMX port to use
if [ $JMX_PORT ]; then
KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
fi
С этим включить удаленный JMX так же просто, как следующую команду:
JMX_PORT=9999 ./bin/kafka-server-start.sh config/server.properties
Использование JmxTool
С учетом вышесказанного запустите JmxTool:
$ ./bin/kafka-run-class.sh kafka.tools.JmxTool \
--object-name 'kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec'
Trying to connect to JMX url: service:jmx:rmi:///jndi/rmi://:9999/jmxrmi.
"time","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:Count","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:EventType","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:FifteenMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:FiveMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:MeanRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:OneMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:RateUnit"
1567586728595,0,messages,0.0,0.0,0.0,0.0,SECONDS
1567586730597,0,messages,0.0,0.0,0.0,0.0,SECONDS
...
Вы можете использовать опцию --one-time
для печати метрик JMX только один раз.
$ ./bin/kafka-run-class.sh kafka.tools.JmxTool \
--object-name 'kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec' \
--one-time true
Trying to connect to JMX url: service:jmx:rmi:///jndi/rmi://:9999/jmxrmi.
"time","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:Count","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:EventType","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:FifteenMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:FiveMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:MeanRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:OneMinuteRate","kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec:RateUnit"
1567586898459,0,messages,0.0,0.0,0.0,0.0,SECONDS