Verfolgen von SQL-Abfragen mit dem X-Ray SDK for 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.

Verfolgen von SQL-Abfragen mit dem X-Ray SDK for Java

Anmerkung

End-of-support Hinweis — Am 25. Februar 2027 wird AWS X-Ray die Unterstützung für AWS X-Ray SDKs und Daemon einstellen. Nach dem 25. Februar 2027 werden Sie keine Updates oder Releases mehr erhalten. Weitere Informationen zum Zeitplan für den Support finden Sie unterZeitplan für das Ende des Supports für X-Ray SDK und Daemon. Wir empfehlen die Migration zu OpenTelemetry. Weitere Informationen zur Migration zu OpenTelemetry finden Sie unter Migration von X-Ray-Instrumentierung zu OpenTelemetry Instrumentierung.

SQL-Interzeptoren

Instrumentieren Sie SQL-Datenbankabfragen, indem Sie den X-Ray SDK for Java JDBC Interceptor zu Ihrer Datenquellenkonfiguration hinzufügen.

  • PostgreSQLcom.amazonaws.xray.sql.postgres.TracingInterceptor

  • MySQLcom.amazonaws.xray.sql.mysql.TracingInterceptor

Diese Interceptors befinden sich im aws-xray-recorder-sql-postgres- bzw. aws-xray-recorder-sql-mysql-Untermodul. Sie implementieren org.apache.tomcat.jdbc.pool.JdbcInterceptor und sind mit Tomcat-Verbindungspools kompatibel.

Anmerkung

Aus Sicherheitsgründen zeichnen die SQL Interceptors die SQL-Abfrage selbst innerhalb von Teilsegmenten nicht auf.

Für Spring fügen Sie der Eigenschaftendatei einen Interceptor hinzu und erstellen Sie die Datenquelle mit dem DataSourceBuilder von Spring Boot.

Beispiel src/main/java/resources/application.properties – PostgreSQL-JDBC-Interceptor
spring.datasource.continue-on-error=true spring.jpa.show-sql=false spring.jpa.hibernate.ddl-auto=create-drop spring.datasource.jdbc-interceptors=com.amazonaws.xray.sql.postgres.TracingInterceptor spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL94Dialect
Beispiel src/main/java/myapp/WebConfig.java – Datenquelle
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import javax.servlet.Filter; import javax.sql.DataSource; import java.net.URL; @Configuration @EnableAutoConfiguration @EnableJpaRepositories("myapp") public class RdsWebConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { logger.info("Initializing PostgreSQL datasource"); return DataSourceBuilder.create() .driverClassName("org.postgresql.Driver") .url("jdbc:postgresql://" + System.getenv("RDS_HOSTNAME") + ":" + System.getenv("RDS_PORT") + "/ebdb") .username(System.getenv("RDS_USERNAME")) .password(System.getenv("RDS_PASSWORD")) .build(); } ... }

Rufen Sie für Tomcat die JDBC-Datenquelle mit einem Verweis setJdbcInterceptors auf die Klasse X-Ray SDK for Java auf.

Beispiel src/main/myapp/model.java – Datenquelle
import org.apache.tomcat.jdbc.pool.DataSource; ... DataSource source = new DataSource(); source.setUrl(url); source.setUsername(user); source.setPassword(password); source.setDriverClassName("com.mysql.jdbc.Driver"); source.setJdbcInterceptors("com.amazonaws.xray.sql.mysql.TracingInterceptor;");

Die Tomcat JDBC Data Source-Bibliothek ist im X-Ray SDK for Java enthalten, aber Sie können sie als bereitgestellte Abhängigkeit von dem Dokument deklarieren, in dem Sie sie verwenden.

Beispiel pom.xml – JDBC-Datenquelle
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> <version>8.0.36</version> <scope>provided</scope> </dependency>

Nativer SQL Tracing Decorator

  • Fügen Sie Ihre aws-xray-recorder-sdk-sqlAbhängigkeiten hinzu.

  • Dekorieren Sie Ihre Datenbank-Datenquelle, Verbindung oder Anweisung.

    dataSource = TracingDataSource.decorate(dataSource) connection = TracingConnection.decorate(connection) statement = TracingStatement.decorateStatement(statement) preparedStatement = TracingStatement.decoratePreparedStatement(preparedStatement, sql) callableStatement = TracingStatement.decorateCallableStatement(callableStatement, sql)