1+ import * as Sentry from "@sentry/node" ;
2+ import {
3+ SentrySpanProcessor ,
4+ SentryPropagator ,
5+ SentrySampler ,
6+ } from "@sentry/opentelemetry" ;
7+
8+ // Make sure `Sentry.init` is called before any other OTEL code
9+ Sentry . init ( {
10+ // fake DSN
11+ dsn :
"https://[email protected] /1337" , 12+ skipOpenTelemetrySetup : true ,
13+
14+ beforeSendTransaction : ( transaction ) => {
15+ // Log out transactions for debugging, don't send any data to Sentry
16+ console . log ( transaction ) ;
17+ return null ;
18+ } ,
19+
20+ // The SentrySampler will use this to determine which traces to sample
21+ tracesSampleRate : 1.0 ,
22+ } ) ;
23+
124import { registerInstrumentations } from '@opentelemetry/instrumentation' ;
225import { trace , DiagConsoleLogger , DiagLogLevel , diag } from '@opentelemetry/api' ;
326import { HttpInstrumentation } from '@opentelemetry/instrumentation-http' ;
@@ -10,21 +33,32 @@ import { Resource } from '@opentelemetry/resources';
1033import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions' ;
1134import http from 'http' ;
1235
13- diag . setLogger ( new DiagConsoleLogger ( ) , DiagLogLevel . DEBUG ) ;
36+ // Turn of OTEL debug logging in favour of Sentry debug logging
37+ // diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
38+
39+ const sentryClient = Sentry . getClient ( ) ;
40+
1441const tracerProvider = new NodeTracerProvider ( {
1542 resource : new Resource ( {
1643 [ SEMRESATTRS_SERVICE_NAME ] : 'esm-http-ts-example' ,
1744 } ) ,
45+ sampler : sentryClient ? new SentrySampler ( sentryClient ) : undefined ,
1846} ) ;
1947const exporter = new ConsoleSpanExporter ( ) ;
2048const processor = new SimpleSpanProcessor ( exporter ) ;
49+ tracerProvider . addSpanProcessor ( new SentrySpanProcessor ( ) ) ;
2150tracerProvider . addSpanProcessor ( processor ) ;
22- tracerProvider . register ( ) ;
51+ tracerProvider . register ( {
52+ propagator : new SentryPropagator ( ) ,
53+ contextManager : new Sentry . SentryContextManager ( ) ,
54+ } ) ;
2355
2456registerInstrumentations ( {
2557 instrumentations : [ new HttpInstrumentation ( ) ] ,
2658} ) ;
2759
60+ Sentry . validateOpenTelemetrySetup ( ) ;
61+
2862const hostname = '0.0.0.0' ;
2963const port = 3000 ;
3064
0 commit comments