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.jmxremote ` JVM システムプロパティーを使用して 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
    使用するパスワードコーデックの完全修飾クラス名。この仕組みの詳細は、以下にリンクされているパスワードマスキングのドキュメントを参照してください。
    注記

    RMI レジストリーは、バインドする IP アドレスを選択します。システムに複数の IP アドレス/NIC が存在する場合は、artemis.profile ファイルに -Djava.rmi.server.hostname=localhost を追加して、使用する IP アドレスを選択できます。

  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 のドキュメント を参照してください。
  • ユーザーをロールに割り当てる方法は、ユーザーの追加 を参照してください。
  • Jolokia Cross-Origin Resource Sharing (CORS) の指定の詳細は、セキュリティー のセクション 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.