Add OpenTelemetry Browser Support #7364
Replies: 4 comments 7 replies
-
Is there a workaround at the moment? I just migrated Node.js to OpenTelemetry/Sentry, and realized that there isn't browser integration. Does the existing Sentry tracer inter-op with Node.js OpenTelemetry? |
Beta Was this translation helpful? Give feedback.
-
I'm trying to use Sentry with OpenTelemetry in my React app. export function setupSentry() { // before sentryInit({ dsn: SENTRY_PROJECT_DSN, instrumenter: 'otel', // set the instrumenter to use OpenTelemetry instead of Sentry tracesSampleRate: 1.0, // Adjust this value in production debug: true, // Enable debug mode for more detailed logs beforeSend: (event: SentryEvent) => { console.log('Event beforeSend:', event); return event; }, beforeSendTransaction: (transaction) => { console.log('Transaction beforeSend:', transaction); return transaction; }, }); const client = getClient(); // Ensure the trace context is set on all events. setupEventContextTrace(client); const provider = new WebTracerProvider({ sampler: new SentrySampler(client), // A custom OTEL sampler that uses Sentry sampling rates to make its decision }); // Add a batch span processor to export spans to Sentry provider.addSpanProcessor(new BatchSpanProcessor(new SentrySpanProcessor())); // SentrySpanProcessor - Converts OpenTelemetry Spans to Sentry Spans and sends them to Sentry via the Sentry SDK. // Wrap an OpenTelemetry ContextManager in a way that ensures the context is kept in sync with the Sentry Scope. // Changing default contextManager to use ZoneContextManager - supports asynchronous operations - optional const SentryContextManager = wrapContextManagerClass(ZoneContextManager); // Initialize the provider - Register the provider to make it the active tracer provider provider.register({ propagator: new SentryPropagator(), contextManager: new SentryContextManager(), }); registerInstrumentations({ instrumentations: [ new UserInteractionInstrumentation(), new XMLHttpRequestInstrumentation(), new FetchInstrumentation(), ], tracerProvider: provider, }); return provider.getTracer('my-web-app'); } This is how I'm reporting spans: <Button onClick={() => { // Example of starting a span and capturing an error const span = tracer.startSpan('example-span'); try { // Some code that might throw an error console.log('I am about to throw an error'); throw new Error('This is a handled error within a span'); } catch (error) { span.recordException(error); } finally { console.log('I am about to end the span'); span.end(); } }} > Handled Error </Button> What am I missing? I would expect the spans to be sent through the network to Sentry, but it's not happening. |
Beta Was this translation helpful? Give feedback.
-
@AbhiPrasad Is there any new timeline on when this will be implemented? |
Beta Was this translation helpful? Give feedback.
-
I'm using Sentry on the client side, with a tunnel on my server for Sentry data. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Just like we have for Node: https://github.com/getsentry/sentry-javascript/tree/develop/packages/opentelemetry-node
If you would like to see this please leave a comment/reaction to this post! This helps us prioritize what to work on.
Beta Was this translation helpful? Give feedback.
All reactions