Skip to content

Commit cf9aa82

Browse files
committed
Example of adding sentry to an existing OTEL app
1 parent 01a2c35 commit cf9aa82

File tree

5 files changed

+2546
-39
lines changed

5 files changed

+2546
-39
lines changed

examples/esm-http-ts/index.ts

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
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+
124
import { registerInstrumentations } from '@opentelemetry/instrumentation';
225
import { trace, DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';
326
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
@@ -10,21 +33,32 @@ import { Resource } from '@opentelemetry/resources';
1033
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
1134
import 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+
1441
const tracerProvider = new NodeTracerProvider({
1542
resource: new Resource({
1643
[SEMRESATTRS_SERVICE_NAME]: 'esm-http-ts-example',
1744
}),
45+
sampler: sentryClient ? new SentrySampler(sentryClient) : undefined,
1846
});
1947
const exporter = new ConsoleSpanExporter();
2048
const processor = new SimpleSpanProcessor(exporter);
49+
tracerProvider.addSpanProcessor(new SentrySpanProcessor());
2150
tracerProvider.addSpanProcessor(processor);
22-
tracerProvider.register();
51+
tracerProvider.register({
52+
propagator: new SentryPropagator(),
53+
contextManager: new Sentry.SentryContextManager(),
54+
});
2355

2456
registerInstrumentations({
2557
instrumentations: [new HttpInstrumentation()],
2658
});
2759

60+
Sentry.validateOpenTelemetrySetup();
61+
2862
const hostname = '0.0.0.0';
2963
const port = 3000;
3064

0 commit comments

Comments
 (0)