From 11d0360c759c06121d1a7dd26132b96e1fa2e73d Mon Sep 17 00:00:00 2001 From: Nir Gazit Date: Tue, 9 Jul 2024 16:47:06 +0200 Subject: [PATCH] fix(sdk): support parameters needed by Sentry SDK --- .../initialize-options.interface.ts | 22 +++++++++++++++++-- .../traceloop-sdk/src/lib/tracing/index.ts | 10 ++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts b/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts index 5df379eb..3c080415 100644 --- a/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts +++ b/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts @@ -1,5 +1,5 @@ -import { SpanExporter } from "@opentelemetry/sdk-trace-base"; - +import { SpanExporter, SpanProcessor } from "@opentelemetry/sdk-trace-base"; +import { TextMapPropagator, ContextManager } from "@opentelemetry/api"; import type * as openai from "openai"; import type * as anthropic from "@anthropic-ai/sdk"; import type * as azure from "@azure/openai"; @@ -67,6 +67,24 @@ export interface InitializeOptions { */ exporter?: SpanExporter; + /** + * The OpenTelemetry SpanProcessor to be used for processing traces data. Optional. + * Defaults to the BatchSpanProcessor. + */ + processor?: SpanProcessor; + + /** + * The OpenTelemetry Propagator to use. Optional. + * Defaults to OpenTelemetry SDK defaults. + */ + propagator?: TextMapPropagator; + + /** + * The OpenTelemetry ContextManager to use. Optional. + * Defaults to OpenTelemetry SDK defaults. + */ + contextManager?: ContextManager; + /** * Explicitly specify modules to instrument. Optional. * This is a workaround specific to Next.js, see https://www.traceloop.com/docs/openllmetry/getting-started-nextjs diff --git a/packages/traceloop-sdk/src/lib/tracing/index.ts b/packages/traceloop-sdk/src/lib/tracing/index.ts index 99f1671e..3aecebde 100644 --- a/packages/traceloop-sdk/src/lib/tracing/index.ts +++ b/packages/traceloop-sdk/src/lib/tracing/index.ts @@ -3,6 +3,7 @@ import { NodeSDK } from "@opentelemetry/sdk-node"; import { SimpleSpanProcessor, BatchSpanProcessor, + SpanProcessor, } from "@opentelemetry/sdk-trace-node"; import { Span, context, diag } from "@opentelemetry/api"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto"; @@ -281,12 +282,19 @@ export const startTracing = (options: InitializeOptions) => { }); } + const spanProcessors: SpanProcessor[] = [_spanProcessor]; + if (options.processor) { + spanProcessors.push(options.processor); + } + _sdk = new NodeSDK({ resource: new Resource({ [SEMRESATTRS_SERVICE_NAME]: options.appName || process.env.npm_package_name, }), - spanProcessors: [_spanProcessor], + spanProcessors, + contextManager: options.contextManager, + textMapPropagator: options.propagator, traceExporter, instrumentations, // We should re-consider removing unrelevant spans here in the future