Class SqlClientAttributesExtractor<REQUEST,RESPONSE>

java.lang.Object
io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesExtractor<REQUEST,RESPONSE>
All Implemented Interfaces:
io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor<REQUEST,RESPONSE>, io.opentelemetry.instrumentation.api.internal.SpanKeyProvider

public final class SqlClientAttributesExtractor<REQUEST,RESPONSE> extends Object
Extractor of database attributes. This class is designed with SQL (or SQL-like) database clients in mind.

It sets the same set of attributes as DbClientAttributesExtractor plus an additional DbIncubatingAttributes.DB_SQL_TABLE attribute. The raw SQL statements returned by the SqlClientAttributesGetter.getRawStatement(Object) method are sanitized before use, all statement parameters are removed.

  • Method Details

    • create

      public static <REQUEST, RESPONSE> io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor<REQUEST,RESPONSE> create(SqlClientAttributesGetter<REQUEST> getter)
      Creates the SQL client attributes extractor with default configuration.
    • builder

      public static <REQUEST, RESPONSE> SqlClientAttributesExtractorBuilder<REQUEST,RESPONSE> builder(SqlClientAttributesGetter<REQUEST> getter)
      Returns a new SqlClientAttributesExtractorBuilder that can be used to configure the SQL client attributes extractor.
    • onStart

      public void onStart(io.opentelemetry.api.common.AttributesBuilder attributes, io.opentelemetry.context.Context parentContext, REQUEST request)
      Specified by:
      onStart in interface io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor<REQUEST,RESPONSE>
    • onEnd

      public final void onEnd(io.opentelemetry.api.common.AttributesBuilder attributes, io.opentelemetry.context.Context context, REQUEST request, @Nullable RESPONSE response, @Nullable Throwable error)
      Specified by:
      onEnd in interface io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor<REQUEST,RESPONSE>
    • internalGetSpanKey

      public io.opentelemetry.instrumentation.api.internal.SpanKey internalGetSpanKey()
      This method is internal and is hence not for public use. Its API is unstable and can change at any time.
      Specified by:
      internalGetSpanKey in interface io.opentelemetry.instrumentation.api.internal.SpanKeyProvider