web-dev-qa-db-ja.com

Kafka=ブローカー(JmxToolの場合)でリモートJMXを有効にする方法は?

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"

メトリックを印刷するにはどうすればよいですか?

21
sui

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
18
chandramohan

「JMX_PORT」変数を設定するか、次の行をbin/kafka-server-start.shに追加する必要があります。

export JMX_PORT=${JMX_PORT:-9999}

その後、Kafka JMXメトリックに接続できます。jconsoleツールと「localhost:9999」アドレスを使用します。

7
MeetJoeBlack

同じノードでZookeeperを実行している場合、JMX_PORT内でbin/kafka-run-class.shを設定すると、Zookeeperと競合します。最適なのは、対応するserver-startスクリプト内でJMXポートを個別に設定することです。

  1. “export JMX_PORT=${JMX_PORT:-9998}”ファイルの最後の行の前に$KAFKA_HOME/bin/zookeeper-server-start.sh行を挿入します。
  2. Zookeeperサーバーを再起動します。
  3. クラスター内のすべてのzookeeperノードについて、手順1と2を繰り返します。
  4. “export JMX_PORT=${JMX_PORT:-9999}”ファイルの最後の行の前に$KAFKA_HOME/bin/kafka-server-start.sh行を挿入します。
  5. Kafka=ブローカーを再起動します。
  6. クラスター内のすべてのブローカーに対して手順4と5を繰り返します。
4
Rahul Singhai

Systemd経由で実行している場合:

  1. 編集/ etc/systemd/system/multi-user.target.wants/kafka.service
  2. 「[service]」セクションに次の行を追加します。
    • 環境= JMX_PORT = 9989
  3. リロード:systemctl daemon-reload
  4. 再起動: systemctl restart kafka
  5. 豆をお楽しみください:echo 'beans' | Java -jar jmxterm-1.0-alpha-4-uber.jar -l localhost:9989 -n 2>&1
3
ethrbunny
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
2
supermonk

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

1
AndyTheEntity

これはKafka 2.3.0です。

利用可能なMBeanにjconsoleを使用

最初にjconsoleを使用して、利用可能なMBeanの名前を知る必要があります。

メトリックを照会したい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
0
Jacek Laskowski