Kafkaブローカーを追加して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
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"
メトリックを印刷するにはどうすればよいですか?
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
「JMX_PORT」変数を設定するか、次の行をbin/kafka-server-start.shに追加する必要があります。
export JMX_PORT=${JMX_PORT:-9999}
その後、Kafka JMXメトリックに接続できます。jconsoleツールと「localhost:9999」アドレスを使用します。
同じノードでZookeeperを実行している場合、JMX_PORT
内でbin/kafka-run-class.sh
を設定すると、Zookeeperと競合します。最適なのは、対応するserver-start
スクリプト内でJMX
ポートを個別に設定することです。
“export JMX_PORT=${JMX_PORT:-9998}”
ファイルの最後の行の前に$KAFKA_HOME/bin/zookeeper-server-start.sh
行を挿入します。“export JMX_PORT=${JMX_PORT:-9999}”
ファイルの最後の行の前に$KAFKA_HOME/bin/kafka-server-start.sh
行を挿入します。Systemd経由で実行している場合:
systemctl daemon-reload
systemctl restart kafka
echo 'beans' | Java -jar jmxterm-1.0-alpha-4-uber.jar -l localhost:9989 -n 2>&1
vim kafka_2.11-0.10.1.1/bin/kafka-run-class.sh
そして、最初の2行を追加し、他の行に対して行ったようにコメントします(注:この後、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
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
これはKafka 2.3.0です。
最初にjconsole
を使用して、利用可能なMBeanの名前を知る必要があります。
メトリックを照会したいMBeanの適切な名前はkafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
です(古いバージョンではAllTopics
プレフィックスが使用されていました)。ありがとう AndyTheEntity 。
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を実行します。
$ ./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