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 |
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 |
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.