このガイドでは、Developer Toolkit を使用して 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 ポート
...
Copy
その他の init
および instance
のコンフィギュレーションについては、JMX インテグレーションのドキュメント を参照してください。
JMX から収集したいメトリクスを選択します。利用可能なメトリクスについては、監視するサービスのドキュメントを参照してください。
また、VisualVM 、JConsole 、jmxterm などのツールを使って、利用できる 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
Copy
ddev
を使用し、 tests/conftest.py
で dd_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 )
実例:
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
[ ... ]
以下の例では、追加 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