概要

ランタイム メトリクスは、メモリ使用量、ガーベジ コレクション、並列化を含むアプリケーション パフォーマンスに関するインサイトを提供します。Datadog トレース ライブラリは、サポートされている各言語向けに ランタイム メトリクス収集 を提供します。また、OpenTelemetry (OTel) でも、OpenTelemetry SDK を介して Datadog に送信できる互換のランタイム メトリクスを収集します。

互換性

Datadog は、以下の言語に対する OpenTelemetry ランタイム メトリクスをサポートします。

  • Java
  • .NET
  • Go

ホストおよびコンテナのメトリクス マッピングの詳細は、OpenTelemetry メトリクス マッピング を参照してください。

Setup instructions

1. 前提条件

2. アプリケーションを構成する

OpenTelemetry SDK がランタイム メトリクスを送信するように構成する手順を見るには、言語を選択してください:

自動インスツルメンテーション

Java アプリケーションで OpenTelemetry 自動インスツルメンテーション を使用する場合、ランタイム メトリクスはデフォルトで有効です。

手動インスツルメンテーション

OpenTelemetry 手動インスツルメンテーション を使用する場合は、利用している Java バージョン向けのガイドに従ってください:

OpenTelemetry Go アプリケーションは 手動でインスツルメント されています。ランタイム メトリクスを有効にするには、runtime パッケージ のドキュメントを参照してください。

.NET OpenTelemetry SDK のサポートされる最小バージョンは 1.5.0 です

自動インスツルメンテーション

.NET アプリケーションで OpenTelemetry 自動インスツルメンテーション を使用する場合、ランタイム メトリクスはデフォルトで有効です。

手動インスツルメンテーション

OpenTelemetry 手動インスツルメンテーション を使用する場合は、OpenTelemetry.Instrumentation.Runtime ライブラリ のドキュメントを参照してください。

メトリクスのエクスポート間隔

.NET OTel SDK のデフォルトのメトリクスのエクスポート間隔は、Datadog .NET SDK のデフォルトとは異なります。Datadog は、.NET サービスで OTEL_METRIC_EXPORT_INTERVAL 環境変数を設定し、Datadog のデフォルトのメトリクス エクスポート間隔に合わせることを推奨します:

OTEL_METRIC_EXPORT_INTERVAL=10000

ランタイムメトリクスのダッシュボードを表示

セットアップ完了後は、次の場所でランタイム メトリクスを表示できます:

サービスページにある JVM Metrics タブに OpenTelemetry のランタイムメトリクスが表示されている様子

収集されたデータ

Datadog で OpenTelemetry ランタイム メトリクスを使用する場合、次の両方を受け取ります:

  • OpenTelemetry オリジナルのランタイム メトリクス
  • 同等のメトリクスに対応する Datadog マッピング済みランタイム メトリクス

OpenTelemetry ランタイム メトリクスには、ソースに応じて次のプレフィックスが付きます:

ソースプレフィックス
OTel Collector Datadog Exporterotel.process.runtime.*
Datadog Agent OTLP Ingestprocess.runtime.*

以下の表は、OpenTelemetry マッピングでサポートされる Datadog ランタイム メトリクスを示します。「N/A」は、対応する OpenTelemetry メトリクスが存在しないことを示します。

OpenTelemetry ランタイム メトリクスは、メトリクス名により Datadog へマッピングされます。OpenTelemetry ランタイム メトリクスのためにホスト メトリクスの名前を変更しないでください。マッピングが壊れます。
Datadog メトリクス説明OpenTelemetry メトリクス
jvm.heap_memory使用されている Java ヒープメモリの合計。process.runtime.jvm.memory.usage
jvm.memory.used
jvm.heap_memory_committed使用するためにコミットされた Java ヒープメモリの合計。process.runtime.jvm.memory.committed
jvm.memory.committed
jvm.heap_memory_init最初に割り当てられた Java ヒープメモリ。process.runtime.jvm.memory.init
jvm.memory.init
jvm.heap_memory_max利用可能な Java ヒープメモリの最大値。process.runtime.jvm.memory.limit
jvm.memory.limit
jvm.non_heap_memory使用される Java 非ヒープメモリの合計。非ヒープメモリとは、Metaspace + CompressedClassSpace + CodeCacheです。process.runtime.jvm.memory.usage
jvm.memory.used
jvm.non_heap_memory_committed使用するためにコミットされた Java 非ヒープメモリの合計。process.runtime.jvm.memory.committed
jvm.memory.committed
jvm.non_heap_memory_init最初に割り当てられた Java 非ヒープメモリ。process.runtime.jvm.memory.init
jvm.memory.init
jvm.non_heap_memory_max利用可能な Java 非ヒープメモリの最大値。process.runtime.jvm.memory.limit
jvm.memory.limit
jvm.gc.old_gen_sizeOld Generation メモリプールの現在の Java ヒープメモリ使用量process.runtime.jvm.memory.usage
jvm.memory.used
jvm.gc.eden_sizeEden メモリプールの現在の Java ヒープメモリ使用量process.runtime.jvm.memory.usage
jvm.memory.used
jvm.gc.survivor_sizeSurvivor メモリプールの現在の Java ヒープメモリ使用量process.runtime.jvm.memory.usage
jvm.memory.used
jvm.gc.metaspace_sizeMetaspace メモリプールの現在の Java 非ヒープメモリ使用量process.runtime.jvm.memory.usage
jvm.memory.used
jvm.thread_countライブスレッドの数。process.runtime.jvm.threads.count
jvm.thread.count
jvm.loaded_classes現在ロードされているクラスの数。process.runtime.jvm.classes.current_loaded
jvm.class.count
jvm.cpu_load.systemシステム全体の最近の CPU 使用率。process.runtime.jvm.system.cpu.utilization
jvm.system.cpu.utilization
jvm.cpu_load.processプロセスの最近の CPU 使用率。process.runtime.jvm.cpu.utilization
jvm.cpu.recent_utilization
jvm.buffer_pool.direct.usedダイレクトバッファが使用するメモリの量。process.runtime.jvm.buffer.usage
jvm.buffer.memory.usage
jvm.buffer_pool.direct.countプール内のダイレクトバッファの数。process.runtime.jvm.buffer.count
jvm.buffer.count
jvm.buffer_pool.direct.limitダイレクトバッファの総メモリ容量。process.runtime.jvm.buffer.limit
jvm.buffer.memory.limit
jvm.buffer_pool.mapped.usedマップされたバッファが使用するメモリの量。process.runtime.jvm.buffer.usage
jvm.buffer.memory.usage
jvm.buffer_pool.mapped.countプール内のマップされたバッファの数。process.runtime.jvm.buffer.count
jvm.buffer.count
jvm.buffer_pool.mapped.limitマップされたバッファの総メモリ容量。process.runtime.jvm.buffer.limit
jvm.buffer.memory.limit
jvm.gc.parnew.time経過したガベージコレクションのおおよその累積時間。N/A
jvm.gc.cms.count発生したガベージコレクションの総数。N/A
jvm.gc.major_collection_countメジャーガベージコレクションの発生率。このメトリクスを受け取るには new_gc_metrics: true を設定します。N/A
jvm.gc.minor_collection_countマイナーガベージコレクションの発生率。このメトリクスを受け取るには new_gc_metrics: true を設定します。N/A
jvm.gc.major_collection_timeメジャーガベージコレクションに費やされた時間の割合。このメトリクスを受け取るには new_gc_metrics: true を設定します。N/A
jvm.gc.minor_collection_timeマイナーガベージコレクションに費やされた時間の割合。このメトリクスを受け取るには new_gc_metrics: true を設定します。N/A
jvm.os.open_file_descriptorsオープン ファイル ディスクリプタの数。N/A
Datadog メトリクス説明OpenTelemetry メトリクス
runtime.go.num_goroutine生成された goroutines の数。process.runtime.go.goroutines
runtime.go.num_cgo_callCGO コールの回数。process.runtime.go.cgo.calls
runtime.go.mem_stats.lookupsランタイムが実行したポインタールックアップの数。process.runtime.go.mem.lookups
runtime.go.mem_stats.heap_alloc割り当てられたヒープオブジェクトのバイト数。process.runtime.go.mem.heap_alloc
runtime.go.mem_stats.heap_sysオペレーティングシステムから取得したヒープメモリのバイト数。process.runtime.go.mem.heap_sys
runtime.go.mem_stats.heap_idleアイドル (未使用) スパンのバイト数。process.runtime.go.mem.heap_idle
runtime.go.mem_stats.heap_inuse使用中のスパンのバイト数。process.runtime.go.mem.heap_inuse
runtime.go.mem_stats.heap_releasedオペレーティングシステムに返される物理メモリのバイト数。process.runtime.go.mem.heap_released
runtime.go.mem_stats.heap_objects割り当てられたヒープオブジェクトの数。process.runtime.go.mem.heap_objects
runtime.go.mem_stats.pause_total_nsガベージコレクション (GC) の累積ナノ秒。process.runtime.go.gc.pause_total_ns
runtime.go.mem_stats.num_gc完了した GC サイクルの数。process.runtime.go.gc.count
runtime.go.num_cpuランタイムが検出した CPU の数。N/A
runtime.go.mem_stats.alloc割り当てられたヒープオブジェクトのバイト数。N/A
runtime.go.mem_stats.total_allocヒープオブジェクトに割り当てられた累積バイト数。N/A
runtime.go.mem_stats.sysオペレーティングシステムから取得したメモリの合計バイト数。N/A
runtime.go.mem_stats.mallocs割り当てられたヒープオブジェクトの累積数。N/A
runtime.go.mem_stats.frees解放されたヒープオブジェクトの累積数。N/A
runtime.go.mem_stats.stack_inuseスタックスパンのバイト数。N/A
runtime.go.mem_stats.stack_sysオペレーティングシステムから取得したスタックメモリのバイト数。N/A
runtime.go.mem_stats.m_span_inuse割り当てられた mspan 構造体のバイト数。N/A
runtime.go.mem_stats.m_span_sysmspan 構造体のためにオペレーティングシステムから取得したメモリのバイト数。N/A
runtime.go.mem_stats.m_cache_inuse割り当てられた mcache 構造体のバイト数。N/A
runtime.go.mem_stats.m_cache_sysmcache 構造体のためにオペレーティングシステムから取得したメモリのバイト数。N/A
runtime.go.mem_stats.buck_hash_sysプロファイリングバケットハッシュテーブルのメモリのバイト数。N/A
runtime.go.mem_stats.gc_sysガベージコレクションのメタデータに含まれるメモリのバイト数。N/A
runtime.go.mem_stats.other_sys雑多なオフヒープにあるメモリのバイト数。N/A
runtime.go.mem_stats.next_gc次の GC サイクルのターゲットヒープサイズ。N/A
runtime.go.mem_stats.last_gcUNIX エポックからのナノ秒単位で、最後に終了したガベージコレクション。N/A
runtime.go.mem_stats.num_forced_gcGC 関数を呼び出したアプリケーションによって強制された GC サイクルの数。N/A
runtime.go.mem_stats.gc_cpu_fractionプログラムが開始してから GC によって使用された、このプログラムの利用可能な CPU 時間の割合。N/A
runtime.go.gc_stats.pause_quantiles.minGC 休止時間の分布: 最小値。N/A
runtime.go.gc_stats.pause_quantiles.25pGC 休止時間の分布: 25 パーセンタイル。N/A
runtime.go.gc_stats.pause_quantiles.50pGC 休止時間の分布: 50 パーセンタイル。N/A
runtime.go.gc_stats.pause_quantiles.75pGC 休止時間の分布: 75 パーセンタイル。N/A
runtime.go.gc_stats.pause_quantiles.maxGC 休止時間の分布: 最大値。N/A
Datadog メトリクス説明OpenTelemetry メトリクス
runtime.dotnet.threads.contention_countスレッドがロック待ちのために停止した回数。process.runtime.dotnet.
monitor.lock_contention.count
runtime.dotnet.exceptions.countファーストチャンスの例外の数。process.runtime.dotnet.
exceptions.count
runtime.dotnet.gc.size.gen0第 0 世代ヒープのサイズ。process.runtime.dotnet.
gc.heap.size
runtime.dotnet.gc.size.gen1第 1 世代ヒープのサイズ。process.runtime.dotnet.
gc.heap.size
runtime.dotnet.gc.size.gen2第 2 世代ヒープのサイズ。process.runtime.dotnet.
gc.heap.size
runtime.dotnet.gc.size.lohラージオブジェクトヒープのサイズ。process.runtime.dotnet.
gc.heap.size
runtime.dotnet.gc.count.gen0第 0 世代ガベージコレクションの回数。process.runtime.dotnet.
gc.collections.count
runtime.dotnet.gc.count.gen1第 1 世代ガベージコレクションの回数。process.runtime.dotnet.
gc.collections.count
runtime.dotnet.gc.count.gen2第 2 世代ガベージコレクションの回数。process.runtime.dotnet.
gc.collections.count
runtime.dotnet.cpu.systemカーネル内で実行されているミリ秒数。N/A
runtime.dotnet.cpu.userカーネル外で実行されているミリ秒数。N/A
runtime.dotnet.cpu.percentアプリケーションが使用する総 CPU の割合。N/A
runtime.dotnet.mem.committedメモリ使用量。N/A
runtime.dotnet.threads.countスレッドの数。N/A
runtime.dotnet.threads.workers_countスレッドプールのワーカー数 (.NET Core のみ)。N/A
runtime.dotnet.threads.contention_timeロック待ちのスレッドが費やした累積時間。(.NET Core のみ)N/A
runtime.dotnet.gc.memory_loadプロセスが使用する総メモリの割合。この値が 85 以上になると、ガベージコレクション (GC) の動作が変わります。(.NET Core のみ)N/A
runtime.dotnet.gc.pause_timeGC がアプリケーションスレッドを一時停止した時間。(.NET Core のみ)N/A
runtime.dotnet.aspnetcore.
requests.total
サーバーが受信した HTTP リクエストの総数。(.NET Core のみ)N/A
runtime.dotnet.aspnetcore.
requests.failed
サーバーが受信した HTTP リクエストの失敗数。(.NET Core のみ)N/A
runtime.dotnet.aspnetcore.
requests.current
まだ停止していない HTTP リクエストの総数。(.NET Core のみ)N/A
runtime.dotnet.aspnetcore.
requests.queue_length
サーバーの HTTP リクエストキューの現在の長さ。(.NET Core のみ)N/A
runtime.dotnet.aspnetcore.
connections.total
サーバーに確立された HTTP 接続の総数。(.NET Core のみ)N/A
runtime.dotnet.aspnetcore.
connections.current
サーバーへの現在のアクティブな HTTP 接続数。(.NET Core のみ)N/A
runtime.dotnet.aspnetcore.
connections.queue_length
HTTP サーバー接続キューの現在の長さ。(.NET Core のみ)N/A

参考資料