OpenTelemetry for Amazon Services

Quarkus Amazon Services facilitates integration of the AWS SDK instrumentation.

Adding the quarkus-opentelemetry extension will automatically inject an interceptor with default AwsSdkTelemetry configuration in all produced extension clients that have opted into instrumentation. This is achieved by setting the configuration property quarkus.<extension>.telemetry.enabled to true. This setting is set to false by default.

Quarkus Amazon Services supports the OpenTelemetry Autoconfiguration for Traces. The configurations match what you can see at OpenTelemetry SDK Autoconfigure with the quarkus.* prefix.

If necessary, you can provide your own AwsSdkTelemetry instance used to instrument all clients.

package org.acme;

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkTelemetry;
import io.quarkus.arc.Unremovable;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Singleton;

@ApplicationScoped
public class MyProducer {

    @Produces
    @Singleton
    @Unremovable
    public AwsSdkTelemetry myTelemetry() {
        return AwsSdkTelemetry.builder(OpenTelemetry.noop()).build();
    }
}

Configuration Reference

Configuration property fixed at build time - All other configuration properties are overridable at runtime

Configuration property

Type

Default

Configures the messaging headers that will be captured as span attributes.

Environment variable: QUARKUS_OTEL_INSTRUMENTATION_MESSAGING_EXPERIMENTAL_CAPTURE_HEADERS

list of string

Set whether to capture the consumer message receive telemetry in messaging instrumentation. Note that this will cause the consumer side to start a new trace, with only a span link connecting it to the producer trace.

Environment variable: QUARKUS_OTEL_INSTRUMENTATION_MESSAGING_EXPERIMENTAL_RECEIVE_TELEMETRY_ENABLED

boolean

false

Sets whether experimental attributes should be set to spans. These attributes may be changed or removed in the future, so only enable this if you know you do not require attributes filled by this instrumentation to be stable across versions.

Environment variable: QUARKUS_OTEL_INSTRUMENTATION_AWS_SDK_EXPERIMENTAL_SPAN_ATTRIBUTES

boolean

false

Sets whether the io.opentelemetry.context.propagation.TextMapPropagator configured in the provided OpenTelemetry should be used to inject into supported messaging attributes (currently only SQS; SNS may follow). In addition, the X-Ray propagator is always used. Using the messaging propagator is needed if your tracing vendor requires special tracestate entries or legacy propagation information that cannot be transported via X-Ray headers. It may also be useful if you need to directly connect spans over messaging in your tracing backend, bypassing any intermediate spans/X-Ray segments that AWS may create in the delivery process. This option is off by default. If enabled, on extraction the configured propagator will be preferred over X-Ray if it can extract anything.

Environment variable: QUARKUS_OTEL_INSTRUMENTATION_AWS_SDK_EXPERIMENTAL_USE_PROPAGATOR_FOR_MESSAGING

boolean

false

Sets whether errors returned by each individual HTTP request should be recorded as events for the SDK span. This option is off by default. If enabled, the HTTP error code and the error message will be captured and associated with the span. This provides detailed insights into errors on a per-request basis.

Environment variable: QUARKUS_OTEL_INSTRUMENTATION_AWS_SDK_EXPERIMENTAL_RECORD_INDIVIDUAL_HTTP_ERROR

boolean

false