検索

180.4. Camel で JMX を有効にする

download PDF
注記

Camel 2.8 以前に必要な Spring JAR 依存関係

JMX インストルメンテーションを使用できるようにするには、Camel がクラスパスで spring-context.jarspring -aop.jarspring -beans.jar、および spring-core.jar を必要とします。これらの .jar がクラスパスにない場合、Camel は非 JMX モードにフォールバックします。この状況は、ロガー名 org.apache.camel.impl.DefaultCamelContext を使用して WARN レベルで記録されます。

Camel 2.9 以降、JMX モードで Camel を実行するために Spring JAR は 不要 になりました。

180.4.1. JMX を使用して Apache Camel を管理する

デフォルトでは、JMX 計測エージェントは Camel で有効になっています。これは、Camel ランタイムが MBean 管理オブジェクトを作成し、VM の MBeanServer インスタンスに登録することを意味します。これにより、Camel ユーザーは、Camel ルートが個々のプロセッサーレベルでどのように実行されるかについての洞察を即座に得ることができます。

サポートされている管理オブジェクトのタイプは、endpointrouteservice、および processor です。これらの管理オブジェクトの一部は、パフォーマンスカウンター属性に加えて、ライフサイクル操作も公開します。

DefaultManagementNamingStrategy は、MBean 登録に使用されるオブジェクト名を構築するデフォルトの命名ストラテジーです。デフォルトでは、org.apache.camel はCamelNamingStrategy によって作成されたすべてのオブジェクト名のドメイン名です。MBean オブジェクトのドメイン名は、Java VM システムプロパティーで設定できます。

-Dorg.apache.camel.jmx.mbeanObjectDomainName=your.domain.name

または、Spring 設定の camelContext 要素内に jmxAgent 要素を追加することによって:

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <jmxAgent id="agent" mbeanObjectDomainName="your.domain.name"/>
    ...
</camelContext>

Spring 設定は、両方が存在する場合、システムプロパティーよりも常に優先されます。これは、すべての JMX 関連の設定に当てはまります。

180.4.2. Camel で JMX インストルメンテーションエージェントを無効にする

Java VM システムプロパティーを次のように設定することで、JMX インストルメンテーションエージェントを無効にできます。

-Dorg.apache.camel.jmx.disabled=true

プロパティー値は boolean として扱われます。

または、Spring 設定の camelContext 要素内に jmxAgent 要素を追加することによって:

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <jmxAgent id="agent" disabled="true"/>
    ...
</camelContext>

または、Camel 2.1 では、次のように無効にできるため、純粋な Java を使用している場合は少し簡単です (JVM システムプロパティーを使用する必要はありません)。

CamelContext camel = new DefaultCamelContext();
camel.disableJMX();

180.4.3. Java VM での MBeanServer の検索

各 CamelContext は、InstrumentationLifecycleStrategy 内にラップされた InstrumentationAgent のインスタンスを持つことができます。InstrumentationAgent は、Camel MBean を登録/登録解除するために MBeanServer とやり取りするオブジェクトです。複数の CamelContexts/InstrumentationAgent が MBeanServer を共有できる/共有する必要があります。デフォルトでは、Camel ランタイムは、MBeanServerFactory.findMBeanServer メソッド によって返された最初の MBeanServer を選択します。これは、org.apache.camel のデフォルトドメイン名と一致します。

アプリケーションですでに使用している MBeanServer インスタンスに一致するように、デフォルトのドメイン名を変更したい場合があります。特に、MBeanServer が JMX コネクターサーバーに接続されている場合、Camel でコネクターサーバーを作成する必要はありません。

システムプロパティーを使用して、一致するデフォルトドメイン名を設定できます。

-Dorg.apache.camel.jmx.mbeanServerDefaultDomain=<your.domain.name>

または、Spring 設定の camelContext 要素内に jmxAgent 要素を追加することによって:

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <jmxAgent id="agent" mbeanServerDefaultDomain="your.domain.name"/>
    ...
</camelContext>

一致する MBeanServer が見つからない場合は、新しい MBeanServer が作成され、新しい `MBeanServer のデフォルトドメイン名が、上記のデフォルトおよび設定に従って設定されます。

システムプロパティーを設定して JVM MBean を管理することが望ましい場合は、PlatformMBeanServer を使用することもできます。MBeanServer のデフォルトのドメイン名設定は、適用できないため無視されます。

注意

次のリリース (1.5) から、usePlatformMBeanServer のデフォルト値は true に変更されます。プロパティーを false に設定して、プラットフォーム MBeanServer の使用を無効にすることができます。

-Dorg.apache.camel.jmx.usePlatformMBeanServer=True

または、Spring 設定の camelContext 要素内に jmxAgent 要素を追加することによって:

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <jmxAgent id="agent" usePlatformMBeanServer="true"/>
    ...
</camelContext>

180.4.4. Camel JMX サポートのシステムプロパティー

Property Namevalue説明

org.apache.camel.jmx

true または false

true の場合、Camel の jmx 機能が有効になります

以下のこのセクションで、システムプロパティーの詳細を参照してください: jmxAgent プロパティーリファレンス

180.4.5. JMX で認証を使用する方法

JDK の JMX には、認証のための機能と、SSL を介した安全な接続を使用するための機能があります。これを使用する方法については、SUN のドキュメントを参照する必要があります。

180.4.6. アプリケーションサーバー内の JMX

180.4.6.1. Tomcat 6

Tomcat で JMX を有効にする方法の詳細については、このページ を参照してください。

つまり、catalina.sh (Windows では catalina.bat) ファイルを変更して、次のオプションを設定します。

 set CATALINA_OPTS=-Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=1099 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false

180.4.6.2. JBoss AS 4

デフォルトでは、JBoss は独自の MBeanServer を作成します。Camel が同じサーバーに公開できるようにするには、次の手順に従います。

  1. プラットフォーム MBeanServer を使用するように Camel に指示します (Camel 1.5 ではデフォルトで true になります)。
<camel:camelContext id="camelContext">
  <camel:jmxAgent id="jmxAgent" mbeanObjectDomainName="org.yourname" usePlatformMBeanServer="true"  />
</camel:camelContext>
  1. Platform MBeanServer を使用するように JBoss インスタンスを変更します。
    run.sh または run.conf -Djboss.platform.mbeanserver を編集して、次のプロパティーを JAVA_OPTS に追加します。See http://wiki.jboss.org/wiki/JBossMBeansInJConsole

180.4.6.3. WebSphere

mbeanServerDefaultDomainWebSphere に変更します。

<camel:jmxAgent id="agent" createConnector="true" mbeanObjectDomainName="org.yourname" usePlatformMBeanServer="false" mbeanServerDefaultDomain="WebSphere"/>

180.4.6.4. Oracle OC4j

Oracle OC4J J2EE アプリケーションサーバーは、Camel がプラットフォーム MBeanServer にアクセスすることを許可しません。Camel は WARNING をログに記録するため、ログでこれを識別できます。

xxx xx, xxxx xx:xx:xx xx org.apache.camel.management.InstrumentationLifecycleStrategy onContextStart
WARNING: Could not register CamelContext MBean
java.lang.SecurityException: Unauthorized access from application: xx to MBean: java.lang:type=ClassLoading
        at oracle.oc4j.admin.jmx.shared.UserMBeanServer.checkRegisterAccess(UserMBeanServer.java:873)

これを解決するには、Camel で JMX エージェントを無効にする必要があります。Camel で JMX インスツルメンテーションエージェントを無効にする セクションを参照してください。

180.4.7. 高度な JMX 設定

Spring 設定ファイルを使用すると、管理のために Camel を JMX に公開する方法を設定できます。場合によっては、コネクターのポートやパス名などの詳細情報をここで指定できます。

180.4.8. 例:

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <jmxAgent id="agent" createConnector="true" registryPort="2000" mbeanServerDefaultDomain="org.apache.camel.test"/>
    <route>
      <from uri="seda:start"/>
      <to uri="mock:result"/>
    </route>
</camelContext>

Java 5 JMX 設定を変更する場合は、さまざまな JMX システムプロパティー を使用できます。

たとえば、次の環境変数を設定することにより (プラットフォームに応じて set または export を使用)、Sun JMX コネクターへのリモート JMX 接続を有効にすることができます。これらの設定は、Java 1.5+ 内の Sun JMX コネクターのみを設定し、Camel がデフォルトで作成する JMX コネクターは設定しません。

SUNJMX=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1616 \
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

(SUNJMX 環境変数は、JVM の追加の起動パラメーターとして、Camel の起動スクリプトによって単純に使用されます。Camel を直接起動する場合は、これらのパラメーターを自分で渡す必要があります。)

180.4.9. jmxAgent プロパティーリファレンス

Spring プロパティーSystem プロパティーデフォルト値説明

id

  

JMX エージェント名。オプションではありません

usePlatformMBeanServer

org.apache.camel.jmx.usePlatformMBeanServer

falsetrue - リリース 1.5 以降

true の場合、JVM から MBeanServer を使用します

mbeanServerDefaultDomain

org.apache.camel.jmx.mbeanServerDefaultDomain

org.apache.camel

MBeanServer のデフォルトの JMX ドメイン

mbeanObjectDomainName

org.apache.camel.jmx.mbeanObjectDomainName

org.apache.camel

すべてのオブジェクト名が使用する JMX ドメイン

createConnector

org.apache.camel.jmx.createRmiConnect

false

MBeanServer の JMX コネクターを (リモート管理を可能にするために) 作成する必要がある場合

registryPort

org.apache.camel.jmx.rmiConnector.registryPort

1099

JMX RMI レジストリーが使用するポート

connectorPort

org.apache.camel.jmx.rmiConnector.connectorPort

-1 (動的)

JMX RMI サーバーが使用するポート

serviceUrlPath

org.apache.camel.jmx.serviceUrlPath

/jmxrmi/camel

JMX コネクターが登録されるパス

onlyRegisterProcessorWithCustomId

org.apache.camel.jmx.onlyRegisterProcessorWithCustomId

false

Camel 2.0: このオプションを有効にすると、カスタム ID セットを持つプロセッサーのみが登録されます。これにより、JMX コンソールで不要なプロセッサーを除外できます。

statisticsLevel

 

All / Default

Camel 2.1: MBean のパフォーマンス統計情報を有効にするかどうかのレベルを設定します。詳細については、パフォーマンス統計情報の粒度レベルの設定 セクションを参照してください。Camel 2.16 以降では、All オプションの名前が Default に変更され、追加のランタイム JMX メトリックを収集できる新しい Extended オプションが導入されました。

includeHostName

org.apache.camel.jmx.includeHostName

 

Camel 2.13: MBean の命名にホスト名を含めるかどうか。Camel 2.13 以降では、これはデフォルトの false ですが、古いリリースではデフォルトの true です。本当に必要な場合は、このオプションを使用して古い動作を復元できます。

useHostIPAddress

org.apache.camel.jmx.useHostIPAddress

false

Camel 2.16: リモートコネクターの作成時にサービス URL でホスト名または IP アドレスを使用するかどうか。デフォルトでは、ホスト名が使用されます。

loadStatisticsEnabled

org.apache.camel.jmx.loadStatisticsEnabled

false

Camel 2.16: 負荷統計情報を有効にするかどうか (CamelContext ごとにバックグラウンドスレッドを使用して負荷統計情報を収集します)。

endpointRuntimeStatisticsEnabled

org.apache.camel.jmx.endpointRuntimeStatisticsEnabled

true

Camel 2.16: エンドポイントのランタイム統計情報を有効にするかどうか (各入力エンドポイントおよび出力エンドポイントのランタイム使用状況を収集します)。

180.4.10. MBean を常に登録するか、新しいルートに登録するか、デフォルトでのみ登録するかの設定

Camel 2.7 以降で利用可能

Camel は、mbeans を登録するかどうかを制御する 2 つの設定を提供するようになりました

オプションデフォルト説明

registerAlways

false

有効にすると、MBean は常に登録されます。

registerNewRoutes

true

有効にすると、CamelContext が開始された後に新しいルートを追加すると、その特定のルートから MBean も登録されます。

デフォルトでは、Camel は起動時に設定されたすべてのルートに MBean を登録します。registerNewRoutes オプションは、後で新しいルートを追加する場合に MBean も登録する必要があるかどうかを制御します。たとえば、管理が不要な一時的なルートを追加および削除する場合は、これを無効にすることができます。

一意のエンドポイントを持つ受信者リストなどの動的 EIP パターンを使用する場合は、registerAlways オプションを使用するように少し注意してください。その場合、それぞれの固有のエンドポイントとそれに関連付けられたサービス/プロデューサーも登録されます。これは、レジストリー内の mbean の数が増加するため、システムの機能低下につながる可能性があります。MBean は軽量オブジェクトではないため、メモリーを消費します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.