What happened?
Steps to Reproduce
- Use
@opentelemetry/instrumentation@0.35.1
- Bundle our app with esbuild
esbuild ./src/index.ts --platform=node --format=esm --bundle --sourcemap=inline --target=node18 --banner:js=import{createRequire}from\\'module\\'\\;const\\ require=createRequire\\(import.meta.url\\)\\; --outfile=./dist/server.mjs --metafile=./dist/meta.json
- Remove node_modules or move only bundle file to docker
- Try to start app
Expected Result
Works fine
Actual Result
Crash app on startup
Cannot find module 'is-core-module/package.json'
Additional Details
nodejs/require-in-the-middle#71
browserify/resolve#302
browserify/resolve#297
OpenTelemetry Setup Code
"use strict";
import { commonConfig } from "@app/config";
import * as api from "@opentelemetry/api";
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { registerInstrumentations } from "@opentelemetry/instrumentation";
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
import { Resource } from "@opentelemetry/resources";
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
import { BatchSpanProcessor, NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions";
import pkg from "../package.json" assert { type: "json" };
if (commonConfig.debug) {
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
}
const resource = new Resource({
[SemanticResourceAttributes.SERVICE_NAMESPACE]: "",
[SemanticResourceAttributes.SERVICE_NAME]: "",
[SemanticResourceAttributes.SERVICE_VERSION]: pkg.version,
[SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: process.env["NODE_ENV"],
});
registerInstrumentations({
instrumentations: [new HttpInstrumentation({ enabled: true })],
});
const traceExporter = new OTLPTraceExporter({ url: commonConfig.otel.traces });
const traceProvider = new NodeTracerProvider({ resource });
traceProvider.addSpanProcessor(new BatchSpanProcessor(traceExporter));
traceProvider.register();
const meterExporter = new OTLPMetricExporter({ url: commonConfig.otel.metrics });
const meterProvider = new MeterProvider({ resource: resource });
meterProvider.addMetricReader(new PeriodicExportingMetricReader({ exporter: meterExporter }));
export const tracer = api.trace.getTracer(pkg.name);
export const meter = api.metrics.getMeter(pkg.name);
api.metrics.setGlobalMeterProvider(meterProvider);
export const metrics = {
resolveFieldTotal: meter.createCounter("graphql.resolve.field.total"),
resolveFieldErrors: meter.createCounter("graphql.resolve.field.errors"),
resolveFieldDuration: meter.createHistogram("graphql.resolve.field.duration"),
};
["SIGINT", "SIGTERM"].forEach((signal) => {
process.on(signal, () => traceProvider.shutdown().catch(console.error));
process.on(signal, () => meterProvider.shutdown().catch(console.error));
});
package.json
"@opentelemetry/api": "^1.4.0",
"@opentelemetry/exporter-metrics-otlp-http": "0.35.1",
"@opentelemetry/exporter-trace-otlp-http": "0.35.1",
"@opentelemetry/instrumentation": "0.35.1",
"@opentelemetry/instrumentation-graphql": "0.33.0",
"@opentelemetry/instrumentation-grpc": "0.35.1",
"@opentelemetry/instrumentation-http": "0.35.1",
"@opentelemetry/resources": "1.9.1",
"@opentelemetry/sdk-metrics": "1.12.0",
"@opentelemetry/sdk-trace-node": "1.9.1",
"@opentelemetry/semantic-conventions": "1.9.1",
Relevant log output
Cannot find module 'is-core-module/package.json'
What happened?
Steps to Reproduce
@opentelemetry/instrumentation@0.35.1Expected Result
Works fine
Actual Result
Crash app on startup
Additional Details
nodejs/require-in-the-middle#71
browserify/resolve#302
browserify/resolve#297
OpenTelemetry Setup Code
package.json
Relevant log output
Cannot find module 'is-core-module/package.json'