diff --git a/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsApplicationSignalsCustomizerProvider.java b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsApplicationSignalsCustomizerProvider.java index 0c262b3f5e..60f0b7cd7f 100644 --- a/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsApplicationSignalsCustomizerProvider.java +++ b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsApplicationSignalsCustomizerProvider.java @@ -53,6 +53,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Pattern; +import software.amazon.opentelemetry.javaagent.providers.AwsSpanExporter.OtlpAwsSpanExporterBuilder; /** * This customizer performs the following customizations: diff --git a/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporter.java b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/OtlpAwsSpanExporter.java similarity index 98% rename from awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporter.java rename to awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/OtlpAwsSpanExporter.java index 180bd89209..6b0ecf17e2 100644 --- a/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporter.java +++ b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/OtlpAwsSpanExporter.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.opentelemetry.javaagent.providers; +package software.amazon.opentelemetry.javaagent.providers.AwsSpanExporter; import io.opentelemetry.exporter.internal.otlp.traces.TraceRequestMarshaler; import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter; diff --git a/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporterBuilder.java b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/OtlpAwsSpanExporterBuilder.java similarity index 94% rename from awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporterBuilder.java rename to awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/OtlpAwsSpanExporterBuilder.java index a92a6a8128..45f0b7d66d 100644 --- a/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporterBuilder.java +++ b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/OtlpAwsSpanExporterBuilder.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.opentelemetry.javaagent.providers; +package software.amazon.opentelemetry.javaagent.providers.AwsSpanExporter; import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter; diff --git a/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/README.md b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/README.md new file mode 100644 index 0000000000..88faf4ccfa --- /dev/null +++ b/awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/AwsSpanExporter/README.md @@ -0,0 +1,27 @@ +# ADOT X-Ray OTLP Trace Export Configuration + +This guide explains how to automatically configure ADOT environment variables for exporting traces to [AWS X-Ray OTLP endpoint](https://docs.aws.amazon.com/xray/latest/devguide/xray-opentelemetry.html) + +## Prerequisites + +1. Transaction Search must be enabled in order to send spans to the Xray OTLP endpoint. See [this doc](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Transaction-Search-getting-started.html) on how to enable Transaction Search. + +2. Ensure the AWS IAM role used for credentials in your application environment has [AWSXRayWriteOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSXrayWriteOnlyAccess.html) managed policy attached to it. + +## Environment Variables + +Set the following environment variables to **PROPERLY** configure trace export with SigV4 authentication: + +```shell +# Set X-Ray endpoint (replace AWS_REGION with your region) +OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray..amazonaws.com/v1/traces + +# Configure OTLP export protocol +OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf + +OTEL_METRICS_EXPORTER=none +OTEL_LOGS_EXPORTER=none +OTEL_RESOURCE_ATTRIBUTES="service.name=" + +# Disable application signals (they will be generated in CloudWatch backend) +OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false diff --git a/awsagentprovider/src/test/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporterTest.java b/awsagentprovider/src/test/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporterTest.java index 9ef5f9786d..34af1512d4 100644 --- a/awsagentprovider/src/test/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporterTest.java +++ b/awsagentprovider/src/test/java/software/amazon/opentelemetry/javaagent/providers/OtlpAwsSpanExporterTest.java @@ -46,6 +46,7 @@ import software.amazon.awssdk.http.auth.spi.signer.SignRequest.Builder; import software.amazon.awssdk.http.auth.spi.signer.SignedRequest; import software.amazon.awssdk.identity.spi.AwsCredentialsIdentity; +import software.amazon.opentelemetry.javaagent.providers.AwsSpanExporter.OtlpAwsSpanExporterBuilder; @ExtendWith(MockitoExtension.class) public class OtlpAwsSpanExporterTest {