APMトレーサでのスレッド・スナップショットの構成
スレッド・スナップショット機能を使用すると、詳細なダイブ分析に使用できるスレッド・スタック・スナップショット・コレクションが可能です。
スレッド・スナップショットを使用すると、スレッド・スタック・スナップショット、スレッド・メモリー・オーバーヘッド、スレッドCPUオーバーヘッド、トレースへの影響などのトレースを収集できます。特定の間隔で、スレッド・スタック・スナップショットおよび状態やロックなどのスタック関連データを収集します。
ユーザーは、スパンのスタックダンプを取得するためにスレッドスタックスナップショット収集を有効にできます。ユーザー・コード・スタックの可視性を提供します。
スレッド・スナップショット・コレクションのデフォルトの時間間隔は250ミリ秒です。
APM Tracer 1.4以上のバージョンはスレッド・スナップショットをサポートしており、デフォルトでは無効になっています。
APMトレーサおよびAPMエージェントはスレッド・スナップショットをサポートします。APMエージェントでのスレッド・スナップショットの構成の詳細は、APMエージェントでのスレッド・スナップショットの構成を参照してください。
APMトレーサでのスレッド・スナップショットの有効化
スレッド・スナップショットはApmTracer
と統合されています。これは、ApmTracer
オブジェクトの作成の一部として初期化されます。
Helidonを使用している場合は、Helidonのスレッド・スナップショットにスキップします。
次の例は、スレッド・スナップショット機能用の構成メソッド(値(true)
を持つwithCollectDeepDiveTraceSnapshot
)を多数示しています。スレッド・スナップショットは、ApmTracer
のbuild関数からコールされます。
ApmTracer tracer = (ApmTracer) new ApmTracer.Builder(AGENT_TRACER_NAME,serviceName)
.withProperty(PROP_NAME_HYBRID_TRACER_STARTER, PROP_VALUE_HYBRID_TRACER_STARTER)
.withMicrosecondAccurateTimestamp(microsecondAccurate)
.withObject(agentCommon)
.withTraceListener(traceListener)
.withCollectThreadId(collectThreadId)
.withCollectThreadName(collectThreadName)
.withCollectDeepDiveTraceSnapshot(true)
.build();
APMトレーサのインスタンス化方法の詳細は、APMトレーサのインスタンス化を参照してください。
スレッドスナップショットの構成方法
次の構成メソッドを使用できます。
メソッド | 説明 | 単位 | デフォルト値 | サポートされる値 |
---|---|---|---|---|
withMaxPercentTraceExportToCollectorPerMinute | コレクタにエクスポートする1分当たりの受信トレースの最大割合。 | パーセント | 100 |
Minimum:1 最大: 100 |
withMaxTraceExportToCollectorPerMinute | コレクタにエクスポートする1分当たりの上位トレースの最大数。 | 数値 | 200 |
Minimum:1 最大: 1500 |
withSnapshotCollectionIntervalInMS | スレッドスナップショットデータが収集される間隔。 | ミリ秒 | 250 |
Minimum:250 最大: 300000 |
withMaxSnapshotsPerTrace | トレース当たりに許可されるスナップショットの最大数。 | 数値 | 16 |
最小: 1 最大:16 |
withMaxStackTraceDepthPerSnapshot | 任意のスレッドについて収集された最大スタックトレースフレーム数。 | 数値 | 256 |
最小: 1 最大: 256 |
withLogLevel | このプロパティー値以上のディープダイブログを出力します。 | 文字列 | INFO |
デバッグ、情報、警告、重大 |
withMaxProcessCpuUsagePercent | 最大プロセスCPU使用率。プロセス全体のCPU使用率をこのしきい値未満に維持することをお薦めします。 | 数値 | 90 |
最小: 1 最大: 90 |
withDeepDiveCpuUsagePercent | CPU使用率の全体を維持するための最小しきい値。 | パーセント | 3 |
最小: 1 最大: 5 |
全体的なディープ・CPU使用率を維持するための最大しきい値。 | パーセント | 5 |
最小: 5 最大: 20 |
|
withTraceLifeInMS | トレースの最小しきい値。 | ミリ秒 | 50 |
最小: 50 最大: 60000 |
トレースの最大しきい値。 | ミリ秒 | 60000 |
最小: 60000 最大: 600000 |
DeepDiveConfiguration deepDiveConfiguration = DeepDiveConfigurationBuilder.builder()
.withMaxPercentTraceExportToCollectorPerMinute(100)
.withMaxTraceExportToCollectorPerMinute(200)
.withSnapshotCollectionIntervalInMS(250)
.withMaxSnapshotsPerTrace(16)
.withMaxStackTraceDepthPerSnapshot(256)
.withLogLevel("INFO")
.withMaxProcessCpuUsagePercent(90)
.withDeepDiveCpuUsagePercent(Range.RangeBuilder.builder()
.withMinThreshold(3).withMaxThreshold(5).build())
.withTraceLifeInMS(Range.RangeBuilder.builder()
.withMinThreshold(50).withMaxThreshold(60000).build())
.build();
ApmTracer tracer = (ApmTracer) new ApmTracer.Builder(AGENT_TRACER_NAME, serviceName)
.withObject(deepDiveConfiguration)
.withCollectDeepDiveTraceSnapshot(true)
.build();
Helidonのスレッド・スナップショット
スレッド・スナップショットは、Helidonでサポートされています。これは、Helidon内のApmTracer
オブジェクトの作成の一部として初期化されます。
スレッド・スナップショットを有効にするには、HelidonのYAML
ファイルを更新し、collect-deepdive-trace-snapshots
プロパティを追加してtrue
に設定します。
例:
tracing:
name: "Helidon APM Tracer"
service: "helidonse-http"
data-upload-endpoint:<endpoint-url>
private-data-key: <private-data-key>
collect-metrics:true
collect-resources: true
collect-deepdive-trace-snapshots:true
HelidonでのAPMトレーサの使用の詳細は、「HelidonでのAPMトレーサの使用」を参照してください。
Helidonの構成プロパティ
Helidonでスレッド・スナップショットを構成するには、次のプロパティを使用してHelidonのYAMLファイルを更新します。
プロパティ名 | 説明 | 単位 | デフォルト値 | サポートされる値 |
---|---|---|---|---|
com.oracle.apm.agent.deepdive.maxPercentTraceExportToCollectorPerMinute | コレクタにエクスポートする1分当たりの受信トレースの最大割合。 | パーセント | 100 |
Minimum:1 最大: 100 |
com.oracle.apm.agent.deepdive.maxTraceExportToCollectorPerMinute | コレクタにエクスポートする1分当たりの上位トレースの最大数。 | 数値 | 200 |
Minimum:1 最大: 1500 |
com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS | スレッドスナップショットデータが収集される間隔。 | ミリ秒 | 250 |
Minimum:250 最大: 300000 |
com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace | トレース当たりに許可されるスナップショットの最大数。 | 数値 | 16 |
最小: 1 最大:16 |
com.oracle.apm.agent.deepdive.maxStackTraceDepthPerSnapshot | 任意のスレッドについて収集された最大スタックトレースフレーム数。 | 数値 | 256 |
最小: 1 最大: 256 |
com.oracle.apm.agent.deepdive.logLevel | このプロパティー値以上のディープダイブログを出力します。 | 文字列 | INFO |
デバッグ、情報、警告、重大 |
com.oracle.apm.agent.deepdive.maxProcessCpuUsagePercent | 最大プロセスCPU使用率。プロセス全体のCPU使用率をこのしきい値未満に維持することをお薦めします。 | 数値 | 90 |
最小: 1 最大: 90 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.minThreshold | CPU使用率の全体を維持するための最小しきい値。 | パーセント | 3 |
最小: 1 最大: 5 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold | 全体的なディープ・CPU使用率を維持するための最大しきい値。 | パーセント | 5 |
最小: 5 最大: 20 |
com.oracle.apm.agent.deepdive.traceLifeInMS.minThreshold | トレースの最小しきい値。 | ミリ秒 | 50 |
最小: 50 最大: 60000 |
com.oracle.apm.agent.deepdive.traceLifeInMS.maxThreshold | トレースの最大しきい値。 | ミリ秒 | 60_000 |
最小: 60000 最大: 600000 |
deepDiveProperties:
com.oracle.apm.agent.deepdive.maxPercentTraceExportToCollectorPerMinute: 100
com.oracle.apm.agent.deepdive.maxTraceExportToCollectorPerMinute: 200
com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS: 250
com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace: 16
com.oracle.apm.agent.deepdive.maxStackTraceDepthPerSnapshot: 256
com.oracle.apm.agent.deepdive.logLevel: INFO
com.oracle.apm.agent.deepdive.maxProcessCpuUsagePercent: 90
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.minThreshold: 3
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold: 5
com.oracle.apm.agent.deepdive.traceLifeInMS.minThreshold: 50
com.oracle.apm.agent.deepdive.traceLifeInMS.maxThreshold: 60000
スレッド・スナップショットの検証
スレッド・スナップショット機能が正しく構成されていて、データがApplication Performance Monitoringにアップロードされていることを確認するには、「トレースまたはスパン詳細の表示」の「スナップショット・ビュー」オプションを使用します。