I am trying to use otel metrics for my nestjs application.
getting the Error: MetricReader can not be bound to a MeterProvider again.
steps to reproduce:
- run command nest new project-name
- under src touch metrics.ts
/*instrumentation.ts*/
import { NodeSDK } from '@opentelemetry/sdk-node';
import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import {
PeriodicExportingMetricReader,
ConsoleMetricExporter,
} from '@opentelemetry/sdk-metrics';
export const otelSDK = new NodeSDK({
traceExporter: new ConsoleSpanExporter(),
metricReader: new PeriodicExportingMetricReader({
exporter: new ConsoleMetricExporter(),
}),
instrumentations: [getNodeAutoInstrumentations()],
});
otelSDK.start();
main.ts
import { otelSDK } from './metrics';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
await otelSDK.start();
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
my package.json looks like this
“dependencies”: {
“@opentelemetry/api”: “^1.8.0”,
“@opentelemetry/auto-instrumentations-node”: “^0.46.1”,
“@opentelemetry/sdk-metrics”: “^1.24.1”,
“@opentelemetry/sdk-node”: “^0.51.1”,
“@opentelemetry/sdk-trace-node”: “^1.24.1”,
},
doc which i followed -> https://opentelemetry.io/docs/languages/js/getting-started/nodejs/