Thread-Snapshots in APM-Tracer konfigurieren
Mit der Thread-Snapshots-Funktion können Sie Thread-Stack-Snapshots sammeln, die für eine tiefgreifende Tauchanalyse verwendet werden können.
Mit den Thread-Snapshots können Traces wie Thread-Stack-Snapshots, Thread-Speicher-Overhead, Thread-CPU-Overhead und GC-Auswirkungen auf Trace erfasst werden. Er erfasst die Thread-Stack-Snapshots und stapelbezogenen Daten wie Status und Sperren in einem bestimmten Intervall.
Benutzer können die Erfassung von Thread-Stack-Snapshots aktivieren, um Stack-Dumps von Spans zu erstellen. Sie bietet Sichtbarkeit für Benutzercode-Stacks.
Das Standardzeitintervall für die Thread-Snapshots-Erfassung beträgt 250 ms.
APM Tracer Version 1.4 oder höher unterstützt Thread-Snapshots und ist standardmäßig deaktiviert.
Unterstützungs-Thread-Snapshots für APM-Tracer und APM-Agent. Weitere Informationen zum Konfigurieren von Thread-Snapshots in APM Agent finden Sie unter Thread-Snapshots in APM Agent konfigurieren.
Thread-Snapshots in APM-Tracer aktivieren
Thread-Snapshot ist in ApmTracer
integriert. Sie wird beim Erstellen des ApmTracer
-Objekts initialisiert.
Wenn Sie Helidon verwenden, fahren Sie mit Thread Snapshots in Helidon fort.
Das folgende Beispiel zeigt viele Konfigurationsmethoden, darunter die Methode für Thread-Snapshots: withCollectDeepDiveTraceSnapshot
mit dem Wert (true)
. Thread-Snapshots werden von der Build-Funktion von ApmTracer
aufgerufen:
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();
Informationen zur Instanziierung von APM-Tracer finden Sie unter Instantiate APM Tracer.
Konfigurationsmethoden für Thread-Snapshots
Die folgenden Konfigurationsmethoden sind verfügbar:
Methode | Beschreibung | Einheit | Standardwert | Unterstützte Werte |
---|---|---|---|---|
withMaxPercentTraceExportToCollectorPerMinute | Maximaler Prozentsatz der eingehenden Traces pro Minute, um sie in den Collector zu exportieren. | Prozentsatz | 100 |
Minimum:1 Maximum: 100 |
withMaxTraceExportToCollectorPerMinute | Maximale Anzahl der Top Traces pro Minute, um sie in den Collector zu exportieren. | Nummer | 2000 |
Minimum:1 Maximum: 1500 |
withSnapshotCollectionIntervalInMS | Intervall, in dem Thread-Snapshot-Daten erfasst werden. | Millisekunden | 250 |
Minimum:250 Maximum: 300000 |
withMaxSnapshotsPerTrace | Maximal zulässige Anzahl an Snapshots pro Trace. | Nummer | 16 |
Minimum: 1 Maximum: 16 |
withMaxStackTraceDepthPerSnapshot | Maximal gesammelte Stacktrace Frames für jeden Thread. | Nummer | 256 |
Minimum: 1 Maximum: 256 |
withLogLevel | Drucken Sie tiefe Tauchlogs, die diesem Eigenschaftswert entsprechen oder darüber liegen. | Zeichenfolge | INFO |
DEBUG, INFO, WARNUNG, SCHWERWIEGEND |
withMaxProcessCpuUsagePercent | Maximale Prozess-CPU-Auslastung. Es wird empfohlen, die gesamte CPU-Auslastung des Prozesses unter diesem Schwellenwert zu halten. | Nummer | 90 |
Minimum: 1 Maximum: 90 |
withDeepDiveCpuUsagePercent | Mindestschwellenwert für die allgemeine tiefe CPU-Auslastung. | Prozentsatz | 3 |
Minimum: 1 Maximum: 5 |
Maximaler Schwellenwert für die allgemeine tiefe CPU-Auslastung. | Prozentsatz | 5 |
Minimum: 5 Maximum: 20 |
|
withTraceLifeInMS | Minimaler Schwellenwert für ein Trace. | Millisekunden | 50 |
Minimum: 50 Maximum: 60000 |
Maximaler Schwellenwert für ein Trace. | Millisekunden | 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();
Thread-Snapshots in Helidon
Thread-Snapshots werden in Helidon unterstützt. Sie wird bei der ApmTracer
-Objekterstellung in Helidon initialisiert.
Um Thread-Snapshots zu aktivieren, aktualisieren Sie die Datei YAML
von Helidon, fügen Sie die Eigenschaft collect-deepdive-trace-snapshots
hinzu, und setzen Sie sie auf true
.
Beispiel:
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
Informationen zur Verwendung von APM Tracer in Helidon finden Sie unter APM Tracer in Helidon verwenden.
Konfigurationseigenschaften für Helidon
Um Thread-Snapshots in Helidon zu konfigurieren, aktualisieren Sie die YAML-Datei von Helidon mit den folgenden Eigenschaften:
Eigenschaftsname | Beschreibung | Einheit | Standardwert | Unterstützte Werte |
---|---|---|---|---|
com.oracle.apm.agent.deepdive.maxPercentTraceExportToCollectorPerMinute | Maximaler Prozentsatz der eingehenden Traces pro Minute, um sie in den Collector zu exportieren. | Prozentsatz | 100 |
Minimum:1 Maximum: 100 |
com.oracle.apm.agent.deepdive.maxTraceExportToCollectorPerMinute | Maximale Anzahl der Top Traces pro Minute, um sie in den Collector zu exportieren. | Nummer | 2000 |
Minimum:1 Maximum: 1500 |
com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS | Intervall, in dem Thread-Snapshot-Daten erfasst werden. | Millisekunden | 250 |
Minimum:250 Maximum: 300000 |
com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace | Maximal zulässige Anzahl an Snapshots pro Trace. | Nummer | 16 |
Minimum: 1 Maximum: 16 |
com.oracle.apm.agent.deepdive.maxStackTraceDepthPerSnapshot | Maximal gesammelte Stacktrace Frames für jeden Thread. | Nummer | 256 |
Minimum: 1 Maximum: 256 |
com.oracle.apm.agent.deepdive.logLevel | Drucken Sie tiefe Tauchlogs, die diesem Eigenschaftswert entsprechen oder darüber liegen. | Zeichenfolge | INFO |
DEBUG, INFO, WARNUNG, SCHWERWIEGEND |
com.oracle.apm.agent.deepdive.maxProcessCpuUsagePercent | Maximale Prozess-CPU-Auslastung. Es wird empfohlen, die gesamte CPU-Auslastung des Prozesses unter diesem Schwellenwert zu halten. | Nummer | 90 |
Minimum: 1 Maximum: 90 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.minSchwellenwert | Mindestschwellenwert für die allgemeine tiefe CPU-Auslastung. | Prozentsatz | 3 |
Minimum: 1 Maximum: 5 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold | Maximaler Schwellenwert für die allgemeine tiefe CPU-Auslastung. | Prozentsatz | 5 |
Minimum: 5 Maximum: 20 |
com.oracle.apm.agent.deepdive.traceLifeInMS.minSchwellenwert | Minimaler Schwellenwert für ein Trace. | Millisekunden | 50 |
Minimum: 50 Maximum: 60000 |
com.oracle.apm.agent.deepdive.traceLifeInMS.maxThreshold | Maximaler Schwellenwert für ein Trace. | Millisekunden | 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
Thread-Snapshots überprüfen
Um zu prüfen, ob die Funktion "Thread-Snapshots" richtig konfiguriert wurde und Daten in Application Performance Monitoring hochgeladen werden, verwenden Sie die Option Snapshot-Ansicht unter Trace- oder Span-Details anzeigen.