Hybridmodus für APM-Java-Agent konfigurieren
Mit dem Hybridmodus APM Java Agent, der auch als Hybridmodus APM Agent bezeichnet wird, können die Agent-Sondierungsspanne und die Anwendungsspanne einen vollständigen Trace bilden.
Die APM Agent-Hybridmodus-Funktion kombiniert sowohl die Bytecode-Instrumentierung als auch die manuelle OpenTracing/OpenTelemetry-Instrumentierung, um einen vollständigen Überblick über den Anwendungsfluss zu erhalten.
Es stellt einen Mechanismus bereit, mit dem sichergestellt wird, dass OpenTracing- und OpenTelemetry-Librarys in eine gemeinsame ClassLoader geladen werden, auf die der APM-Agent und die gesamte Anwendung zugreifen können. Daher können Spans in der Anwendung erstellt werden und werden automatisch mit den Spans verknüpft, die von der APM-Agent-Probe erstellt werden.
Von der APM Agent-Probe erstellte Spans werden automatisch mit jeder aktivierten Spanne verknüpft.
Voraussetzungen
- Der APM-Agent ist voll funktionsfähig, bevor die Eigenschaft aktiviert wird.
Verwenden Sie für OpenTelemetry die Eigenschaft
com.oracle.apm.agent.otel=true
.Hinweis
Für OpenTelemetry ist Java 8 und höher erforderlich. - Die Anwendung muss entweder die OpenTracing-Tracerinstanz mit
GlobalTracer.get()
abrufen oder die OpenTelemetry-Instanz mit der MethodeGlobalOpenTelemetry.get()
abrufen. - Dieselbe Library-Version.
Für OpenTracing verwenden der APM-Agent und die Anwendung dieselbe OpenTracing-Bibliotheksversion.
Für OpenTelemetry verwenden der APM-Agent und die Anwendung dieselbe OpenTelemetry-Bibliotheksversion. Weitere Informationen finden Sie unter APM-Java-Agent für die Arbeit mit OpenTelemetry konfigurieren.
Hybridmodus für APM-Agent aktivieren
Der Hybridmodus für den APM-Agent ist standardmäßig aktiviert.
Um sie zu deaktivieren, verwenden Sie die Eigenschaft: com.oracle.apm.agent.hybrid=false
. Wenn jedoch die Eigenschaft OpenTelemetry: com.oracle.apm.agent.otel=true
festgelegt ist, ist der Hybridmodus immer aktiviert.
Eigenschaftstyp und Beschreibung | Eigenschaften | Beispiel |
---|---|---|
AgentConfig.properties Datei |
com.oracle.apm.agent.hybrid |
com.oracle.apm.agent.hybrid=true |
Systemeigenschaften Systemeigenschaften aktualisieren. |
com.oracle.apm.agent.hybrid |
-Dcom.oracle.apm.agent.hybrid=true |
Umgebungsvariablen Umgebungsvariablen aktualisieren. |
com_oracle_apm_agent_hybrid |
Windows:
Linux:
|
Die Einstellung der Eigenschaft ist der einzige Schritt, der für die meisten Anwendungsserver und Microservices erforderlich ist. Einige Anwendungsserver können jedoch unterschiedliche Klassifizierungslogiken und Klassendefinitionsisolationen aufweisen. Um sicherzustellen, dass der APM-Agent dieselbe OpenTracing- und OpenTelemetry-Klassendefinition verwendet, ist möglicherweise der folgende zusätzliche Schritt erforderlich:
-
Kopieren Sie die Bibliotheken OpenTracing und OpenTelemetry aus dem Verzeichnis
oracle-apm-agent/install/<version>/lib/ext
in das Verzeichnisoracle-apm-agent/bootstrap
.
Im obigen Schritt wird sichergestellt, dass der APM-Agent und alle Anwendungen die kopierten OpenTracing- und OpenTelemetry-Bibliotheken verwenden. Daher werden dieselben OpenTracing- und OpenTelemetry-Klassendefinitionen verwendet.
APM Agent- und OpenTracing- und OpenTelemetry-Librarys: OpenTracing-Librarys der Version 0.33 und OpenTelemetry-Librarys der Version 1.38.0 sind im APM-Agent enthalten. Wenn die Anwendung die spezifische API der OpenTracing-Version 0.32 verwenden muss, können Sie die OpenTracing 0.32-Librarys in das Verzeichnis oracle-apm-agent/bootstrap
kopieren. APM unterstützt sowohl OpenTracing 0.32- als auch 0.33-Bibliotheken. Damit die Anwendung eine andere OpenTelemetry-Version verwenden kann, Konfigurieren Sie den APM-Java-Agent für die Arbeit mit OpenTelemetry.
-
Wenn OpenTracing-Bibliotheken explizit im Classpath von Microservices enthalten sind.
-
Wenn der Anwendungsserver-Classloader dem übergeordneten Classloader keine Priorität einnimmt. Beispiel: Tomcat.
Häufig gestellte Fragen
- Warum hat sich die Agent-Probe wie JDBC-Spanne nicht mit der Anwendungsspanne verknüpft, selbst wenn die JDBC-Aufrufe innerhalb des Anwendungsbereichs durchgeführt wurden?
A: Damit die Agent-Probe eine Span-Verknüpfung erstellen kann, muss der Anwendungsbereich vor JDBC-Aufrufen aktiviert werden.
- Warum wurden Agent Sondenspans nicht mit Helidon-Spans verknüpft?
A: Wenn Helidon erstellte Spans nicht aktiviert sind, können Sie eine neue Spanne erstellen und mit dem übergeordneten SpanContext aus ServerRequest aktivieren. Danach sind alle Agent-Probespans untergeordnete Elemente der neuen Spanne.
- Wie funktioniert der Hybridmodus des Agents, wenn meine Anwendung die OpenTracing-Version 0.32 eingebettet hat, während der APM-Agent die OpenTracing-Version 0.33 hat?
A: In diesen Fällen sollten Sie die Anwendung aktualisieren, um OpenTracing 0.33 zu verwenden.
Wenn dies nicht möglich ist, können Sie die OpenTracing-Librarys in oracle-apm-agent/install/<version>/lib/ext in 0.32 ändern. Der APM-Agent ist mit den OpenTracing-Versionen 0.32 und 0.33 kompatibel.
- Warum haben APM-Agent und meine Anwendung nach der Aktivierung des Hybridmodus für Agents separate Traces auf Anforderung erstellt?
A: Prüfen Sie die Konfigurationsschritte, und bestätigen Sie, dass die Eigenschaft ordnungsgemäß festgelegt wurde. Weitere Informationen finden Sie unter Hybridmodus für APM-Agent aktivieren.
Wenn das Problem weiterhin besteht, müssen Sie möglicherweise OpenTracing-Librarys in oracle-apm-agent/bootstrap kopieren.
- Kann ich den Hybridmodus von Agent (1.3+) mit vorhandener Anwendung verwenden, die mit APM Tracer erstellt wurde (1.2 oder darunter)?
A: Nein. Sowohl der bereitgestellte APM-Agent als auch der APM-Tracer, der für die Anwendungserstellung verwendet wird, müssen mindestens 1,3 betragen.
- Warum wird der Servicename in AgentConfig.properties für Tracer mit unterschiedlicher Servicenamenseinstellung verwendet, wenn der Hybridmodus aktiviert ist?
A: Im Hybridmodus startet APM Agent einen Tracer und wird als globaler Tracer registriert. Wenn ein Tracer von der Anwendung oder dem Microservice gestartet wird, ist die Tracerinstanz tatsächlich die globale Tracerinstanz. Daher verwendet er denselben Servicenamen wie in der Datei
AgentConfig.properties
definiert. Um einen anderen Servicenamen für verschiedene Agent-Instanzen zu verwenden, muss der Servicename mit der java-Systemeigenschaft oder Umgebungsvariable überschrieben werden. - Wie wird der Servicename in der Datei
AgentConfig.properties
außer Kraft gesetzt?A: Sie können den Servicenamen außer Kraft setzen, indem Sie die java-Systemeigenschaft (
com.oracle.apm.agent.service.name
) oder die Umgebungsvariable (com_oracle_apm_agent_service_name
) festlegen. - Wie kann ich den Hybridmodus für Micronaut-Anwendungen aktivieren?
- Befolgen Sie die oben unter Hybridmodus für APM-Java-Agent konfigurieren beschriebenen Anweisungen.
- Fügen Sie den APM Micronaut-Tracer als Abhängigkeit in die Datei
pom.xml
der Anwendung ein. Weitere Informationen finden Sie unter APM-Tracer in Micronaut verwenden.