JMX を使用した Kafka のモニタリングとメトリクス

Java Management Extensions(JMX)を使用して Confluent Platform のデプロイをモニタリングできます。

環境の構成

JMX で Docker コンテナーを使用するには、以下のプロパティを設定します。

java.rmi.server.hostname=<JMX_HOSTNAME>
com.sun.management.jmxremote.local.only=false
com.sun.management.jmxremote.rmi.port=<JMX_PORT>
com.sun.management.jmxremote.port=<JMX_PORT>
hostname に関する注意:

JMX クライアントは java.rmi.server.hostname に接続できる必要があります。ブリッジされたネットワークのデフォルトはブリッジされた IP であるため、別の Docker コンテナーからのみ接続できます。ホストネットワークの場合、これはホストのホスト名が解決される IP です。

Docker コンテナーではホスト名は hostname -i に設定されます。コンテナーに複数のネットワークが構成されている場合、hostname -i によってすべての IP アドレスが表示されます。デフォルトでは、最初の IP アドレス(またはネットワーク)が選択されます。

セキュリティの構成

JMX でセキュリティを設定するには、『Monitoring and Management Using JMX Technology』の SSL および認証についてのセクションに従ってください。

Kafka および ZooKeeper の構成

設定

Kafka および ZooKeeper の JMX モニタリングを構成するには、以下の環境変数を使用します。

KAFKA_JMX_PORT
JMX ポート。
KAFKA_JMX_OPTS

JMX オプション。この変数を使用して、デフォルトの JMX オプションをオーバーライドします。デフォルトのオプションは以下のように設定されています。

-Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false
KAFKA_JMX_HOSTNAME
ローカルに作成されたリモートオブジェクトに関連付けられたホスト名。

JMX を有効にした Kafka および ZooKeeper の起動

JMX を有効にして Kafka および ZooKeeper を起動する手順は、「Confluent Platform のクイックスタート(Docker)」での手順と同じですが、KAFKA_JMX_PORTKAFKA_JMX_HOSTNAME を両方に設定する点が異なります。各サービスに対する Docker run コマンドの例を以下に示します。

docker run -d \
  --name=zk-jmx \
  --net=host \
  -e ZOOKEEPER_TICK_TIME=2000 \
  -e ZOOKEEPER_CLIENT_PORT=32181 \
  -e KAFKA_JMX_PORT=39999 \
  confluentinc/cp-zookeeper:6.2.4

docker run -d \
  --name=kafka-jmx \
  --net=host \
  -e KAFKA_BROKER_ID=1 \
  -e KAFKA_ZOOKEEPER_CONNECT=localhost:32181/jmx \
  -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:39092 \
  -e KAFKA_JMX_PORT=49999 \
  -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
  confluentinc/cp-kafka:6.2.4

その他の Confluent Platform コンポーネントの構成

Kafka では、JMX の認証がデフォルトでは無効になっています。デフォルトの JMX 構成では、認証されていない JMX インターフェイスがすべてのネットワークインターフェイスにバインドされます。このデフォルトをオーバーライドするには、環境変数を使用する必要があります。

Confluent Platform コンポーネントのデフォルトの JMX オプションをオーバーライドするには、以下の環境変数を使用します。

コンポーネント 環境変数
Confluent Control Center CONTROL_CENTER_JMX_OPTS
REST Proxy KAFKAREST_JMX_OPTS
ksqlDB KSQL_JMX_OPTS
Rebalancer REBALANCER_JMX_OPTS
Schema Registry SCHEMA_REGISTRY_JMX_OPTS