- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Java インテグレーションを利用して、Java アプリケーションからメトリクス、トレース、ログを収集できます。
アプリケーションで JMX メトリクスが公開されている場合、Datadog Agent から軽量の Java プラグインである JMXFetch (Java 1.7 以上とのみ互換) が呼び出され、MBean サーバーに接続してアプリケーションのメトリクスを収集します。また、監視対象のインスタンスのステータスを報告するサービスチェックを送信することも可能です。このプラグインは、Agent 内で稼働する DogStatsD サーバーを使用して Datadog Agent にメトリクスを送信します。このインテグレーションでは以下の JMX メトリクスも同様に使用されます。
注: JMX チェックには、デフォルトでインスタンスあたり 350 メトリクスの制限が設けられています。メトリクスの追加が必要な場合は、Datadog のサポートチームにお問い合わせください。
JMX リモート接続を開くことができるかをご確認ください。Datadog Agent が JVM に接続するためには、両者が同じホスト上にある場合でもリモート接続が必要です。セキュリティ上の理由から、リスニングアドレスには 0.0.0.0
を使用しないことをお勧めします。同じ場所に配置された JVM と Agent には com.sun.management.jmxremote.host=127.0.0.1
を使用することをお勧めします。
Agent をホスト上のバイナリとして実行している場合は、JMX チェックを別の Agent インテグレーションとして構成します。Agent を Kubernetes の DaemonSet として実行している場合は、オートディスカバリーを使用して JMX チェックを構成します。
JMX に接続するように Agent を構成します。Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーの jmx.d/conf.yaml
を編集します。使用可能なすべてのコンフィギュレーションオプションについては、以下のコンフィギュレーションオプション または init_config と instance テンプレートを参照してください。
init_config:
is_jmx: true
collect_default_metrics: true
# custom_jar_paths:
# - <CUSTOM_JAR_FILE_PATH>.jar
instances:
- host: localhost
port: port
user: username
password: password
name: jmx_instance_name
注: 複数の 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 です。 |
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
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
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 にトレースを送信します。
jvm.heap_memory (gauge) | The total Java heap memory used. Shown as byte |
jvm.heap_memory_committed (gauge) | The total Java heap memory committed to be used. Shown as byte |
jvm.heap_memory_init (gauge) | The initial Java heap memory allocated. Shown as byte |
jvm.heap_memory_max (gauge) | The maximum Java heap memory available. Shown as byte |
jvm.non_heap_memory (gauge) | The total Java non-heap memory used. Non-heap memory is calculated as follows: Metaspace + CompressedClassSpace + CodeCache Shown as byte |
jvm.non_heap_memory_committed (gauge) | The total Java non-heap memory committed to be used. Shown as byte |
jvm.non_heap_memory_init (gauge) | The initial Java non-heap memory allocated. Shown as byte |
jvm.non_heap_memory_max (gauge) | The maximum Java non-heap memory available. Shown as byte |
jvm.thread_count (count) | The number of live threads. Shown as thread |
jvm.gc.cms.count (count) | The total number of garbage collections that have occurred. |
jvm.gc.major_collection_count (gauge) | The rate of major garbage collections. Set new_gc_metrics: true to receive this metric. |
jvm.gc.minor_collection_count (gauge) | The rate of minor garbage collections. Set new_gc_metrics: true to receive this metric. |
jvm.gc.parnew.time (gauge) | The approximate accumulated garbage collection time elapsed. Shown as millisecond |
jvm.gc.major_collection_time (gauge) | The fraction of time spent in major garbage collection. Set new_gc_metrics: true to receive this metric.Shown as permille |
jvm.gc.minor_collection_time (gauge) | The fraction of time spent in minor garbage collection. Set new_gc_metrics: true to receive this metric.Shown as permille |
注: 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
Agent が監視対象の JVM インスタンスに接続できず、メトリクスを収集できない場合は、CRITICAL
を返します。それ以外の場合は、OK
を返します。
Statuses: ok, クリティカル
JMX トラブルシューティングのコマンドと FAQ のリストを参照してください。