-
Notifications
You must be signed in to change notification settings - Fork 977
Description
Hello Community
I have encountered this issue and would like to know if I should report it as a bug or if anyone has found a solution.
Node version: 16.14.0
First package.json version I have tried-->
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/auto-instrumentations-node": "^0.55.1",
"@opentelemetry/exporter-metrics-otlp-grpc": "^0.57.0",
"@opentelemetry/exporter-metrics-otlp-http": "^0.57.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.57.0",
"@opentelemetry/instrumentation-express": "^0.47.0",
"@opentelemetry/instrumentation-http": "^0.57.0",
"@opentelemetry/resources": "^1.30.0",
"@opentelemetry/sdk-metrics": "^1.30.0",
"@opentelemetry/sdk-node": "^0.57.0",
"@opentelemetry/sdk-trace-node": "^1.30.0",
"@opentelemetry/semantic-conventions": "^1.28.0"
I receive the following error when running the tests using npm run test:
FAIL tests/controllers/healt.test.ts
● Test suite failed to run
Cannot find module '@opentelemetry/semantic-conventions/incubating' from 'node_modules/@opentelemetry/auto-instrumentations-node/node_modules/@opentelemetry/instrumentation-aws-lambda/build/src/instrumentation.js'
Require stack:
node_modules/@opentelemetry/auto-instrumentations-node/node_modules/@opentelemetry/instrumentation-aws-lambda/build/src/instrumentation.js
node_modules/@opentelemetry/auto-instrumentations-node/node_modules/@opentelemetry/instrumentation-aws-lambda/build/src/index.js
node_modules/@opentelemetry/auto-instrumentations-node/build/src/utils.js
node_modules/@opentelemetry/auto-instrumentations-node/build/src/index.js
src/configuration/opentelemetry.ts
src/server/index.ts
tests/controllers/healt.test.ts
I also tried changing the package versions to:
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/auto-instrumentations-node": "^0.56.1",
"@opentelemetry/exporter-metrics-otlp-grpc": "^0.57.2",
"@opentelemetry/exporter-metrics-otlp-http": "^0.57.2",
"@opentelemetry/exporter-trace-otlp-http": "^0.57.2",
"@opentelemetry/instrumentation-aws-lambda": "^0.51.0",
"@opentelemetry/instrumentation-express": "^0.48.0",
"@opentelemetry/instrumentation-grpc": "^0.51.0",
"@opentelemetry/instrumentation-http": "^0.57.2",
"@opentelemetry/resources": "^1.30.1",
"@opentelemetry/sdk-metrics": "^1.30.1",
"@opentelemetry/sdk-node": "^0.57.2",
"@opentelemetry/sdk-trace-node": "^1.30.1",
"@opentelemetry/semantic-conventions": "^1.30.0",
But I received the following error:
FAIL tests/index.test.ts
● Test suite failed to run
ENOENT: no such file or directory, open 'events'
at Runtime.readFile (node_modules/jest-runtime/build/index.js:1987:21)
at Object.<anonymous> (node_modules/google-logging-utils/src/logging-utils.ts:15:1)
This is the component where I implement Opentelemetry:
import opentelemetry from '@opentelemetry/api';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
import { AggregationTemporality, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
import { MeterProvider } from '@opentelemetry/sdk-metrics';
import { Resource } from '@opentelemetry/resources';
import { environment } from '../configuration/environment'; // Adjust the path to your config file
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
import { BatchSpanProcessor, NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
import fs from 'fs';
// Dynatrace Metadata
let dtmetadata = new Resource({});
for (const name of [
'dt_metadata_e617c525669e072eebe3d0f08212e8f2.json',
'/var/lib/dynatrace/enrichment/dt_metadata.json',
'/var/lib/dynatrace/enrichment/dt_host_metadata.json',
]) {
try {
dtmetadata = dtmetadata.merge(
new Resource(
JSON.parse(
fs
.readFileSync(name.startsWith('/var') ? name : fs.readFileSync(name).toString('utf-8').trim())
.toString('utf-8'),
),
),
);
break;
} catch {}
}
const resource = Resource.default()
.merge(
new Resource({
[ATTR_SERVICE_NAME]: 'test-test-test-test',
[ATTR_SERVICE_VERSION]: '1.0.0',
}),
)
.merge(dtmetadata);
const traceExporter = new OTLPTraceExporter({
url: environment.OTEL_EXPORTER_OTLP_ENDPOINT_TRACES,
headers: {
Authorization: 'Api-Token xxxxxxxxx',
},
});
const processor = new BatchSpanProcessor(traceExporter);
const provider = new NodeTracerProvider({
resource: resource,
spanProcessors: [processor],
});
provider.register();
const metricExporter = new OTLPMetricExporter({
url: environment.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
headers: {
Authorization: 'Api-Token xxxxxxxxxxxxx',
},
temporalityPreference: AggregationTemporality.DELTA,
});
const metricReader = new PeriodicExportingMetricReader({
exporter: metricExporter,
exportIntervalMillis: 60000,
});
const meterProvider = new MeterProvider({
resource: resource,
readers: [metricReader],
});
opentelemetry.metrics.setGlobalMeterProvider(meterProvider);
const instrumentations = getNodeAutoInstrumentations();
instrumentations.forEach((instrumentation) => {
instrumentation.enable();
});
Expected Behavior:
The tests should run successfully.
Question or discussion:
- Has anyone encountered this issue before?
- Is my implementation incorrect?
- Or is this a bug that should be reported?
Thanks in advance!
- This only affects the JavaScript OpenTelemetry library
- This may affect other libraries, but I would like to get opinions here first