使用 X-Ray 開發套件之函數的追蹤 SQL SDK - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 X-Ray 開發套件之函數的追蹤 SQL SDK

SQL 攔截器

通過將 Java JDBC 攔截器的 X-Ray SDK 添加到您的數據源配置中來檢測 SQL 數據庫查詢。

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

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

這些攔截器分別位於 aws-xray-recorder-sql-postgres 和 aws-xray-recorder-sql-mysql 子模組中。他們會實作 org.apache.tomcat.jdbc.pool.JdbcInterceptor,並且與 Tomcat 連線集區相容。

注意

基於安全性目的,SQL 攔截器不會在子區段內記錄 SQL 查詢本身。

針對 Spring,請在屬性檔案中新增攔截器,然後使用 Spring Boot 的 DataSourceBuilder 建置資料來源。

範例 src/main/java/resources/application.properties - PostgreSQL JDBC 攔截器
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
範例 src/main/java/myapp/WebConfig.java - 資料來源
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(); } ... }

對於 Tomcat,請setJdbcInterceptors使用 Java 類別的 X-Ray SDK 參考來呼叫 JDBC 資料來源。

範例 src/main/myapp/model.java - 資料來源
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;");

Tomcat JDBC 數據源庫包含在適用於 Java 的 X-Ray SDK 中,但是您可以將其聲明為提供的依賴項,以記錄您使用它。

範例 pom.xml - JDBC 資料來源
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> <version>8.0.36</version> <scope>provided</scope> </dependency>

本機 SQL 跟踪裝飾器

  • 添加aws-xray-recorder-sdk-sql到您的依賴關係。

  • 裝飾您的數據庫數據源,連接或語句。

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