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