To find out if this integration is available in your organization, see your Datadog Integrations page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email support@ddog-gov.com.

概要

Java インテグレーションを利用して、Java アプリケーションからメトリクス、トレース、ログを収集できます。

セットアップ

メトリクスの収集

JMX チェックには、インスタンスあたり 350 メトリクスの制限が設けられています。構成オプションを参照してください。メトリクスの追加が必要な場合は、Datadog のサポートチームにお問い合わせください。

アプリケーションで JMX メトリクスが公開されている場合、Datadog Agent から軽量の Java プラグインである JMXFetch (Java 1.7 以上とのみ互換) が呼び出され、MBean サーバーに接続してアプリケーションのメトリクスを収集します。また、監視対象のインスタンスのステータスを報告するサービスチェックを送信することも可能です。このプラグインは、Agent 内で稼働する DogStatsD サーバーを使用して Datadog Agent にメトリクスを送信します。このインテグレーションでは以下の JMX メトリクスも同様に使用されます。

  • ActiveMQ
  • Cassandra
  • Solr
  • Tomcat
  • Kafka

: DogStatsD を介して RATE メトリクスタイプを送信する場合、メトリクスは異なる Agent 間で適切な比較ができるようにアプリ内に GAUGE として表示されます。詳しくはメトリクスの送信: DogStatsD のドキュメントを参照してください。

インストール

JMX リモート接続を開くことができるかをご確認ください。Datadog Agent が JVM に接続するためには、両者が同じホスト上にある場合でもリモート接続が必要です。セキュリティ上の理由から、リスニングアドレスには 0.0.0.0 を使用しないことをお勧めします。同じ場所に配置された JVM と Agent には com.sun.management.jmxremote.host=127.0.0.1 を使用することをお勧めします。

構成

Agent をホスト上のバイナリとして実行している場合は、他の Agent インテグレーション同様に JMX チェックを構成します。Agent を Kubernetes の DaemonSet として実行している場合は、オートディスカバリーを使用して JMX チェックを構成します。

: 複数の JMX チェックを実行するには、コンフィギュレーションファイルを jmx_<INDEX>.d/conf.yaml の形式で作成します (jmx_1.d/conf.yamljmx_2.d/conf.yaml など)。各フォルダーは、conf.d ディレクトリに保存し、コンフィギュレーションファイルに、is_jmxtrue に設定したオプションを含める必要があります。

Datadog Agent コンテナを実行するための標準 gcr.io/datadoghq/agent:latest イメージには JMX がインストールされていません。gcr.io/datadoghq/agent:latest-jmx イメージを使用してください。このイメージは gcr.io/datadoghq/agent:latest に基づいていますが、Agent が jmxfetch を実行するために必要な JVM が含まれています。

いずれかのコンテナで JMX チェックを実行するには、以下の手順を実行します。

  1. JMX チェック構成ファイルを作成します。それには、ホストを参照するか、Datadog が公式にサポートしている以下の JMX インテグレーションの JMX チェック構成ファイルを使用します。

  2. -v <HOST_FOLDER_PATH>:/conf.d を使用して、Datadog Agent の conf.d/ フォルダー内にファイルをマウントします。詳細は、チェックテンプレートの設定ドキュメントを参照してください。

: %%port%% を使用すると問題が多いことがわかっています。問題が発生した場合の最善の回避策は、%%port%% の代わりに、JMX ポートをハードコーディングすることです。

コンフィギュレーションオプション
オプション必須説明
custom_jar_pathsいいえAgent の JVM のクラスパスに追加されるカスタムの jar を指定できます。
jmx_urlいいえAgent がデフォルト以外の JMX URL に接続する必要がある場合は、ホストとポートの代わりにここで指定します。これを使用する場合は、name などを指定する必要があります。
is_jmxいいえ1 つの長い JMX ファイルを使用する代わりに、各アプリケーションの各構成ファイルを作成できます。構成セクションの注で説明したように、各構成ファイルにオプションを含めます。
collect_default_jvm_metricsいいえデフォルトの JVM メトリクス (jvm.*) を収集するようにインテグレーションに指示します。デフォルトは true です。
: JMX 固有のメトリクスを必要としないインテグレーションを使用している場合は、collect_default_jvm_metrics: false を設定します
collect_default_metricsいいえ各インテグレーションには、収集するデフォルトの Bean のリストが記載された metrics.yaml ファイルが含まれています。これを True に設定すると、明示的に yaml ファイルに追加しなくても、これらのメトリクスが自動的に収集されます。通常、これを Autodiscovery とのセットアップに使用するには、コンフィギュレーションオブジェクトのサイズを小さくします。JMX メトリクスを Java トレースエージェントで収集する場合は、適用されません。
java_bin_pathいいえAgent がJava 実行可能ファイルまたはバイナリを検出できない場合、パスを指定します(たとえば C:/path/to/java.exe または /etc/alternatives/java
java_optionsいいえJava JVM オプション
nameいいえjmx_url とともに構成で使用されます。
new_gc_metricsいいえガベージコレクションメトリクスに、より適したメトリクス名を使用するには true に設定します。デフォルトは false です
process_name_regexいいえホストとポートまたは jmx_url を指定する代わりに、Agent は接続 API を使用して接続できます。これには、JDK をインストールして tools.jar のパスを設定する必要があります。
refresh_beansいいえ一致する MBeans リストを更新する更新期間。デフォルトは 600 秒です。この値を小さくすると、CPU 使用率が増加する場合があります。
refresh_beans_initialいいえ一致する MBeans リストを初期化直後に更新する更新期間。デフォルト値は refresh_beans
rmi_connection_timeoutいいえhostport または jmx_url を使用して JVM に接続するときの接続タイムアウト (ミリ秒単位)。
rmi_client_timeoutいいえ接続された JVM からの応答がない期間をミリ秒単位で指定します。その後、Agent は既存の接続を放棄して再試行します。
serviceいいえこのインテグレーショにより送信されるすべてのメトリクス、イベント、サービスチェックに service:<SERVICE> タグをアタッチします。
service_check_prefixいいえサービスチェックのカスタムプレフィックス。たとえば my_prefix は、my_prefix.can_connect というサービスチェックを取得します。設定しない場合は、インテグレーション名がデフォルトで使用されます。
tools_jar_pathいいえprocess_name_regex が設定される場合に設定されます。
trust_store_path および trust_store_passwordいいえSSL が有効な場合に設定する必要があります。

conf パラメーターは、辞書のリストです。この辞書では、次の 2 つのキーのみが許可されます。

キー必須説明
includeはいフィルターの辞書 - これらのフィルターに一致する属性は、“exclude” フィルターにも一致している場合を除き、収集されます (以下を参照)。
excludeいいえフィルターの辞書 - これらのフィルターと一致する属性は収集されません。

タグは実際の MBean 名に基づいてメトリクスに自動的に追加されます。明示的に補足タグを指定できます。たとえば、次の MBean が監視対象のアプリケーションで公開されているとします。

mydomain:attr0=val0,attr1=val1

mydomain というメトリクス (または Bean 内の属性によるそのバリエーション) をタグ attr0:val0、attr1:val1、domain:mydomain、simple:val0、raw_value:my_chosen_value、multiple:val0-val1 で作成します。

include キー内の指定したエイリアスが_キャメルケース_として書式設定されている場合、_スネークケース_に変換されます。たとえば MyMetricName は、Datadog では my_metric_name と表示されます。

フィルターの説明

include または exclude 辞書は次のキーをサポートします。

キー説明
domainドメイン名またはドメイン名のリスト (例: java.lang)。
domain_regexドメイン名に一致する正規表現のパターンまたはパターンリスト (例: java\.lang.*)。
bean または bean_nameBean 名または完全な Bean 名のリスト (例: java.lang:type=Compilation)。
bean_regex完全な Bean名に一致する正規表現のパターンまたはパターンリスト (例: java\.lang.*[,:]type=Compilation.*)。正規表現でキャプチャグループを使用して、タグ値として指定できます。上記のコンフィギュレーション例を参照してください。
classクラス名のリストのクラス (例: org.datadog.jmxfetch.SimpleTestJavaApp)。
class_regexクラス名に一致する正規表現のパターンまたはパターンリスト (例: org\.datadog\.jmxfetch\.SimpleTestJavaApp)。
exclude_tags最終メトリクスから削除するタグキーのリスト。メトリクスタグの粒度の向上に使用します (例: ["attr1", "id", "partition-id"])。
attribute属性名のリストまたは辞書 (詳細については以下を参照)。

:

  • domain_regex および bean_regex で定義された正規表現は、Java の正規表現形式に従う必要があります。このフィルターはバージョン 5.5.0 で追加されました。
  • 正規表現のパターン以外のすべての値では、大文字と小文字が区別されます。

これらのパラメーターに加えて、フィルターは Bean パラメーターで絞り込むことができる「カスタム」キーをサポートします。たとえば、Cassandra キャッシュに関するメトリクスを収集する場合は、type: - Caches フィルターを使用することが考えられます。

conf:
    - include:
          domain: org.apache.cassandra.db
          type:
              - Caches

属性フィルター

attribute フィルターは、次の 2 種類の値を受け入れます。

  • キーが、ターゲット属性の名前と一致する辞書:

    conf:
        - include:
              attribute:
                  maxThreads:
                      alias: tomcat.threads.max
                      metric_type: gauge
                  currentThreadCount:
                      alias: tomcat.threads.count
                      metric_type: gauge
                  bytesReceived:
                      alias: tomcat.bytes_rcvd
                      metric_type: counter
    
    • Datadog でメトリクス名になる属性の alias を指定できます。
    • また、メトリクスタイプ(gaugehistogramcounter/ratemonotonic_count)も指定できます。counter を選択すると、メトリクスに対して 1 秒あたりの rate が計算され、gauge として送信されます。
  • ターゲット属性名のリスト:

    conf:
        - include:
              domain: org.apache.cassandra.db
              attribute:
                  - BloomFilterDiskSpaceUsed
                  - BloomFilterFalsePositives
                  - BloomFilterFalseRatio
                  - Capacity
                  - CompressionRatio
                  - CompletedTasks
                  - ExceptionCount
                  - Hits
                  - RecentHitRate
    
    • メトリクスタイプはデフォルトで gauge です。
    • メトリクス名は jmx.<DOMAIN_NAME>.<ATTRIBUTE_NAME> です。

これは別のフィルタリングの例です。

instances:
    - host: 127.0.0.1
      name: jmx_instance
      port: 9999

init_config:
    conf:
        - include:
              bean: org.apache.cassandra.metrics:type=ClientRequest,scope=Write,name=Latency
              attribute:
                  - OneMinuteRate
                  - 75thPercentile
                  - 95thPercentile
                  - 99thPercentile

検証

Agent の status サブコマンドを実行し、JMXFetch セクションの JMX チェックを探します。

さらに、JMX チェックには、JMX アプリケーションからメトリクスを収集するデフォルトのコンフィギュレーションがあります。Metrics Explorerjvm.heap_memoryjvm.non_heap_memoryjvm.gc.cms.count をチェックします。

収集データ

Agent v6.0 以上で使用可能

Java のログコレクションをセットアップして Datadog にログを送信するには、 個別のドキュメントを参照してください。

トレースの収集

Agent でトレースコレクションを有効化した後、Java アプリケーションのインスツルメンテーションに関するドキュメントを参照して Datadog にトレースを送信します。

収集データ

メトリクス

: jmx.d/conf.yamlnew_gc_metrics: true と設定すると、次のメトリクスが置き換えられます。

jvm.gc.cms.count   => jvm.gc.minor_collection_count
                      jvm.gc.major_collection_count
jvm.gc.parnew.time => jvm.gc.minor_collection_time
                      jvm.gc.major_collection_time

サービスチェック

jmx.can_connect

Returns CRITICAL if the Agent is unable to connect to and collect metrics from the monitored JVM instance, WARNING if no metrics are collected, and OK otherwise.

Statuses: ok, critical, warning

トラブルシューティング

JMX トラブルシューティングのコマンドと FAQ のリストを参照してください。

その他の参考資料