Upgrade to OpenTelemetry v2 SDKs

Necessitated by our minor version upgrade of @opentelemetry/exporter-trace-otlp-http.
This commit is contained in:
Robin
2025-05-28 16:50:03 -04:00
parent 7eae5b0ffb
commit 3c3fce96e7
4 changed files with 38 additions and 79 deletions

View File

@@ -43,11 +43,11 @@
"@livekit/track-processors": "^0.5.5", "@livekit/track-processors": "^0.5.5",
"@mediapipe/tasks-vision": "^0.10.18", "@mediapipe/tasks-vision": "^0.10.18",
"@opentelemetry/api": "^1.4.0", "@opentelemetry/api": "^1.4.0",
"@opentelemetry/core": "^1.25.1", "@opentelemetry/core": "^2.0.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.201.0", "@opentelemetry/exporter-trace-otlp-http": "^0.201.0",
"@opentelemetry/resources": "^1.25.1", "@opentelemetry/resources": "^2.0.0",
"@opentelemetry/sdk-trace-base": "^1.25.1", "@opentelemetry/sdk-trace-base": "^2.0.0",
"@opentelemetry/sdk-trace-web": "^1.9.1", "@opentelemetry/sdk-trace-web": "^2.0.0",
"@opentelemetry/semantic-conventions": "^1.25.1", "@opentelemetry/semantic-conventions": "^1.25.1",
"@playwright/test": "^1.52.0", "@playwright/test": "^1.52.0",
"@radix-ui/react-dialog": "^1.0.4", "@radix-ui/react-dialog": "^1.0.4",

View File

@@ -107,13 +107,13 @@ export class RageshakeSpanProcessor implements SpanProcessor {
startTime, startTime,
duration, duration,
references: references:
span.parentSpanId === undefined span.parentSpanContext?.spanId === undefined
? [] ? []
: [ : [
{ {
refType: "CHILD_OF", refType: "CHILD_OF",
traceID: traceId, traceID: traceId,
spanID: span.parentSpanId, spanID: span.parentSpanContext?.spanId,
}, },
], ],
tags: dumpAttributes(span.attributes), tags: dumpAttributes(span.attributes),

View File

@@ -5,12 +5,15 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE in the repository root for full details. Please see LICENSE in the repository root for full details.
*/ */
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base"; import {
SimpleSpanProcessor,
type SpanProcessor,
} from "@opentelemetry/sdk-trace-base";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { WebTracerProvider } from "@opentelemetry/sdk-trace-web"; import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
import opentelemetry, { type Tracer } from "@opentelemetry/api"; import opentelemetry, { type Tracer } from "@opentelemetry/api";
import { Resource } from "@opentelemetry/resources"; import { resourceFromAttributes } from "@opentelemetry/resources";
import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions"; import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
import { logger } from "matrix-js-sdk/lib/logger"; import { logger } from "matrix-js-sdk/lib/logger";
import { PosthogSpanProcessor } from "../analytics/PosthogSpanProcessor"; import { PosthogSpanProcessor } from "../analytics/PosthogSpanProcessor";
@@ -59,34 +62,34 @@ export class ElementCallOpenTelemetry {
collectorUrl: string | undefined, collectorUrl: string | undefined,
rageshakeUrl: string | undefined, rageshakeUrl: string | undefined,
) { ) {
// This is how we can make Jaeger show a reasonable service in the dropdown on the left. const spanProcessors: SpanProcessor[] = [];
const providerConfig = {
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: SERVICE_NAME,
}),
};
this._provider = new WebTracerProvider(providerConfig);
if (collectorUrl) { if (collectorUrl) {
logger.info("Enabling OTLP collector with URL " + collectorUrl); logger.info("Enabling OTLP collector with URL " + collectorUrl);
this.otlpExporter = new OTLPTraceExporter({ this.otlpExporter = new OTLPTraceExporter({
url: collectorUrl, url: collectorUrl,
}); });
this._provider.addSpanProcessor( spanProcessors.push(new SimpleSpanProcessor(this.otlpExporter));
new SimpleSpanProcessor(this.otlpExporter),
);
} else { } else {
logger.info("OTLP collector disabled"); logger.info("OTLP collector disabled");
} }
if (rageshakeUrl) { if (rageshakeUrl) {
this.rageshakeProcessor = new RageshakeSpanProcessor(); this.rageshakeProcessor = new RageshakeSpanProcessor();
this._provider.addSpanProcessor(this.rageshakeProcessor); spanProcessors.push(this.rageshakeProcessor);
} }
this._provider.addSpanProcessor(new PosthogSpanProcessor()); spanProcessors.push(new PosthogSpanProcessor());
opentelemetry.trace.setGlobalTracerProvider(this._provider);
this._provider = new WebTracerProvider({
resource: resourceFromAttributes({
// This is how we can make Jaeger show a reasonable service in the dropdown on the left.
[ATTR_SERVICE_NAME]: SERVICE_NAME,
}),
spanProcessors,
});
opentelemetry.trace.setGlobalTracerProvider(this._provider);
this._tracer = opentelemetry.trace.getTracer( this._tracer = opentelemetry.trace.getTracer(
// This is not the serviceName shown in jaeger // This is not the serviceName shown in jaeger
"my-element-call-otl-tracer", "my-element-call-otl-tracer",

View File

@@ -2932,18 +2932,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@opentelemetry/core@npm:1.30.1, @opentelemetry/core@npm:^1.25.1": "@opentelemetry/core@npm:2.0.1, @opentelemetry/core@npm:^2.0.0":
version: 1.30.1
resolution: "@opentelemetry/core@npm:1.30.1"
dependencies:
"@opentelemetry/semantic-conventions": "npm:1.28.0"
peerDependencies:
"@opentelemetry/api": ">=1.0.0 <1.10.0"
checksum: 10c0/4c25ba50a6137c2ba9ca563fb269378f3c9ca6fd1b3f15dbb6eff78eebf5656f281997cbb7be8e51c01649fd6ad091083fcd8a42dd9b5dfac907dc06d7cfa092
languageName: node
linkType: hard
"@opentelemetry/core@npm:2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "@opentelemetry/core@npm:2.0.1" resolution: "@opentelemetry/core@npm:2.0.1"
dependencies: dependencies:
@@ -2998,19 +2987,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@opentelemetry/resources@npm:1.30.1, @opentelemetry/resources@npm:^1.25.1": "@opentelemetry/resources@npm:2.0.1, @opentelemetry/resources@npm:^2.0.0":
version: 1.30.1
resolution: "@opentelemetry/resources@npm:1.30.1"
dependencies:
"@opentelemetry/core": "npm:1.30.1"
"@opentelemetry/semantic-conventions": "npm:1.28.0"
peerDependencies:
"@opentelemetry/api": ">=1.0.0 <1.10.0"
checksum: 10c0/688e73258283c80662bfa9a858aaf73bf3b832a18d96e546d0dddfa6dcec556cdfa087a1d0df643435293406009e4122d7fb7eeea69aa87b539d3bab756fba74
languageName: node
linkType: hard
"@opentelemetry/resources@npm:2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "@opentelemetry/resources@npm:2.0.1" resolution: "@opentelemetry/resources@npm:2.0.1"
dependencies: dependencies:
@@ -3047,20 +3024,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@opentelemetry/sdk-trace-base@npm:1.30.1, @opentelemetry/sdk-trace-base@npm:^1.25.1": "@opentelemetry/sdk-trace-base@npm:2.0.1, @opentelemetry/sdk-trace-base@npm:^2.0.0":
version: 1.30.1
resolution: "@opentelemetry/sdk-trace-base@npm:1.30.1"
dependencies:
"@opentelemetry/core": "npm:1.30.1"
"@opentelemetry/resources": "npm:1.30.1"
"@opentelemetry/semantic-conventions": "npm:1.28.0"
peerDependencies:
"@opentelemetry/api": ">=1.0.0 <1.10.0"
checksum: 10c0/77019dc3efaeceb41b4c54dd83b92f0ccd81ecceca544cbbe8e0aee4b2c8727724bdb9dcecfe00622c16d60946ae4beb69a5c0e7d85c4bc7ef425bd84f8b970c
languageName: node
linkType: hard
"@opentelemetry/sdk-trace-base@npm:2.0.1":
version: 2.0.1 version: 2.0.1
resolution: "@opentelemetry/sdk-trace-base@npm:2.0.1" resolution: "@opentelemetry/sdk-trace-base@npm:2.0.1"
dependencies: dependencies:
@@ -3073,23 +3037,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@opentelemetry/sdk-trace-web@npm:^1.9.1": "@opentelemetry/sdk-trace-web@npm:^2.0.0":
version: 1.30.1 version: 2.0.1
resolution: "@opentelemetry/sdk-trace-web@npm:1.30.1" resolution: "@opentelemetry/sdk-trace-web@npm:2.0.1"
dependencies: dependencies:
"@opentelemetry/core": "npm:1.30.1" "@opentelemetry/core": "npm:2.0.1"
"@opentelemetry/sdk-trace-base": "npm:1.30.1" "@opentelemetry/sdk-trace-base": "npm:2.0.1"
"@opentelemetry/semantic-conventions": "npm:1.28.0"
peerDependencies: peerDependencies:
"@opentelemetry/api": ">=1.0.0 <1.10.0" "@opentelemetry/api": ">=1.0.0 <1.10.0"
checksum: 10c0/8dd2901b5eef68a5896da0ad11f04c8990ce4ef2dcbec27bbc02d7e193097c270ba5f4c9ca363ea10fb53ca7cc515f18d9dc383a69a17720cd0590474c0ffdaf checksum: 10c0/48821b91430e24378b0b5b2632e78efdd018a3f840462a6aeba6ce318a6480bad2f623cc7f7f625a9266028ad44b78eb8456181778de6cb18725f26c44e2729b
languageName: node
linkType: hard
"@opentelemetry/semantic-conventions@npm:1.28.0":
version: 1.28.0
resolution: "@opentelemetry/semantic-conventions@npm:1.28.0"
checksum: 10c0/deb8a0f744198071e70fea27143cf7c9f7ecb7e4d7b619488c917834ea09b31543c1c2bcea4ec5f3cf68797f0ef3549609c14e859013d9376400ac1499c2b9cb
languageName: node languageName: node
linkType: hard linkType: hard
@@ -7392,11 +7348,11 @@ __metadata:
"@livekit/track-processors": "npm:^0.5.5" "@livekit/track-processors": "npm:^0.5.5"
"@mediapipe/tasks-vision": "npm:^0.10.18" "@mediapipe/tasks-vision": "npm:^0.10.18"
"@opentelemetry/api": "npm:^1.4.0" "@opentelemetry/api": "npm:^1.4.0"
"@opentelemetry/core": "npm:^1.25.1" "@opentelemetry/core": "npm:^2.0.0"
"@opentelemetry/exporter-trace-otlp-http": "npm:^0.201.0" "@opentelemetry/exporter-trace-otlp-http": "npm:^0.201.0"
"@opentelemetry/resources": "npm:^1.25.1" "@opentelemetry/resources": "npm:^2.0.0"
"@opentelemetry/sdk-trace-base": "npm:^1.25.1" "@opentelemetry/sdk-trace-base": "npm:^2.0.0"
"@opentelemetry/sdk-trace-web": "npm:^1.9.1" "@opentelemetry/sdk-trace-web": "npm:^2.0.0"
"@opentelemetry/semantic-conventions": "npm:^1.25.1" "@opentelemetry/semantic-conventions": "npm:^1.25.1"
"@playwright/test": "npm:^1.52.0" "@playwright/test": "npm:^1.52.0"
"@radix-ui/react-dialog": "npm:^1.0.4" "@radix-ui/react-dialog": "npm:^1.0.4"