Configurer des instantanés d'unité d'exécution dans le traceur APM

La fonction d'instantanés d'unité d'exécution permet la collecte d'instantanés d'une pile d'unités d'exécution qui peut être utilisée pour l'analyse en profondeur.

Les instantanés d'unité d'exécution permettent de collecter des traces telles que des instantanés de pile d'unités d'exécution, une surcharge de mémoire d'unité centrale, une surcharge d'unité centrale d'unité d'exécution et une incidence sur la trace. Il collecte les instantanés de la pile de fils et les données liées à la pile, telles que l'état et les verrous, à un intervalle spécifique.

Les utilisateurs peuvent activer la collection d'instantanés de pile de fils pour le vidage des intervalles de pile. Il fournit une visibilité de la pile de codes utilisateur.

L'intervalle de temps par défaut de la collecte des instantanés d'unité d'exécution est de 250 ms.

La version 1.4 du traceur APM ou une version supérieure prend en charge les instantanés d'unité d'exécution et est désactivée par défaut.

Le traceur APM et l'agent APM prennent en charge les instantanés de thread. Pour plus de détails sur la configuration des instantanés d'unité d'exécution dans l'agent APM, voir Configurer les instantanés d'unité d'exécution dans l'agent APM.

Activer les instantanés d'unité d'exécution dans le traceur APM

L'instantané d'unité d'exécution est intégré à ApmTracer. Il sera initialisé lors de la création de l'objet ApmTracer.

Si vous utilisez Helidon, passez à Analyseurs d'unités d'exécution dans Helidon.

L'exemple ci-dessous présente de nombreuses méthodes de configuration, notamment celle des instantanés d'unité d'exécution : withCollectDeepDiveTraceSnapshot avec la valeur (true). Les instantanés d'unité d'exécution 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, voir Instantiquer le traceur APM.

Méthodes de configuration des instantanés de fil

Les méthodes de configuration suivantes sont disponibles :

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 pour les exporter vers le collecteur. Numéro 200

Minimum : 1

Maximum : 1500

withSnapshotCollectionIntervalInMS Intervalle de collecte des données d'instantané de fil. Millisecondes 250

Minimum : 250

Maximum : 300000

withMaxSnapshotsPerTrace Nombre maximal d'instantané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 fil. Numéro 256

Minimum : 1

Maximum : 256

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

DÉBOGAGE, INFOS, AVERTISSEMENT, GRAVE

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

Minimum : 1

Maximum : 90

withDeepDiveCpuUsagePercent Seuil minimal pour maintenir l'utilisation globale en profondeur de l'UC. Pourcentage 3

Minimum : 1

Maximum : 5

  Seuil maximal pour tenir à jour l'utilisation globale de l'UC en profondeur. Pourcentage 5

Minimum : 5

Maximum : 20

withTraceLifeInMS Seuil minimum 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 d'unité d'exécution dans Helidon

Les instantanés d'unité d'exécution sont pris en charge dans Helidon. Il sera initialisé lors de la création de l'objet ApmTracer dans Helidon.

Pour activer les instantanés d'unité d'exécution, mettez à jour le fichier YAML de Helidon et ajoutez la propriété collect-deepdive-trace-snapshots et réglez-la à 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 à Helidon, voir Utiliser le traceur APM à Helidon.

Propriétés de configuration pour Helidon

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

Nom de 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 pour les exporter vers le collecteur. Numéro 200

Minimum : 1

Maximum : 1500

com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS Intervalle de collecte des données d'instantané de fil. Millisecondes 250

Minimum : 250

Maximum : 300000

com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace Nombre maximal d'instantané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 fil. Numéro 256

Minimum : 1

Maximum : 256

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

DÉBOGAGE, INFOS, AVERTISSEMENT, GRAVE

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

Minimum : 1

Maximum : 90

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

Minimum : 1

Maximum : 5

com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold Seuil maximal pour tenir à jour l'utilisation globale de l'UC en profondeur. Pourcentage 5

Minimum : 5

Maximum : 20

com.oracle.apm.agent.deepdive.traceLifeInMS.minThreshold Seuil minimum 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 instantanés des unités d'exécution

Pour vérifier que la fonction d'instantanés d'unité d'exécution a été configurée correctement et que les données sont chargées dans Application Performance Monitoring, utilisez l'option Vue d'instantané de Voir les détails de la trace ou de l'étendue.