Skip to content

Commit e794e75

Browse files
authored
Upgrade OTel dependencies, update sampler with new attributes (#71)
*Issue #, if available:* *Description of changes:* 1. Upgrade all OTel dependencies i. Resolve issue where `auto-configuration-propagators` depended on a newer version of the `opentelemetry/core` package compared to other dependencies. Now it should be the same version that is used by other dependencies. 2. Use new semantic attributes from latest OTel JS attributes in XRay Sampler See: https://github.com/open-telemetry/semantic-conventions/blob/ab0e4b4b2ba037e2d678e31d5a10fb55563bc698/docs/attributes-registry/http.md?plain=1#L85-L100 See: [similar Python logic](https://github.com/aws-observability/aws-otel-python-instrumentation/blob/453a3d52f98d5c0ee741da031dcf67a499fa8dae/aws-opentelemetry-distro/src/amazon/opentelemetry/distro/sampler/_sampling_rule_applier.py#L121-L130) ``` ATTR_CLIENT_ADDRESS, ATTR_HTTP_REQUEST_METHOD, ATTR_SERVER_ADDRESS, ATTR_URL_FULL, ATTR_URL_PATH, ``` *Testing:* - Tested on ECS Fargate and Local machine ![image](https://github.com/user-attachments/assets/9de769ed-d175-4ef0-8da6-59426f39af4a) ![image](https://github.com/user-attachments/assets/07881426-7c95-4e15-aa64-96fb6a6508c5) By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
1 parent 7dabd39 commit e794e75

File tree

3 files changed

+1000
-901
lines changed

3 files changed

+1000
-901
lines changed

aws-distro-opentelemetry-node-autoinstrumentation/package.json

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -41,88 +41,88 @@
4141
"@aws-sdk/client-kinesis": "3.632.0",
4242
"@aws-sdk/client-s3": "3.632.0",
4343
"@aws-sdk/client-sqs": "3.632.0",
44-
"@opentelemetry/contrib-test-utils": "^0.40.0",
44+
"@opentelemetry/contrib-test-utils": "0.41.0",
4545
"@types/mocha": "7.0.2",
4646
"@types/node": "18.6.5",
4747
"@types/sinon": "10.0.18",
48+
"expect": "29.2.0",
4849
"mocha": "7.2.0",
50+
"nock": "13.2.1",
4951
"nyc": "15.1.0",
5052
"rimraf": "5.0.5",
5153
"sinon": "15.2.0",
5254
"ts-mocha": "10.0.0",
53-
"typescript": "4.4.4",
54-
"expect": "29.2.0",
55-
"nock": "13.2.1"
55+
"typescript": "4.4.4"
5656
},
5757
"dependencies": {
5858
"@opentelemetry/api": "1.9.0",
59-
"@opentelemetry/auto-instrumentations-node": "0.48.0",
60-
"@opentelemetry/auto-configuration-propagators": "0.2.0",
61-
"@opentelemetry/exporter-metrics-otlp-grpc": "0.52.1",
62-
"@opentelemetry/exporter-metrics-otlp-http": "0.52.1",
63-
"@opentelemetry/instrumentation": "0.52.1",
59+
"@opentelemetry/auto-configuration-propagators": "0.3.0",
60+
"@opentelemetry/auto-instrumentations-node": "0.50.0",
61+
"@opentelemetry/core": "1.26.0",
62+
"@opentelemetry/exporter-metrics-otlp-grpc": "0.53.0",
63+
"@opentelemetry/exporter-metrics-otlp-http": "0.53.0",
64+
"@opentelemetry/exporter-trace-otlp-proto": "0.53.0",
65+
"@opentelemetry/exporter-zipkin": "1.26.0",
6466
"@opentelemetry/id-generator-aws-xray": "1.2.2",
65-
"@opentelemetry/propagator-aws-xray": "1.25.1",
66-
"@opentelemetry/core": "1.25.1",
67-
"@opentelemetry/sdk-trace-base": "1.25.1",
68-
"@opentelemetry/semantic-conventions": "1.25.1",
69-
"@opentelemetry/resources": "1.25.1",
70-
"@opentelemetry/resource-detector-aws": "1.5.2",
71-
"@opentelemetry/exporter-trace-otlp-proto": "0.52.1",
72-
"@opentelemetry/exporter-zipkin": "1.25.1",
73-
"@opentelemetry/sdk-metrics": "1.25.1",
74-
"@opentelemetry/sdk-node": "0.52.1",
75-
"@opentelemetry/instrumentation-aws-sdk": "0.43.1"
67+
"@opentelemetry/instrumentation": "0.53.0",
68+
"@opentelemetry/instrumentation-aws-sdk": "0.44.0",
69+
"@opentelemetry/propagator-aws-xray": "1.26.0",
70+
"@opentelemetry/resource-detector-aws": "1.6.1",
71+
"@opentelemetry/resources": "1.26.0",
72+
"@opentelemetry/sdk-metrics": "1.26.0",
73+
"@opentelemetry/sdk-node": "0.53.0",
74+
"@opentelemetry/sdk-trace-base": "1.26.0",
75+
"@opentelemetry/semantic-conventions": "1.27.0"
7676
},
7777
"overrides": {
7878
"@opentelemetry/auto-instrumentations-node": {
79-
"@opentelemetry/instrumentation": "0.52.1",
80-
"@opentelemetry/instrumentation-amqplib": "0.40.0",
81-
"@opentelemetry/instrumentation-aws-lambda": "0.43.0",
82-
"@opentelemetry/instrumentation-aws-sdk": "0.43.1",
83-
"@opentelemetry/instrumentation-bunyan": "0.40.0",
84-
"@opentelemetry/instrumentation-cassandra-driver": "0.40.0",
85-
"@opentelemetry/instrumentation-connect": "0.38.0",
86-
"@opentelemetry/instrumentation-cucumber": "0.8.0",
87-
"@opentelemetry/instrumentation-dataloader": "0.11.0",
88-
"@opentelemetry/instrumentation-dns": "0.38.0",
89-
"@opentelemetry/instrumentation-express": "0.41.1",
90-
"@opentelemetry/instrumentation-fastify": "0.38.0",
91-
"@opentelemetry/instrumentation-fs": "0.14.0",
92-
"@opentelemetry/instrumentation-generic-pool": "0.38.0",
93-
"@opentelemetry/instrumentation-graphql": "0.42.0",
94-
"@opentelemetry/instrumentation-grpc": "0.52.1",
95-
"@opentelemetry/instrumentation-hapi": "0.40.0",
96-
"@opentelemetry/instrumentation-http": "0.52.1",
97-
"@opentelemetry/instrumentation-ioredis": "0.42.0",
98-
"@opentelemetry/instrumentation-kafkajs": "0.2.0",
99-
"@opentelemetry/instrumentation-knex": "0.39.0",
100-
"@opentelemetry/instrumentation-koa": "0.42.0",
101-
"@opentelemetry/instrumentation-lru-memoizer": "0.39.0",
102-
"@opentelemetry/instrumentation-memcached": "0.38.0",
103-
"@opentelemetry/instrumentation-mongodb": "0.46.0",
104-
"@opentelemetry/instrumentation-mongoose": "0.40.0",
105-
"@opentelemetry/instrumentation-mysql": "0.40.0",
106-
"@opentelemetry/instrumentation-mysql2": "0.40.0",
107-
"@opentelemetry/instrumentation-nestjs-core": "0.39.0",
108-
"@opentelemetry/instrumentation-net": "0.38.0",
109-
"@opentelemetry/instrumentation-pg": "0.43.0",
110-
"@opentelemetry/instrumentation-pino": "0.41.0",
111-
"@opentelemetry/instrumentation-redis": "0.41.0",
112-
"@opentelemetry/instrumentation-redis-4": "0.41.0",
113-
"@opentelemetry/instrumentation-restify": "0.40.0",
114-
"@opentelemetry/instrumentation-router": "0.39.0",
115-
"@opentelemetry/instrumentation-socket.io": "0.41.0",
116-
"@opentelemetry/instrumentation-tedious": "0.12.0",
117-
"@opentelemetry/instrumentation-undici": "0.4.0",
118-
"@opentelemetry/instrumentation-winston": "0.39.0",
119-
"@opentelemetry/resource-detector-alibaba-cloud": "0.28.10",
120-
"@opentelemetry/resource-detector-aws": "1.5.2",
121-
"@opentelemetry/resource-detector-azure": "0.2.9",
122-
"@opentelemetry/resource-detector-container": "0.3.11",
123-
"@opentelemetry/resource-detector-gcp": "0.29.10",
124-
"@opentelemetry/resources": "1.25.1",
125-
"@opentelemetry/sdk-node": "0.52.1"
79+
"@opentelemetry/instrumentation": "0.53.0",
80+
"@opentelemetry/instrumentation-amqplib": "0.42.0",
81+
"@opentelemetry/instrumentation-aws-lambda": "0.44.0",
82+
"@opentelemetry/instrumentation-aws-sdk": "0.44.0",
83+
"@opentelemetry/instrumentation-bunyan": "0.41.0",
84+
"@opentelemetry/instrumentation-cassandra-driver": "0.41.0",
85+
"@opentelemetry/instrumentation-connect": "0.39.0",
86+
"@opentelemetry/instrumentation-cucumber": "0.9.0",
87+
"@opentelemetry/instrumentation-dataloader": "0.12.0",
88+
"@opentelemetry/instrumentation-dns": "0.39.0",
89+
"@opentelemetry/instrumentation-express": "0.42.0",
90+
"@opentelemetry/instrumentation-fastify": "0.39.0",
91+
"@opentelemetry/instrumentation-fs": "0.15.0",
92+
"@opentelemetry/instrumentation-generic-pool": "0.39.0",
93+
"@opentelemetry/instrumentation-graphql": "0.43.0",
94+
"@opentelemetry/instrumentation-grpc": "0.53.0",
95+
"@opentelemetry/instrumentation-hapi": "0.41.0",
96+
"@opentelemetry/instrumentation-http": "0.53.0",
97+
"@opentelemetry/instrumentation-ioredis": "0.43.0",
98+
"@opentelemetry/instrumentation-kafkajs": "0.3.0",
99+
"@opentelemetry/instrumentation-knex": "0.40.0",
100+
"@opentelemetry/instrumentation-koa": "0.43.0",
101+
"@opentelemetry/instrumentation-lru-memoizer": "0.40.0",
102+
"@opentelemetry/instrumentation-memcached": "0.39.0",
103+
"@opentelemetry/instrumentation-mongodb": "0.47.0",
104+
"@opentelemetry/instrumentation-mongoose": "0.42.0",
105+
"@opentelemetry/instrumentation-mysql": "0.41.0",
106+
"@opentelemetry/instrumentation-mysql2": "0.41.0",
107+
"@opentelemetry/instrumentation-nestjs-core": "0.40.0",
108+
"@opentelemetry/instrumentation-net": "0.39.0",
109+
"@opentelemetry/instrumentation-pg": "0.44.0",
110+
"@opentelemetry/instrumentation-pino": "0.42.0",
111+
"@opentelemetry/instrumentation-redis": "0.42.0",
112+
"@opentelemetry/instrumentation-redis-4": "0.42.0",
113+
"@opentelemetry/instrumentation-restify": "0.41.0",
114+
"@opentelemetry/instrumentation-router": "0.40.0",
115+
"@opentelemetry/instrumentation-socket.io": "0.42.0",
116+
"@opentelemetry/instrumentation-tedious": "0.14.0",
117+
"@opentelemetry/instrumentation-undici": "0.6.0",
118+
"@opentelemetry/instrumentation-winston": "0.40.0",
119+
"@opentelemetry/resource-detector-alibaba-cloud": "0.29.1",
120+
"@opentelemetry/resource-detector-aws": "1.6.1",
121+
"@opentelemetry/resource-detector-azure": "0.2.11",
122+
"@opentelemetry/resource-detector-container": "0.4.1",
123+
"@opentelemetry/resource-detector-gcp": "0.29.11",
124+
"@opentelemetry/resources": "1.26.0",
125+
"@opentelemetry/sdk-node": "0.53.0"
126126
}
127127
},
128128
"files": [

aws-distro-opentelemetry-node-autoinstrumentation/src/sampler/sampling-rule-applier.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ import {
1010
TraceIdRatioBasedSampler,
1111
} from '@opentelemetry/sdk-trace-base';
1212
import {
13+
ATTR_CLIENT_ADDRESS,
14+
ATTR_HTTP_REQUEST_METHOD,
15+
ATTR_SERVER_ADDRESS,
16+
ATTR_URL_FULL,
17+
ATTR_URL_PATH,
1318
CLOUDPLATFORMVALUES_AWS_LAMBDA,
1419
SEMATTRS_AWS_LAMBDA_INVOKED_ARN,
1520
SEMATTRS_HTTP_HOST,
@@ -85,12 +90,11 @@ export class SamplingRuleApplier {
8590
let httpHost: AttributeValue | undefined = undefined;
8691
let serviceName: AttributeValue | undefined = undefined;
8792

88-
// Unlike in Python, `URL_PATH/URL_FULL/HTTP_REQUEST_METHOD/SERVER_ADDRESS` are not available in Semantic Attributes
8993
if (attributes) {
90-
httpTarget = attributes[SEMATTRS_HTTP_TARGET];
91-
httpUrl = attributes[SEMATTRS_HTTP_URL];
92-
httpMethod = attributes[SEMATTRS_HTTP_METHOD];
93-
httpHost = attributes[SEMATTRS_HTTP_HOST];
94+
httpTarget = attributes[SEMATTRS_HTTP_TARGET] ?? attributes[ATTR_URL_PATH];
95+
httpUrl = attributes[SEMATTRS_HTTP_URL] ?? attributes[ATTR_URL_FULL];
96+
httpMethod = attributes[SEMATTRS_HTTP_METHOD] ?? attributes[ATTR_HTTP_REQUEST_METHOD];
97+
httpHost = attributes[SEMATTRS_HTTP_HOST] ?? attributes[ATTR_SERVER_ADDRESS] ?? attributes[ATTR_CLIENT_ADDRESS];
9498
}
9599

96100
let serviceType: AttributeValue | undefined = undefined;

0 commit comments

Comments
 (0)