Lazyloaded OpenTelemetry packages to avoid boot time regression

- we don't want to load the Otel packages unless the instrumentation is
  enabled, because they dramatically increase the boot time (2x locally!)
This commit is contained in:
Daniel Lockyer 2024-06-21 11:11:00 +01:00 committed by Daniel Lockyer
parent bec000567d
commit 12cbb22b85

View File

@ -1,7 +1,3 @@
const {NodeSDK} = require('@opentelemetry/sdk-node');
const {OTLPTraceExporter} = require('@opentelemetry/exporter-trace-otlp-http');
const {getNodeAutoInstrumentations} = require('@opentelemetry/auto-instrumentations-node');
async function initOpenTelemetry({config}) {
// Always enable in development environment
// In production, only enable if explicitly enabled via config `opentelemetry:enabled`
@ -16,6 +12,12 @@ async function initOpenTelemetry({config}) {
headers: {},
concurrencyLimit: 10
};
// Lazyloaded to avoid boot time overhead when not enabled
const {NodeSDK} = require('@opentelemetry/sdk-node');
const {OTLPTraceExporter} = require('@opentelemetry/exporter-trace-otlp-http');
const {getNodeAutoInstrumentations} = require('@opentelemetry/auto-instrumentations-node');
const sdk = new NodeSDK({
serviceName: 'ghost',
traceExporter: new OTLPTraceExporter(collectorOptions),
@ -28,4 +30,4 @@ async function initOpenTelemetry({config}) {
module.exports = {
initOpenTelemetry
};
};