6.2. JMX を使用した AMQ Broker の管理


JMX (Java Management Extensions) を使用してブローカーを管理できます。管理 API は、MBean インターフェイスを使用してブローカーによって公開されます。ブローカーは、リソースをドメイン org.apache.activemq に登録します。

たとえば、exampleQueue という名前のキューを管理するための ObjectName は次のとおりです。

org.apache.activemq.artemis:broker="__BROKER_NAME__",component=addresses,address="exampleQueue",subcomponent=queues,routingtype="anycast",queue="exampleQueue"

MBean は以下のようになります。

org.apache.activemq.artemis.api.management.QueueControl

MBean の ObjectName は、ヘルパークラス org.apache.activemq.artemis.api.core.management.ObjectNameBuilder.を使用して構築されます。jconsole を使用して、管理する MBean の ObjectName を見つけることもできます。

JMX を使用したブローカーの管理は、JMX を使用した Java アプリケーションの管理と同じです。これは、リフレクションまたは MBean のプロキシーを作成して実行できます。

6.2.1. JMX 管理の設定

デフォルトでは、JMX はブローカーの管理に有効になっています。JMX 管理を有効または無効にするには、broker.xml 設定ファイルで jmx-management-enabled プロパティーを設定します。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. <jmx-management-enabled> を設定します。

    <jmx-management-enabled>true</jmx-management-enabled>

    JMX が有効になっている場合、ブローカーは jconsole を使用してローカルで管理できます。

    注記

    セキュリティー上の理由から、JMX へのリモート接続はデフォルトで有効になっていません。

  3. 同じ MBeanServer から複数のブローカーを管理する場合は、各ブローカーに JMX ドメインを設定します。

    デフォルトでは、ブローカーは JMX ドメイン org.apache.activemq.artemis を使用します。

    <jmx-domain>my.org.apache.activemq</jmx-domain>
    注記

    Windows システムで AMQ Broker を使用している場合は、artemis または artemis.cmd でシステムプロパティーを設定する必要があります。シェルスクリプトは <install_dir>/bin の下にあります。

関連情報

  • リモート管理用のブローカーの設定に関する詳細は、Oracle の Java Management Guide を参照してください。

6.2.2. JMX 管理アクセスの設定

デフォルトでは、セキュリティー上の理由から、ブローカへのリモート JMX アクセスは無効になっています。ただし、AMQ Broker には、JMX MBean へのリモートアクセスを許可する JMX エージェントがあります。ブローカー management.xml 設定ファイルに connector 要素を設定して JMX アクセスを有効にします。

注記

com.sun.management.jmxremoteJVM システムプロパティーを使用して JMX アクセスを有効にすることもできますが、その方法はサポートされておらず、安全ではありません。その JVM システムプロパティーを変更すると、ブローカーで RBAC をバイパスできます。セキュリティーリスクを最小限に抑えるために、localhost へのアクセスを制限することを検討してください。

重要

リモート管理のためにブローカーの JMX エージェントを公開すると、セキュリティーに影響があります。

この手順で説明されているように設定を保護するには、次のようにします。

  • すべての接続に SSL を使用します。
  • コネクターホスト、つまり、エージェントを公開するホストとポートを明示的に定義します。
  • RMI (Remote Method Invocation) レジストリーがバインドするポートを明示的に定義します。

前提条件

  • 作業中のブローカーインスタンス
  • Java の jconsole ユーティリティー

手順

  1. <broker-instance-dir>/etc/management.xml 設定ファイルを開きます。
  2. JMX エージェントのコネクターを定義します。connector-port 設定は、jconsole などのクライアントが JMX コネクターサーバーに対してクエリーを実行する RMI レジストリーを確立します。たとえば、ポート 1099 でのリモートアクセスを許可するには、次のようにします。

    <connector connector-port="1099"/>
  3. jconsole を使用して、JMX エージェントへの接続を確認します。

    service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
  4. 以下で説明するように、コネクターに追加のプロパティーを定義します。

    connector-host
    エージェントを公開するブローカーサーバーホスト。リモートアクセスを防ぐには、connector-host127.0.0.1 (localhost) に設定します。
    rmi-registry-port
    JMX RMI コネクターサーバーがバインドするポート。設定されていない場合、ポートは常にランダムです。このプロパティーを設定して、ファイアウォールを通過するリモート JMX 接続の問題を回避します。
    jmx-realm
    認証に使用する JMX レルム。デフォルト値は、JAAS 設定に一致する activemq です。
    object-name
    リモートコネクターを公開するオブジェクト名。デフォルト値は connector:name=rmi です。
    安全な
    コネクターが SSL を使用して保護されているかどうかを指定します。デフォルト値は false です。通信をセキュアにするには、値を true に設定します。
    key-store-path
    キーストアの場所。secured="true" を設定している場合は必須です。
    key-store-password
    キーストアパスワードsecured="true" を設定している場合は必須です。このパスワードは暗号化できます。
    key-store-provider
    キーストアプロバイダー。secured="true" を設定している場合は必須です。デフォルト値は JKS です。
    trust-store-path
    トラストストアの場所。secured="true" を設定している場合は必須です。
    trust-store-password
    トラストストアのパスワードsecured="true" を設定している場合は必須です。このパスワードは暗号化できます。
    trust-store-provider
    トラストストアプロバイダー。secured="true" を設定している場合は必須です。デフォルト値は JKS です。
    password-codec
    使用するパスワードコーデックの完全修飾クラス名。この仕組みの詳細については、以下にリンクされているパスワードマスキングのドキュメントを参照してください。
  5. Java Platform ドキュメント に記載されているように、jdk.serialFilter を使用してエンドポイントシリアライゼーションに適切な値を設定します。

関連情報

6.2.3. MBeanServer の設定

ブローカーがスタンドアロンモードで動作しているときは、Java 仮想マシンの Platform MBeanServer を使用して MBeans を登録します。デフォルトでは、Jolokia もデプロイされ、REST を使用した MBean サーバーへのアクセスを許可します。

6.2.4. Jolokia で JMX を公開する方法

デフォルトでは、AMQ Broker には Web アプリケーションとしてデプロイされた Jolokia HTTP エージェントが同梱されます。Jolokia は、MBean を公開する HTTP ブリッジ上のリモート JMX です。

注記

Jolokia を使用するには、ユーザーは <broker_instance_dir>/etc/artemis.profile 設定ファイルの hawtio.role システムプロパティーによって定義されたロールに属している必要があります。デフォルトでは、このロールは amq です。

例6.1 Jolokia を使用したブローカーのバージョンのクエリー

この例では、Jolokia REST URL を使用してブローカーのバージョンを検索します。Origin フラグは、ブローカーサーバーのドメイン名または DNS ホスト名を指定する必要があります。さらに、Origin に指定する値は、Jolokia Cross-Origin Resource Sharing (CORS) 仕様の <allow-origin> のエントリーに対応している必要があります。

$ curl http://admin:admin@localhost:8161/console/jolokia/read/org.apache.activemq.artemis:broker=\"0.0.0.0\"/Version -H "Origin: mydomain.com"
{"request":{"mbean":"org.apache.activemq.artemis:broker=\"0.0.0.0\"","attribute":"Version","type":"read"},"value":"2.4.0.amq-710002-redhat-1","timestamp":1527105236,"status":200}

関連情報

  • JMX-HTTP ブリッジの使用に関する詳細は、Jolokia のドキュメント を参照してください。
  • ユーザーをロールに割り当てる方法は、ユーザーの追加 を参照してください。
  • CORS(Jolokia Cross-Origin Resource Sharing) の指定に関する詳細は、セキュリティー のセクション 4.1.5 を参照してください。

6.2.5. JMX 管理通知のサブスクライブ

お使いの環境で JMX が有効になっている場合は、管理通知にサブスクライブできます。

手順

  • ObjectName org.apache.activemq.artemis:broker="<broker-name>" にサブスクライブします。

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.