@multiplatform.one/typegraphql
Version:
typegraphql for multiplatform.one
35 lines (33 loc) • 1.47 kB
JavaScript
// src/tracing.ts
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator } from "@opentelemetry/core";
import { JaegerExporter } from "@opentelemetry/exporter-jaeger";
import { B3InjectEncoding, B3Propagator } from "@opentelemetry/propagator-b3";
import { JaegerPropagator } from "@opentelemetry/propagator-jaeger";
import { NodeSDK } from "@opentelemetry/sdk-node";
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
import prismaInstrumentation from "@prisma/instrumentation";
process.env.OTEL_EXPORTER_JAEGER_ENDPOINT = process.env.OTEL_EXPORTER_TRACE_ENDPOINT;
var otelSDK = new NodeSDK({
spanProcessor: process.env.OTEL_EXPORTER_TRACE_ENABLED === "1" && process.env.OTEL_EXPORTER_TRACE_ENDPOINT ? new SimpleSpanProcessor(new JaegerExporter()) : void 0,
contextManager: new AsyncLocalStorageContextManager(),
textMapPropagator: new CompositePropagator({
propagators: [
new JaegerPropagator(),
new W3CTraceContextPropagator(),
new W3CBaggagePropagator(),
new B3Propagator(),
new B3Propagator({
injectEncoding: B3InjectEncoding.MULTI_HEADER
})
]
}),
instrumentations: [
getNodeAutoInstrumentations(),
new prismaInstrumentation.PrismaInstrumentation()
]
});
export {
otelSDK
};