Skip to content

Latest commit

 

History

History
58 lines (43 loc) · 2.57 KB

README.md

File metadata and controls

58 lines (43 loc) · 2.57 KB

Exposed

Maven Central GitHub Unit Tests Actions Status

Exposed OpenTracing

OpenTracing instrumentation of Exposed. Observe database transactions with spans tagged with query strings, table names and more. Logs execution start/ending, transaction commit and rollback. Santise queries to safeguard PII.

Usage

In an application with a tracer registered in GlobalTracer, replace your Exposed transaction with a tracedTransaction:

tracedTransaction(contains = NoPII) {
    Cities.insert {
        it[name] = "St. Petersburg"
    } 
}

The execution will be wrapped with a child span of the previously active span, which will be tagged with the SQL query. If your query contains PII that you do not want to leak to the tracing system, pass the sensitive strings to the call as follows:

tracedTransaction(contains = PII, name, password) {
    Users.insert {
        it[Users.username] = username
        it[Users.name] = name
        it[Users.password] = password
    } 
}

The name and password strings with be replaced with <REDACTED> in the query tagged on the span. If no strings are password with contains = PII or if a string is passed with contains = NoPII, a warn log will be written, and the transaction will execute without tracing.

The resulting ExposedTransaction span looks as follows in Jaeger:

Installation

From Maven Central.

Maven

Add the following dependency to your pom.xml:

<dependency>
  <groupId>com.github.fstien</groupId>
  <artifactId>exposed-opentracing</artifactId>
  <version>VERSION_NUMBER</version>
</dependency>

Gradle

Add the following to your dependencies in your build.gradle:

implementation 'com.github.fstien:exposed-opentracing:VERSION_NUMBER'

Example

For an example Ktor application, see Exposed-OpenTracing-example.