Configurer des clichés de thread dans le traceur APM

La fonctionnalité d'instantanés de thread permet la collecte d'instantanés de pile de threads, qui peut être utilisée pour l'analyse de profondeur.

Les instantanés de thread permettent la collecte de traces telles que les instantanés de pile de threads, le temps système de la mémoire des threads, le temps système de la CPU des threads et l'impact sur la trace. Il collecte les instantanés de pile de threads et les données associées à la pile, telles que l'état et les verrous, à un intervalle spécifique.

Les utilisateurs peuvent activer la collecte d'instantanés de pile de threads pour effectuer un vidage de pile des étendues. Elle fournit une visibilité sur la pile de code utilisateur.

L'intervalle de temps par défaut de la collecte d'instantanés de thread est de 250 ms.

APM Tracer version 1.4 ou supérieure prend en charge les instantanés de thread et est désactivé par défaut.

Le traceur APM et l'agent APM prennent en charge les instantanés de thread. Pour plus d'informations sur la configuration des instantanés de thread dans l'agent APM, reportez-vous à Configuration des instantanés de thread dans l'agent APM.

Activer les clichés de thread dans le traceur APM

Le cliché de thread est intégré à ApmTracer. Il sera initialisé dans le cadre de la création d'objet ApmTracer.

Si vous utilisez Helidon, passez à la section Thread Snapshots in Helidon.

L'exemple ci-dessous présente de nombreuses méthodes de configuration, dont celle pour la fonctionnalité d'instantanés de thread : withCollectDeepDiveTraceSnapshot avec la valeur (true). Les clichés de thread seront appelés à partir de la fonction de création de ApmTracer :


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();

Pour plus d'informations sur l'instanciation du traceur APM, reportez-vous à la section Instantiate APM Tracer.

Méthodes de configuration des instantanés de thread

Les méthodes de configuration disponibles sont les suivantes :

Méthode Description Unité Valeur par défaut Valeurs prises en charge
withMaxPercentTraceExportToCollectorPerMinute Pourcentage maximal de traces entrantes par minute à exporter vers le collecteur. Pourcentage 100

Minimum : 1

Maximum : 100

withMaxTraceExportToCollectorPerMinute Nombre maximal de traces supérieures par minute à exporter vers le collecteur. Numéro 200

Minimum : 1

Maximum : 1500

withSnapshotCollectionIntervalInMS Intervalle auquel les données d'instantané de thread seront collectées. Millisecondes 250

Minimum : 250

Maximum : 300000

withMaxSnapshotsPerTrace Nombre maximal de clichés autorisés par trace. Numéro 16

Minimum : 1

Maximum : 16

withMaxStackTraceDepthPerSnapshot Nombre maximal de trames de trace de pile collectées pour n'importe quel thread. Numéro 256

Minimum : 1

Maximum : 256

withLogLevel Imprimez les journaux de plongée profonds, égaux ou supérieurs à cette valeur de propriété. Chaîne INFO

DÉBOGAGE, INFOS, AVERTISSEMENT, GRAVITÉ

withMaxProcessCpuUsagePercent Utilisation maximale de l'UC de processus. Il est recommandé de maintenir l'utilisation globale de l'UC de processus sous ce seuil. Numéro 90

Minimum : 1

Maximum : 90

withDeepDiveCpuUsagePercent Seuil minimal pour maintenir une utilisation globale approfondie de l'UC. Pourcentage 3

Minimum : 1

Maximum : 5

  Seuil maximal pour maintenir une utilisation globale approfondie de la CPU. Pourcentage 5

Minimum : 5

Maximum : 20

withTraceLifeInMS Seuil minimal pour une trace. Millisecondes 50

Minimum : 50

Maximum : 60000

  Seuil maximal pour une trace. Millisecondes 60000

Minimum : 60000

Maximum : 600000

Par exemple :
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();

Instantanés de thread dans Helidon

Les clichés de thread sont pris en charge dans Helidon. Il sera initialisé dans le cadre de la création d'objet ApmTracer dans Helidon.

Pour activer les clichés de thread, mettez à jour le fichier YAML d'Helidon, ajoutez la propriété collect-deepdive-trace-snapshots et définissez-la sur true.

Par exemple :

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

Pour plus d'informations sur l'utilisation du traceur APM dans Helidon, reportez-vous à la section Use APM Tracer in Helidon.

Propriétés de configuration pour Helidon

Pour configurer des instantanés de thread dans Helidon, mettez à jour le fichier YAML d'Helidon à l'aide des propriétés suivantes :

Nom de la propriété Description Unité Valeur par défaut Valeurs prises en charge
com.oracle.apm.agent.deepdive.maxPercentTraceExportToCollectorPerMinute Pourcentage maximal de traces entrantes par minute à exporter vers le collecteur. Pourcentage 100

Minimum : 1

Maximum : 100

com.oracle.apm.agent.deepdive.maxTraceExportToCollectorPerMinute Nombre maximal de traces supérieures par minute à exporter vers le collecteur. Numéro 200

Minimum : 1

Maximum : 1500

com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS Intervalle auquel les données d'instantané de thread seront collectées. Millisecondes 250

Minimum : 250

Maximum : 300000

com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace Nombre maximal de clichés autorisés par trace. Numéro 16

Minimum : 1

Maximum : 16

com.oracle.apm.agent.deepdive.maxStackTraceDepthPerSnapshot Nombre maximal de trames de trace de pile collectées pour n'importe quel thread. Numéro 256

Minimum : 1

Maximum : 256

com.oracle.apm.agent.deepdive.logLevel Imprimez les journaux de plongée profonds, égaux ou supérieurs à cette valeur de propriété. Chaîne INFO

DÉBOGAGE, INFOS, AVERTISSEMENT, GRAVITÉ

com.oracle.apm.agent.deepdive.maxProcessCpuUsagePercent Utilisation maximale de l'UC de processus. Il est recommandé de maintenir l'utilisation globale de l'UC de processus sous ce seuil. Numéro 90

Minimum : 1

Maximum : 90

com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.minThreshold Seuil minimal pour maintenir une utilisation globale approfondie de l'UC. Pourcentage 3

Minimum : 1

Maximum : 5

com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold Seuil maximal pour maintenir une utilisation globale approfondie de la CPU. Pourcentage 5

Minimum : 5

Maximum : 20

com.oracle.apm.agent.deepdive.traceLifeInMS.minThreshold Seuil minimal pour une trace. Millisecondes 50

Minimum : 50

Maximum : 60000

com.oracle.apm.agent.deepdive.traceLifeInMS.maxThreshold Seuil maximal pour une trace. Millisecondes 60_000

Minimum : 60000

Maximum : 600000

Par exemple :
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

Vérifier les clichés de thread

Pour vérifier que la fonctionnalité d'instantanés de thread a été configurée correctement et que les données sont téléchargées vers Application Performance Monitoring, utilisez l'option Vue d'instantané de Visualiser les détails de trace ou d'étendue.