export const SentryLive = Effect.all([GadgetConfig, SentryConfig])
.pipe(
Effect.map(([gadgetConfig, sentryConfig]) => {
return Sentry.init({
dsn: Redacted.value(sentryConfig.dsn),
environment: gadgetConfig.environment,
integrations: [nodeProfilingIntegration(), extraErrorDataIntegration()],
tracesSampleRate: 1.0,
profilesSampleRate: 1.0,
});
}),
)
.pipe(Layer.scopedDiscard);
export const OpentelemetrySentryLive = NodeSdk.layer(() => {
const client = getClient();
if (client) {
setupEventContextTrace(client);
}
const SentryContextManager = wrapContextManagerClass(
AsyncLocalStorageContextManager,
);
return {
resource: {
serviceName: `${APP_NAME}/OpenTelemetrySentryLive`,
},
spanProcessor: new SentrySpanProcessor(),
textMapPropagator: new SentryPropagator(),
contextManager: new SentryContextManager(),
sampler: client ? new SentrySampler(client) : undefined,
traceExporter: new OTLPTraceExporter(),
instrumentations: [getNodeAutoInstrumentations()],
};
});
export const SentryLive = Effect.all([GadgetConfig, SentryConfig])
.pipe(
Effect.map(([gadgetConfig, sentryConfig]) => {
return Sentry.init({
dsn: Redacted.value(sentryConfig.dsn),
environment: gadgetConfig.environment,
integrations: [nodeProfilingIntegration(), extraErrorDataIntegration()],
tracesSampleRate: 1.0,
profilesSampleRate: 1.0,
});
}),
)
.pipe(Layer.scopedDiscard);
export const OpentelemetrySentryLive = NodeSdk.layer(() => {
const client = getClient();
if (client) {
setupEventContextTrace(client);
}
const SentryContextManager = wrapContextManagerClass(
AsyncLocalStorageContextManager,
);
return {
resource: {
serviceName: `${APP_NAME}/OpenTelemetrySentryLive`,
},
spanProcessor: new SentrySpanProcessor(),
textMapPropagator: new SentryPropagator(),
contextManager: new SentryContextManager(),
sampler: client ? new SentrySampler(client) : undefined,
traceExporter: new OTLPTraceExporter(),
instrumentations: [getNodeAutoInstrumentations()],
};
});