JMX サービス

Runtime Manager エージェント JMX サービスを使用すると、特定の JMX メトリクスを追跡し、それらを外部サービスにパブリッシュできます。サービスを設定して、特定の bean を追跡したり、値をパブリッシュする頻度を変更したりできます。

Runtime Manager エージェントでは、Mule 3.x のみで ​mule.agent.jmx.publisher.service​ を使用した JMX bean の監視をサポートしています。 Mule 4.x では、bean が JMX に公開されません。

JMX パブリッシャー

JMX サービスは、収集したすべてのメトリクスをパブリッシャーに送信し、パブリッシャーはメトリクスを外部監視ツールにパブリッシュします。サービス自体に、一般的に使用されるツール用のパブリッシャー例がいくつか用意されています。さらに、ニーズに合わせて独自のパブリッシャーを作成できます。

JMX サービスの設定

操作: 設定の取得

JMX サービス設定を取得します。

要求:

GET <Runtime Manager Agent URL>/mule/agent/mule.agent.jmx.publisher.service HTTP/1.1

例:

GET http://localhost:9999/mule/agent/mule.agent.jmx.publisher.service HTTP/1.1

応答:

応答には、現在読み込まれているパブリッシャーのリストに加え、サービスの設定可能な項目とその値が含まれています (サービスの設定についての詳細は、「管理サービス」を参照してください)。

操作: 設定の変更

次の操作は、サービスの現在の設定を変更します。

要求:

PATCH <Runtime Manager Agent URL>/mule/agent/mule.agent.jmx.publisher.service HTTP/1.1

{
  "<parameter>": "<value>",
}
json

例:

PATCH http://localhost:9999/mule/agent/myservice HTTP/1.1

{
  "frequencyTimeUnit": "SECONDS",
  "frequency": "150"
}
json

応答 (成功した場合):

HTTP 200

新しい JMX パブリッシャーの追加

新しい JMX パブリッシャーを追加するには、Runtime Manager エージェントの ​InternalMessageHandler​ インターフェースを実装します。

カスタム JMX パブリッシャーは、次の要件を満たす必要があります。

  • スレッドセーフである。

  • InternalMessageHandler​ で定義されたハンドラーメソッドのすべてのパブリッシュロジックを実装している。

JMX パブリッシャーの記述

@Named("my.company.jmx.publisher")
@Singleton
public class MyJMXPublisher<T> extends InternalMessageHandler<List<Metric>>{

    boolean handle(List<Metric> metrics){
          // TODO handle message
    }

    @Override
    public void enable(boolean state) throws AgentEnableOperationException {
        // TODO: enable the Handler
    }

    @Override
    public boolean isEnabled() {
        // TODO: return Handler status
    }
}
java

メトリクスクラスは次の項目を含む POJO です。

/**
 * Time stamp when the metric was taken
 */
long timestamp;

/**
 * Name of the metric. In the case of a JXM metric it is the bean that was tracked + message
 */
String name;

/**
 * The numeric value of the metric
 */
Number value;
java

新しい JMX パブリッシャーを追加するには、クラスを含む JAR を Runtime Manager エージェントプラグイン内の ​lib​ フォルダーに置きます。