29 lines
822 B
TypeScript
29 lines
822 B
TypeScript
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
|
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
import { env } from "../../config/env.js";
|
|
|
|
let sdk: NodeSDK | null = null;
|
|
|
|
export function initTracer(): void {
|
|
if (!env.OTEL_EXPORTER_OTLP_ENDPOINT) return;
|
|
|
|
sdk = new NodeSDK({
|
|
serviceName: env.OTEL_SERVICE_NAME,
|
|
traceExporter: new OTLPTraceExporter({
|
|
url: `${env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces`,
|
|
}),
|
|
instrumentations: [getNodeAutoInstrumentations()],
|
|
});
|
|
|
|
sdk.start();
|
|
console.log(`Tracer initialized (service: ${env.OTEL_SERVICE_NAME})`);
|
|
}
|
|
|
|
export async function shutdownTracer(): Promise<void> {
|
|
if (sdk) {
|
|
await sdk.shutdown();
|
|
sdk = null;
|
|
}
|
|
}
|