diff --git a/CHANGELOG.md b/CHANGELOG.md index 773b8a7db7..9f42753dd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ * feat(instrumentation): generic config type in instrumentation base [#4659](https://github.com/open-telemetry/opentelemetry-js/pull/4659) @blumamir * feat: support node 22 [#4666](https://github.com/open-telemetry/opentelemetry-js/pull/4666) @dyladan +* feat(sdk-trace-node): support `xray` Propagator via `OTEL_PROPAGATORS` environment variable [#4602](https://github.com/open-telemetry/opentelemetry-js/pull/4602) @anuraags ### :bug: (Bug Fix) diff --git a/package-lock.json b/package-lock.json index 24f328c018..fe4faeb55d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5960,6 +5960,7 @@ } }, "experimental/packages/propagator-aws-xray-lambda": { + "name": "@opentelemetry/propagator-aws-xray-lambda", "version": "0.51.0", "license": "Apache-2.0", "dependencies": { @@ -36028,6 +36029,7 @@ "dependencies": { "@opentelemetry/context-async-hooks": "1.24.0", "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-aws-xray": "1.24.0", "@opentelemetry/propagator-b3": "1.24.0", "@opentelemetry/propagator-jaeger": "1.24.0", "@opentelemetry/sdk-trace-base": "1.24.0", @@ -47039,6 +47041,7 @@ "@opentelemetry/api": ">=1.0.0 <1.9.0", "@opentelemetry/context-async-hooks": "1.24.0", "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-aws-xray": "1.24.0", "@opentelemetry/propagator-b3": "1.24.0", "@opentelemetry/propagator-jaeger": "1.24.0", "@opentelemetry/resources": "1.24.0", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 508eaa8bf9..f2b59159c7 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -68,6 +68,7 @@ "@opentelemetry/context-async-hooks": "1.24.0", "@opentelemetry/core": "1.24.0", "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-aws-xray": "1.24.0", "@opentelemetry/propagator-jaeger": "1.24.0", "@opentelemetry/sdk-trace-base": "1.24.0", "semver": "^7.5.2" diff --git a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts index 9d552162f6..c82b600d93 100644 --- a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts @@ -26,6 +26,7 @@ import { import * as semver from 'semver'; import { NodeTracerConfig } from './config'; import { JaegerPropagator } from '@opentelemetry/propagator-jaeger'; +import { AWSXRayPropagator } from '@opentelemetry/propagator-aws-xray'; /** * Register this TracerProvider for use with the OpenTelemetry API. @@ -50,6 +51,7 @@ export class NodeTracerProvider extends BasicTracerProvider { () => new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }), ], ['jaeger', () => new JaegerPropagator()], + ['xray', () => new AWSXRayPropagator()], ]); constructor(config: NodeTracerConfig = {}) { diff --git a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts index 1b1dbbd6d8..a0acf0d0d0 100644 --- a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts @@ -236,7 +236,7 @@ describe('NodeTracerProvider', () => { }); it('should allow propagators as per the specification', () => { - (process.env as any).OTEL_PROPAGATORS = 'b3,b3multi,jaeger'; + (process.env as any).OTEL_PROPAGATORS = 'b3,b3multi,jaeger,xray'; const provider = new NodeTracerProvider(); provider.register(); @@ -249,6 +249,7 @@ describe('NodeTracerProvider', () => { 'x-b3-sampled', 'x-b3-parentspanid', 'uber-trace-id', + 'x-amzn-trace-id', ]); }); }); diff --git a/packages/opentelemetry-sdk-trace-node/tsconfig.json b/packages/opentelemetry-sdk-trace-node/tsconfig.json index 31559ba9b3..a40ddeff36 100644 --- a/packages/opentelemetry-sdk-trace-node/tsconfig.json +++ b/packages/opentelemetry-sdk-trace-node/tsconfig.json @@ -32,6 +32,9 @@ }, { "path": "../opentelemetry-semantic-conventions" + }, + { + "path": "../propagator-aws-xray" } ] }