Open DSkoufis opened 3 months ago
https://github.com/DSkoufis/quarkus-otel-lambda/blob/main/terraform/lambda.tf#L22 It is an ADOT lambda layer specific issue. I will cc ADOT layer layer owner. As a workaround you can build your private Lambda layer from scratch from this repo https://github.com/open-telemetry/opentelemetry-lambda, or using AWS Lambda java 11 Runtime instead.
Component(s)
aws-xray-propagator
What happened?
Description
I'm trying to create a Quarkus native lambda and enable XRay tracing. We're making use of the
quarkus-opentelemetry
extension which offers some automatic instrumentation of various Quarkus features, i.e@WithSpan
.We've enabled the Active tracing mode in the Lambda but we are unable to correctly propagate the XRay context to that extension. It was suggested to use the
io.opentelemetry.contrib:opentelemetry-aws-xray-propagator
but unfortunately this didn't help. And looking at the implementation I think this is because of theAwsXrayPropagator
not selecting the correct header: https://github.com/open-telemetry/opentelemetry-java-contrib/blob/6a44e04a76bbe6b9844555f9b37e777c2a23103f/aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/AwsXrayPropagator.java#L48In the AWS docs it looks like that variable is not populated in the
provided
runtimes (and debugging the lambda confirms that):Steps to Reproduce
A reproducer is provided here: https://github.com/DSkoufis/quarkus-otel-lambda/tree/main
Expected Result
Trace context to be set correctly using XRay's properties
Actual Result
The propagator is unable to extract the context meaning that a new trace is created:
Component version
1.32.0-alpha
Log output
No response
Additional context
While debugging the quarkus native lambda I noticed that we can still get the headers through using the
com.amazonaws.xray.traceHeader
.The most relevant example I've found is this: https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/aws-lambda/aws-lambda-core-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambdacore/v1_0/internal/AwsXrayEnvSpanLinksExtractor.java#L29
through the
io.opentelemetry.instrumentation:opentelemetry-aws-lambda-core-1.0
module.