diff --git a/controlplane/.env.example b/controlplane/.env.example index d8a3279427..1746aea18d 100644 --- a/controlplane/.env.example +++ b/controlplane/.env.example @@ -82,4 +82,5 @@ SENTRY_DSN="" SENTRY_SEND_DEFAULT_PII="false" SENTRY_TRACES_SAMPLE_RATE="1.0" SENTRY_PROFILE_SESSION_SAMPLE_RATE="1.0" +SENTRY_PROFILE_LIFECYCLE="manual" SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS="100" diff --git a/controlplane/src/core/env.schema.ts b/controlplane/src/core/env.schema.ts index 812b8836f2..e546575492 100644 --- a/controlplane/src/core/env.schema.ts +++ b/controlplane/src/core/env.schema.ts @@ -203,6 +203,7 @@ export const envVariables = z .default('false'), SENTRY_TRACES_SAMPLE_RATE: z.coerce.number().optional().default(1), SENTRY_PROFILE_SESSION_SAMPLE_RATE: z.coerce.number().optional().default(1), + SENTRY_PROFILE_LIFECYCLE: z.enum(['manual', 'trace']).optional().default('manual'), SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS: z.coerce.number().optional().default(100), }) .refine((input) => { diff --git a/controlplane/src/core/sentry.config.ts b/controlplane/src/core/sentry.config.ts index 8d8c61128e..28b1bc8aa7 100644 --- a/controlplane/src/core/sentry.config.ts +++ b/controlplane/src/core/sentry.config.ts @@ -10,6 +10,7 @@ export interface SentryConfig { dsn: string; eventLoopBlockIntegrationThresholdMs?: number; profileSessionSampleRate?: number; + profileLifecycle?: 'manual' | 'trace'; sendDefaultPii?: boolean; tracesSampleRate?: number; }; @@ -26,6 +27,7 @@ export function init(opts: SentryConfig) { profileSessionSampleRate: opts.sentry.profileSessionSampleRate, sendDefaultPii: opts.sentry.sendDefaultPii, tracesSampleRate: opts.sentry.tracesSampleRate, + profileLifecycle: opts.sentry.profileLifecycle, }); } } diff --git a/controlplane/src/index.ts b/controlplane/src/index.ts index a0ec5198e3..46031ce874 100644 --- a/controlplane/src/index.ts +++ b/controlplane/src/index.ts @@ -73,6 +73,7 @@ const { SENTRY_SEND_DEFAULT_PII, SENTRY_TRACES_SAMPLE_RATE, SENTRY_PROFILE_SESSION_SAMPLE_RATE, + SENTRY_PROFILE_LIFECYCLE, SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS, } = envVariables.parse(process.env); @@ -187,6 +188,7 @@ if (SENTRY_ENABLED) { dsn: SENTRY_DSN, eventLoopBlockIntegrationThresholdMs: SENTRY_EVENT_LOOP_BLOCK_THRESHOLD_MS, profileSessionSampleRate: SENTRY_PROFILE_SESSION_SAMPLE_RATE, + profileLifecycle: SENTRY_PROFILE_LIFECYCLE, sendDefaultPii: SENTRY_SEND_DEFAULT_PII, tracesSampleRate: SENTRY_TRACES_SAMPLE_RATE, },