UNPKG

nestjs-otel

Version:
49 lines (46 loc) 1.71 kB
import { CompositePropagator, HttpTraceContextPropagator, HttpBaggagePropagator, } from '@opentelemetry/core'; import { BatchSpanProcessor } from '@opentelemetry/tracing'; import { JaegerExporter } from '@opentelemetry/exporter-jaeger'; import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'; import { JaegerPropagator } from '@opentelemetry/propagator-jaeger'; import { B3InjectEncoding, B3Propagator } from '@opentelemetry/propagator-b3'; import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'; import { NodeSDK } from '@opentelemetry/sdk-node'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; import * as process from 'process'; const otelSDK = new NodeSDK({ metricExporter: new PrometheusExporter({ port: 8081, }), metricInterval: 6000, spanProcessor: new BatchSpanProcessor(new JaegerExporter()), contextManager: new AsyncLocalStorageContextManager(), textMapPropagator: new CompositePropagator({ propagators: [ new JaegerPropagator(), new HttpTraceContextPropagator(), new HttpBaggagePropagator(), new B3Propagator(), new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER, }), ], }), instrumentations: [getNodeAutoInstrumentations()], }); export default otelSDK; // You can also use the shutdown method to gracefully shut down the SDK before process shutdown // or on some operating system signal. process.on('SIGTERM', () => { otelSDK .shutdown() .then( () => console.log('SDK shut down successfully'), (err) => console.log('Error shutting down SDK', err), ) .finally(() => process.exit(0)); });