const { NodeSDK } = require('@opentelemetry/sdk-node'); const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http'); const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-http'); const { PeriodicExportingMetricReader } = require('@opentelemetry/sdk-metrics'); const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318'; const sdk = new NodeSDK({ traceExporter: new OTLPTraceExporter({ url: endpoint + '/v1/traces', }), metricReader: new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter({ url: endpoint + '/v1/metrics', }), exportIntervalMillis: 30000, }), instrumentations: [getNodeAutoInstrumentations()], serviceName: process.env.OTEL_SERVICE_NAME || 'nodejs-app', }); sdk.start(); process.on('SIGTERM', () => sdk.shutdown()); console.log('[OPHION] OpenTelemetry auto-instrumentation enabled');