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にアップロードされていることを確認するには、「トレースまたはスパン詳細の表示」「スナップショット・ビュー」オプションを使用します。