Skip to content

Commit 4800576

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

File tree

5 files changed

+2545
-39
lines changed

5 files changed

+2545
-39
lines changed

examples/esm-http-ts/index.ts

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
import * as Sentry from "@sentry/node";
2+
import {
3+
SentrySpanProcessor,
4+
SentryPropagator,
5+
SentrySampler,
6+
} from "@sentry/opentelemetry";
7+
8+
Sentry.init({
9+
// debug: true,
10+
// fake DSN
11+
dsn: "https://public@dsn.ingest.sentry.io/1337",
12+
skipOpenTelemetrySetup: true,
13+
14+
beforeSendTransaction: (transaction) => {
15+
console.log(transaction);
16+
return null;
17+
},
18+
19+
// The SentrySampler will use this to determine which traces to sample
20+
tracesSampleRate: 1.0,
21+
});
22+
123
import { registerInstrumentations } from '@opentelemetry/instrumentation';
224
import { trace, DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';
325
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
@@ -10,21 +32,32 @@ import { Resource } from '@opentelemetry/resources';
1032
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
1133
import http from 'http';
1234

13-
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
35+
// Turn of OTEL debug logging in favour of Sentry debug logging
36+
// diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
37+
38+
const sentryClient = Sentry.getClient();
39+
1440
const tracerProvider = new NodeTracerProvider({
1541
resource: new Resource({
1642
[SEMRESATTRS_SERVICE_NAME]: 'esm-http-ts-example',
1743
}),
44+
sampler: sentryClient ? new SentrySampler(sentryClient) : undefined,
1845
});
1946
const exporter = new ConsoleSpanExporter();
2047
const processor = new SimpleSpanProcessor(exporter);
48+
tracerProvider.addSpanProcessor(new SentrySpanProcessor());
2149
tracerProvider.addSpanProcessor(processor);
22-
tracerProvider.register();
50+
tracerProvider.register({
51+
propagator: new SentryPropagator(),
52+
contextManager: new Sentry.SentryContextManager(),
53+
});
2354

2455
registerInstrumentations({
2556
instrumentations: [new HttpInstrumentation()],
2657
});
2758

59+
Sentry.validateOpenTelemetrySetup();
60+
2861
const hostname = '0.0.0.0';
2962
const port = 3000;
3063

0 commit comments

Comments
 (0)