JMX インテグレーションの作成

このガイドでは、Developer Toolkit を使用して JMX インテグレーションを作成する方法を説明します。

セットアップ

JMX インテグレーションの足場を作る

ddev create --type jmx MyJMXIntegration 

JMX インテグレーションには、特定の init および instance コンフィギュレーションが含まれています。

init_config:     is_jmx: true                   # インテグレーションタイプが JMX であることを識別します。     collect_default_metrics: true  # `metrics.yaml` で宣言されたメトリクスを収集します。  instances:   - host: <HOST>                   # JMX ホスト名     port: <PORT>                   # JMX ポート     ... 

その他の init および instance のコンフィギュレーションについては、JMX インテグレーションのドキュメントを参照してください。

収集するメトリクスを定義する

JMX から収集したいメトリクスを選択します。利用可能なメトリクスについては、監視するサービスのドキュメントを参照してください。

また、VisualVMJConsolejmxterm などのツールを使って、利用できる JMX ビーンとその説明文を調べることができます。

メトリクスフィルターを定義する

metrics.yaml を編集し、メトリクスを収集するためのフィルターを定義します。

メトリクスフィルターのフォーマットについては、JMX インテグレーションを参照してください。

JMXFetch のテストケースは、メトリクスフィルターがどのように機能するかの例を示しています。

metrics.yaml の例:

jmx_metrics:   - include:       domain: org.apache.activemq       destinationType: Queue       attribute:         AverageEnqueueTime:           alias: activemq.queue.avg_enqueue_time           metric_type: gauge         ConsumerCount:           alias: activemq.queue.consumer_count           metric_type: gauge 

テスト

ddev を使用し、 tests/conftest.pydd_environment を指定すると、JMX サービスに対するテストを行うことができます。

例:

@pytest.fixture(scope="session") def dd_environment():     compose_file = os.path.join(HERE, 'compose', 'docker-compose.yaml')     with docker_run(         compose_file,         conditions=[             # Kafka Broker             CheckDockerLogs('broker', 'Monitored service is now ready'),         ],     ):         yield CHECK_CONFIG, {'use_jmx': True} 

e2e テスト例:

 @pytest.mark.e2e def test(dd_agent_check):     instance = {}     aggregator = dd_agent_check(instance)      for metric in ACTIVEMQ_E2E_METRICS + JVM_E2E_METRICS:         aggregator.assert_metric(metric)      aggregator.assert_all_metrics_covered()     aggregator.assert_metrics_using_metadata(get_metadata_metrics(), exclude=JVM_E2E_METRICS) 

実例:

JMX ツール

JMXTerm を使用した JMX Bean のリストアップ

curl -L https://github.com/jiaqi/jmxterm/releases/download/v1.0.1/jmxterm-1.0.1-uber.jar -o /tmp/jmxterm-1.0.1-uber.jar java -jar /tmp/jmxterm-1.0.1-uber.jar -l localhost:<JMX_PORT> domains beans 

結果出力例:

$ curl -L https://github.com/jiaqi/jmxterm/releases/download/v1.0.1/jmxterm-1.0.1-uber.jar -o /tmp/jmxterm-1.0.1-uber.jar $ java -jar /tmp/jmxterm-1.0.1-uber.jar -l localhost:1616 Welcome to JMX terminal. Type "help" for available commands. $>domains #following domains are available JMImplementation com.sun.management io.fabric8.insight java.lang java.nio java.util.logging jmx4perl jolokia org.apache.activemq $>beans #ドメイン = JMImplementation: JMImplementation:type=MBeanServerDelegate #ドメイン = com.sun.management: com.sun.management:type=DiagnosticCommand com.sun.management:type=HotSpotDiagnostic #ドメイン = io.fabric8.insight: io.fabric8.insight:type=LogQuery #ドメイン = java.lang: java.lang:name=Code Cache,type=MemoryPool java.lang:name=CodeCacheManager,type=MemoryManager java.lang:name=Compressed Class Space,type=MemoryPool java.lang:name=Metaspace Manager,type=MemoryManager java.lang:name=Metaspace,type=MemoryPool java.lang:name=PS Eden Space,type=MemoryPool java.lang:name=PS MarkSweep,type=GarbageCollector java.lang:name=PS Old Gen,type=MemoryPool java.lang:name=PS Scavenge,type=GarbageCollector java.lang:name=PS Survivor Space,type=MemoryPool java.lang:type=ClassLoading java.lang:type=Compilation java.lang:type=Memory java.lang:type=OperatingSystem java.lang:type=Runtime java.lang:type=Threading [...] 

JMXTerm と追加 jar を使用した JMX Bean のリストアップ

以下の例では、追加 jar は jboss-client.jar です。

curl -L https://github.com/jiaqi/jmxterm/releases/download/v1.0.1/jmxterm-1.0.1-uber.jar -o /tmp/jmxterm-1.0.1-uber.jar java -cp <PATH_WILDFLY>/wildfly-17.0.1.Final/bin/client/jboss-client.jar:/tmp/jmxterm-1.0.1-uber.jar org.cyclopsgroup.jmxterm.boot.CliMain --url service:jmx:remote+http://localhost:9990 -u datadog -p pa$$word domains beans