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 メトリクスが公開されている場合、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.yaml、jmx_2.d/conf.yaml など)。各フォルダーは、conf.d ディレクトリに保存し、コンフィギュレーションファイルに、is_jmx を true に設定したオプションを含める必要があります。
Datadog Agent コンテナを実行するための標準 gcr.io/datadoghq/agent:latest イメージには JMX がインストールされていません。gcr.io/datadoghq/agent:latest-jmx イメージを使用してください。このイメージは gcr.io/datadoghq/agent:latest に基づいていますが、Agent が jmxfetch を実行するために必要な JVM が含まれています。
いずれかのコンテナで JMX チェックを実行するには、以下の手順を実行します。
JMX チェック構成ファイルを作成します。それには、ホストを参照するか、Datadog が公式にサポートしている以下の JMX インテグレーションの JMX チェック構成ファイルを使用します。
-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 | いいえ | host と port または 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_name | Bean 名または完全な 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 を指定できます。 - また、メトリクスタイプ(
gauge、histogram、counter/rate、monotonic_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 Explorer で jvm.heap_memory、jvm.non_heap_memory、jvm.gc.cms.count をチェックします。
収集データ
Agent v6.0 以上で使用可能
Java のログコレクションをセットアップして Datadog にログを送信するには、 個別のドキュメントを参照してください。
トレースの収集
Agent でトレースコレクションを有効化した後、Java アプリケーションのインスツルメンテーションに関するドキュメントを参照して Datadog にトレースを送信します。
収集データ
メトリクス
注: jmx.d/conf.yaml で new_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 のリストを参照してください。
その他の参考資料