AWS X-Ray-SDK für Java - AWS X-Ray

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS X-Ray-SDK für Java

Das X-Ray-SDK für Java besteht aus einer Reihe von Bibliotheken für Java-Webanwendungen, die Klassen und Methoden zum Generieren und Senden von Trace-Daten an den X-Ray-Daemon bereitstellen. Zu den Trace-Daten gehören Informationen über eingehende HTTP-Anfragen, die von der Anwendung bedient werden, sowie über Aufrufe, die die Anwendung an nachgelagerte Dienste mithilfe vonAWSSDK, HTTP-Clients oder ein SQL-Datenbank-Connector. Sie können Segmente auch manuell erstellen und Debug-Informationen Anmerkungen und Metadaten hinzufügen.

Das X-Ray SDK für Java ist ein Open-Source-Projekt. Sie können das Projekt verfolgen und Issues und Pull-Requests einreichen unterGitHub:github.com/aws/aws-xray-sdk-java

Fügen Sie zunächst AWSXRayServletFilter als Servlet-Filter hinzu, um eingehende Anforderungen zu verfolgen. Ein Servlet-Filter erstellt ein Segment. Während das Segment geöffnet ist, können Sie die SDK-Client-Methoden nutzen, um dem Segment Informationen hinzuzufügen, Untersegmente zu erstellen und nachgelagerte Aufrufe rückzuverfolgen. Das SDK erfasst auch automatisch Ausnahmen, die Ihre Anwendung ausgibt, während das Segment geöffnet ist.

Ab Version 1.3 können Sie Ihre Anwendung mit aspekt-orientierter Programmierung (AOP) in Spring instrumentieren. Das bedeutet, dass Sie Ihre Anwendung instrumentieren können, während sie läuftAWS, ohne der Laufzeit Ihrer Anwendung Code hinzuzufügen.

Verwenden Sie als Nächstes das X-Ray SDK für Java, um IhreAWS SDK for JavaKunden voneinschließlich des SDK Instrumentor-Untermodulsin Ihrer Build-Konfiguration. Immer wenn Sie einen Downstream anrufenAWS-ServiceOder eine Ressource mit einem instrumentierten Client, das SDK zeichnet Informationen über den Anruf in einem Untersegment auf.AWS-Servicesund die Ressourcen, auf die Sie innerhalb der Services zugreifen, werden in der Service-Map als Downstream-Knoten angezeigt, sodass Sie Fehler und Drosselungsprobleme bei einzelnen Verbindungen leichter identifizieren können.

Wenn Sie nicht alle Downstream-Aufrufe instrumentieren möchtenAWS-Services, können Sie das Instrumentor-Untermodul weglassen und wählen, welche Clients instrumentiert werden sollen. Instrumentieren Sie einzelne Kunden nachHinzufügen einesTracingHandlerzu einemAWSSDK-Serviceclient.

Andere Submodule des X-Ray SDK für Java bieten Instrumentierung für Downstream-Aufrufe von HTTP-Web-APIs und SQL-Datenbanken. Sie könnenverwenden Sie das X-Ray SDK für Java-Versionen vonHTTPClientundHTTPClientBuilderim Apache HTTP-Submodul zur Instrumentierung von Apache HTTP-Clients. Um SQL-Anfragen zu instrumentieren, fügen Sie der Datenquelle den SDK-Interceptor hinzu.

Nachdem Sie das SDK verwendet haben, passen Sie sein Verhalten wie folgt anKonfiguration des Rekorders und des Servlet-Filters. Sie können Plugins zum Festhalten von Daten über die Datenverarbeitungsressourcen, auf denen Ihre Anwendung ausgeführt wird, hinzufügen, das Samplingverhalten durch Samplingregeln anpassen und Protokollebenen einrichten, um mehr oder weniger Informationen von dem SDK in Ihren Anwendungsprotokollen zu sehen.

Zeichnen Sie zusätzliche Informationen zu Anforderungen und den Aufgaben, die Ihre Anwendung ausführt, in Anmerkungen und Metadaten auf. Anmerkungen sind einfache Schlüsselwertpaare, die für die Verwendung mit Filterausdrücken indiziert werden, damit Sie nach Ablaufverfolgen mit bestimmten Daten suchen können. Metadateneinträge sind weniger einschränkend und können ganze Objekte und Arrays aufzeichnen – alle Daten, die in eine JSON zusammengefasst werden können.

Anmerkungen und Metadaten

Anmerkungen und Metadaten sind beliebiger Text, den Sie Segmenten mit dem X-Ray SDK hinzufügen. Anmerkungen werden für die Verwendung mit Filterausdrücken indexiert. Metadaten werden nicht indexiert, können aber im Rohsegment mit der X-Ray-Konsole oder der API angezeigt werden. Jeder, dem Sie Lesezugriff auf X-Ray gewähren, kann diese Daten einsehen.

Wenn Sie viele instrumentierte Clients in Ihrem Code haben, kann ein einzelnes Anfragesegment viele Untersegmente enthalten, eines für jeden Aufruf mit einem instrumentierten Client. Sie können Untersegmente organisieren und gruppieren, indem Sie Client-Aufrufe in benutzerdefinierten Untersegmenten zusammenfassen. Sie können ein benutzerdefiniertes Untersegment für eine ganze Funktion oder eine Code-Abschnitt erstellen und Metadaten und Anmerkungen im Untersegment festhalten, anstatt alles im übergeordneten Segment aufzuzeichnen.

Untermodule

Sie können das X-Ray SDK für Java von Maven herunterladen. Das X-Ray-SDK für Java ist je nach Anwendungsfall in Untermodule aufgeteilt und enthält eine Materialliste für die Versionsverwaltung:

Wenn Sie Maven oder Gradle verwenden, um Ihre Anwendung zu erstellen,fügen Sie das X-Ray SDK für Java zu Ihrer Build-Konfiguration hinzu.

Eine Referenzdokumentation der Klassen und Methoden des SDK finden Sie unterAWS X-RayAPI-Referenz zum SDK für Java.

Voraussetzungen

Das X-Ray SDK für Java benötigt Java 8 oder höher, Servlet API 3,AWSSDK und Jackson.

Das SDK hängt von den folgenden Bibliotheken zur Kompilierungs- und Laufzeit ab:

  • AWSSDK für Java Version 1.11.398 oder höher

  • Servlet API 3.1.0

Diese Abhängigkeiten werden in der pom.xml-Datei des SDK deklariert und automatisch eingefügt, wenn Sie Maven oder Gradle für die Build-Erstellung verwenden.

Wenn Sie eine Bibliothek verwenden, die im X-Ray SDK für Java enthalten ist, müssen Sie die mitgelieferte Version verwenden. Wenn Sie beispielsweise bereits zur Laufzeit von Jackson abhängen und für diese Abhängigkeit JAR-Dateien in Ihre Bereitstellung aufnehmen, müssen Sie diese JAR-Dateien entfernen, da das SDK JAR eigene Versionen von Jackson-Bibliotheken umfasst.

Abhängigkeitsmanagement

Das X-Ray SDK für Java ist bei Maven erhältlich:

  • Gruppecom.amazonaws

  • Artefaktaws-xray-recorder-sdk-bom

  • Version2.11.0

Wenn Sie Ihre Anwendung mit Maven erstellen, fügen Sie das SDK als Abhängigkeit in Ihrer pom.xml-Datei hinzu.

Beispiel pom.xml - Abhängigkeiten
<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-xray-recorder-sdk-bom</artifactId> <version>2.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-xray-recorder-sdk-core</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-xray-recorder-sdk-apache-http</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-xray-recorder-sdk-aws-sdk</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-xray-recorder-sdk-aws-sdk-instrumentor</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-xray-recorder-sdk-sql-postgres</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-xray-recorder-sdk-sql-mysql</artifactId> </dependency> </dependencies>

Für Gradle fügen Sie das SDK als Kompilierungszeitabhängigkeit in Ihrer build.gradle-Datei hinzu.

Beispiel build.gradle – Abhängigkeiten
dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile("org.springframework.boot:spring-boot-starter-test") compile("com.amazonaws:aws-java-sdk-dynamodb") compile("com.amazonaws:aws-xray-recorder-sdk-core") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk-instrumentor") compile("com.amazonaws:aws-xray-recorder-sdk-apache-http") compile("com.amazonaws:aws-xray-recorder-sdk-sql-postgres") compile("com.amazonaws:aws-xray-recorder-sdk-sql-mysql") testCompile("junit:junit:4.11") } dependencyManagement { imports { mavenBom('com.amazonaws:aws-java-sdk-bom:1.11.39') mavenBom('com.amazonaws:aws-xray-recorder-sdk-bom:2.11.0') } }

Wenn Sie Elastic Beanstalk verwenden, um Ihre Anwendung bereitzustellen, können Sie Maven oder Gradle verwenden, um bei jeder Bereitstellung auf der Instanz zu erstellen, anstatt ein großes Archiv zu erstellen und hochzuladen, das all Ihre Abhängigkeiten enthält. Für ein Beispiel, bei dem Gradle verwendet wird, sehen Sie sich die Beispielanwendung an.