As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Rastrear consultas SQL com o X-Ray SDK para Java
Interceptores SQL
Instrumente consultas SQL adicionando o interceptor JDBC do X-Ray SDK para Java à configuração da fonte de dados.
-
PostgreSQL:
com.amazonaws.xray.sql.postgres.TracingInterceptor
-
MySQL:
com.amazonaws.xray.sql.mysql.TracingInterceptor
Esses interceptores estão nos aws-xray-recorder-sql-postgres e aws-xray-recorder-sql-mysqlsubmódulos, respectivamente. Eles implementam org.apache.tomcat.jdbc.pool.JdbcInterceptor
e são compatíveis com grupos de conexão do Tomcat.
nota
Interceptores SQL não registram a consulta SQL em si dentro de subsegmentos para fins de segurança.
Para Spring, adicione o interceptor em um arquivo de propriedades e crie a fonte de dados com o DataSourceBuilder
do Spring Boot.
exemplo src/main/java/resources/application.properties
– interceptador 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
exemplo src/main/java/myapp/WebConfig.java
: fonte de dados
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();
}
...
}
Para Tomcat, chame setJdbcInterceptors
na fonte de dados JDBC com uma referência à classe do X-Ray SDK para Java.
exemplo src/main/myapp/model.java
: fonte de dados
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;")
;
A biblioteca da fonte de dados JDBC Tomcat está incluída no X-Ray SDK para Java, mas é possível declará-la como uma dependência fornecida para documentar que você a usa.
exemplo pom.xml
– fonte de dados JDBC
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>
Decorador de rastreamento SQL nativo
-
Adicione
aws-xray-recorder-sdk-sql
às suas dependências. -
Decore sua fonte de dados, conexão ou declaração Decorate banco de dados.
dataSource = TracingDataSource.decorate(dataSource) connection = TracingConnection.decorate(connection) statement = TracingStatement.decorateStatement(statement) preparedStatement = TracingStatement.decoratePreparedStatement(preparedStatement, sql) callableStatement = TracingStatement.decorateCallableStatement(callableStatement, sql)