Skip to content

Commit a691b33

Browse files
committed
feat: Update Sentry integration with enhanced profiling and logging features
1 parent f475f88 commit a691b33

File tree

6 files changed

+179
-24
lines changed

6 files changed

+179
-24
lines changed

apps/api/src/instrument.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ if (!process.env.SESAME_SENTRY_DSN) {
1414
tracesSampleRate: 1.0,
1515
profilesSampleRate: 1.0,
1616
includeLocalVariables: true,
17+
profileSessionSampleRate: 1.0,
1718
profileLifecycle: 'trace',
19+
normalizeDepth: 10,
20+
attachStacktrace: true,
1821

1922
enableLogs: true,
2023

@@ -30,10 +33,5 @@ if (!process.env.SESAME_SENTRY_DSN) {
3033
Sentry.fsIntegration(),
3134
],
3235
})
33-
Sentry.startSpan({
34-
name: "My Span",
35-
}, () => {
36-
// The code executed here will be profiled
37-
});
3836
Logger.log(`Sentry initialized successfully`, 'SentryInit')
3937
}

apps/web/nuxt.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export default defineNuxtConfig({
7272
},
7373
runtimeConfig: {
7474
public: {
75+
release: process.env.npm_package_name + '@' + process.env.npm_package_version,
7576
sentry: {
7677
dsn: process.env.SESAME_SENTRY_DSN,
7778
},
@@ -91,7 +92,7 @@ export default defineNuxtConfig({
9192
...setupApp(),
9293
],
9394
sentry: {
94-
// autoInjectServerSentry: "top-level-import",
95+
autoInjectServerSentry: "top-level-import",
9596
},
9697
auth: {
9798
globalMiddleware: true,

apps/web/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
"@nyariv/sandboxjs": "^0.8.25",
2626
"@pinia/nuxt": "^0.11.2",
2727
"@quasar/extras": "^1.17.0",
28+
"@sentry/browser": "^10.26.0",
2829
"@sentry/nuxt": "^10.25.0",
30+
"@sentry/profiling-node": "^10.26.0",
2931
"@vueuse/router": "^13.9.0",
3032
"ajv": "^8.17.1",
3133
"ajv-errors": "^3.0.0",
@@ -72,4 +74,4 @@
7274
"string-width": "^1.0.2 || 2 || 3 || 4"
7375
},
7476
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
75-
}
77+
}

apps/web/sentry.client.config.ts

Lines changed: 56 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,66 @@
11
import * as Sentry from '@sentry/nuxt'
22
import { useRuntimeConfig } from '#imports'
3+
import { consola } from 'consola'
34

45
const runtimeConfig = useRuntimeConfig()
56

6-
Sentry.init({
7-
// Prefer the Nuxt runtime config for client-side DSN access
8-
dsn: runtimeConfig.public?.sentry?.dsn,
7+
if (!runtimeConfig.public?.sentry?.dsn) {
8+
consola.warn('SENTRY DSN not provided, Sentry is disabled')
9+
} else {
10+
Sentry.init({
11+
dsn: runtimeConfig.public?.sentry?.dsn,
12+
release: runtimeConfig.public?.release,
13+
debug: false,
914

10-
// Attach basic user context (IP/headers) when available
11-
sendDefaultPii: true,
15+
sendDefaultPii: true,
1216

13-
// Performance: capture a sample of transactions (adjust in production)
14-
tracesSampleRate: 1.0,
17+
tracesSampleRate: 1.0,
18+
profilesSampleRate: 1.0,
19+
profileSessionSampleRate: 1.0,
20+
replaysSessionSampleRate: 0.1,
21+
replaysOnErrorSampleRate: 1.0,
22+
includeLocalVariables: true,
23+
profileLifecycle: 'trace',
24+
normalizeDepth: 10,
25+
attachStacktrace: true,
1526

16-
// Session Replay: capture 10% of sessions and 100% on error
17-
replaysSessionSampleRate: 0.1,
18-
replaysOnErrorSampleRate: 1.0,
27+
enableLogs: true,
1928

20-
// Browser Console logs to Sentry (verbose in dev only)
21-
enableLogs: process.env.NODE_ENV === 'development',
29+
integrations: [
30+
Sentry.replayIntegration({
31+
maskAllText: true,
32+
blockAllMedia: true,
33+
}),
34+
Sentry.vueIntegration({
35+
tracingOptions: {
36+
trackComponents: true,
37+
timeout: 500, // milliseconds
38+
},
39+
}),
40+
Sentry.piniaIntegration(usePinia()),
41+
Sentry.browserTracingIntegration(),
42+
// Sentry.browserProfilingIntegration(),
43+
Sentry.consoleLoggingIntegration({ levels: ["log", "warn", "error"] }),
44+
Sentry.feedbackIntegration({
45+
id: "sesame-feedback-widget",
46+
colorScheme: "system",
47+
showBranding: false,
48+
autoInject: false,
49+
useSentryUser: {
50+
name: "fullName",
51+
email: "email",
52+
},
53+
}),
54+
],
2255

23-
// Enable Replay
24-
integrations: [Sentry.replayIntegration()],
25-
})
26-
27-
console.log('Sentry client initialized with DSN:', runtimeConfig.public?.sentry?.dsn)
56+
beforeSend(event, hint) {
57+
if (event.exception && event.event_id) {
58+
const feedback = Sentry.getFeedback();
59+
feedback?.createWidget();
60+
// Sentry.showReportDialog({ eventId: event.event_id })
61+
}
62+
return event
63+
},
64+
})
65+
consola.debug(`Sentry initialized successfully`)
66+
}

apps/web/src/assets/sass/global.sass

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ blockquote
55
margin: 0 0 20px
66
border-left: 4px solid $primary
77

8+
#sesame-feedback-widget
9+
810
.sesame-sticky-last-column-table
911
thead
1012
tr:last-child

yarn.lock

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4046,13 +4046,27 @@
40464046
dependencies:
40474047
"@sentry/core" "10.25.0"
40484048

4049+
"@sentry-internal/browser-utils@10.26.0":
4050+
version "10.26.0"
4051+
resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-10.26.0.tgz#ab8e12f009a9f3994c7438ccec7afc46c01ae00d"
4052+
integrity sha512-rPg1+JZlfp912pZONQAWZzbSaZ9L6R2VrMcCEa+2e2Gqk9um4b+LqF5RQWZsbt5Z0n0azSy/KQ6zAe/zTPXSOg==
4053+
dependencies:
4054+
"@sentry/core" "10.26.0"
4055+
40494056
"@sentry-internal/feedback@10.25.0":
40504057
version "10.25.0"
40514058
resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-10.25.0.tgz#9a335f11bada42bde307e3fa58b0aaf764aea40e"
40524059
integrity sha512-qlbT4tOd+WRyKpLdsbi26rkynGBoVabnY8/9rFnTxZ0WIUG5EFhJFqEeRLMyv+uk0uRFF3H0I9+u+qP/BKxIcQ==
40534060
dependencies:
40544061
"@sentry/core" "10.25.0"
40554062

4063+
"@sentry-internal/feedback@10.26.0":
4064+
version "10.26.0"
4065+
resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-10.26.0.tgz#31f0cbf9fe9908432ceb409e5dce099b5028cefd"
4066+
integrity sha512-0vk9eQP0CXD7Y2WkcCIWHaAqnXOAi18/GupgWLnbB2kuQVYVtStWxtW+OWRe8W/XwSnZ5m6JBTVeokuk/O16DQ==
4067+
dependencies:
4068+
"@sentry/core" "10.26.0"
4069+
40564070
"@sentry-internal/node-cpu-profiler@^2.2.0":
40574071
version "2.2.0"
40584072
resolved "https://registry.yarnpkg.com/@sentry-internal/node-cpu-profiler/-/node-cpu-profiler-2.2.0.tgz#0640d4aebb4d36031658ccff83dc22b76f437ede"
@@ -4069,6 +4083,14 @@
40694083
"@sentry-internal/replay" "10.25.0"
40704084
"@sentry/core" "10.25.0"
40714085

4086+
"@sentry-internal/replay-canvas@10.26.0":
4087+
version "10.26.0"
4088+
resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-10.26.0.tgz#81a2cb606dcbb728aed646cb4ebffad1d7c64949"
4089+
integrity sha512-vs7d/P+8M1L1JVAhhJx2wo15QDhqAipnEQvuRZ6PV7LUcS1un9/Vx49FMxpIkx6JcKADJVwtXrS1sX2hoNT/kw==
4090+
dependencies:
4091+
"@sentry-internal/replay" "10.26.0"
4092+
"@sentry/core" "10.26.0"
4093+
40724094
"@sentry-internal/replay@10.25.0":
40734095
version "10.25.0"
40744096
resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-10.25.0.tgz#5aa936c551bcac5ce0825550ec382e83e9774142"
@@ -4077,6 +4099,14 @@
40774099
"@sentry-internal/browser-utils" "10.25.0"
40784100
"@sentry/core" "10.25.0"
40794101

4102+
"@sentry-internal/replay@10.26.0":
4103+
version "10.26.0"
4104+
resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-10.26.0.tgz#294b9596f99905eca071782e48403cd4d82e38c3"
4105+
integrity sha512-FMySQnY2/p0dVtFUBgUO+aMdK2ovqnd7Q/AkvMQUsN/5ulyj6KZx3JX3CqOqRtAr1izoCe4Kh2pi5t//sQmvsg==
4106+
dependencies:
4107+
"@sentry-internal/browser-utils" "10.26.0"
4108+
"@sentry/core" "10.26.0"
4109+
40804110
"@sentry/babel-plugin-component-annotate@4.6.0":
40814111
version "4.6.0"
40824112
resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.6.0.tgz#355a66b20dfeca5438d34fc2b903b47fd153aa41"
@@ -4093,6 +4123,17 @@
40934123
"@sentry-internal/replay-canvas" "10.25.0"
40944124
"@sentry/core" "10.25.0"
40954125

4126+
"@sentry/browser@^10.26.0":
4127+
version "10.26.0"
4128+
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-10.26.0.tgz#ad63a0e4ff5e5c1b6bcd8a678cee89ba9b5f60af"
4129+
integrity sha512-uvV4hnkt8bh8yP0disJ0fszy8FdnkyGtzyIVKdeQZbNUefwbDhd3H0KJrAHhJ5ocULMH3B+dipdPmw2QXbEflg==
4130+
dependencies:
4131+
"@sentry-internal/browser-utils" "10.26.0"
4132+
"@sentry-internal/feedback" "10.26.0"
4133+
"@sentry-internal/replay" "10.26.0"
4134+
"@sentry-internal/replay-canvas" "10.26.0"
4135+
"@sentry/core" "10.26.0"
4136+
40964137
"@sentry/bundler-plugin-core@4.6.0":
40974138
version "4.6.0"
40984139
resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.6.0.tgz#6f1881ea056813e663dc8b855a564649a35263c0"
@@ -4180,6 +4221,11 @@
41804221
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-10.25.0.tgz#99e5253a1a5e52f7e8972c89dcf3e710700e4059"
41814222
integrity sha512-mGi4BYIPwZjWdOXHrPoXz1AW4/cQbFoiuW/m+OOATmtSoGTDnWYwP+qZU7VLlL+v8ZEzxfPi2C1NPfJtPj7QWA==
41824223

4224+
"@sentry/core@10.26.0":
4225+
version "10.26.0"
4226+
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-10.26.0.tgz#381ce1987aca78b7dedae08f6b806406ab6e6ffe"
4227+
integrity sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==
4228+
41834229
"@sentry/nestjs@^10.25.0":
41844230
version "10.25.0"
41854231
resolved "https://registry.yarnpkg.com/@sentry/nestjs/-/nestjs-10.25.0.tgz#d368f0fd22de9fab15c963d55adf53fad75cd18d"
@@ -4203,6 +4249,16 @@
42034249
"@sentry/opentelemetry" "10.25.0"
42044250
import-in-the-middle "^1.14.2"
42054251

4252+
"@sentry/node-core@10.26.0":
4253+
version "10.26.0"
4254+
resolved "https://registry.yarnpkg.com/@sentry/node-core/-/node-core-10.26.0.tgz#1ef142eed75a77c51238621c4ffa3d19b7416143"
4255+
integrity sha512-7OrHVn8XAsq9mMVMlpL18XTKQEVcLOJSo0n2M7QGKfFk/OfVtSFMcUWGqN1qhYtT9aMTr2bjtR5+BI33djnNTQ==
4256+
dependencies:
4257+
"@apm-js-collab/tracing-hooks" "^0.3.1"
4258+
"@sentry/core" "10.26.0"
4259+
"@sentry/opentelemetry" "10.26.0"
4260+
import-in-the-middle "^1.14.2"
4261+
42064262
"@sentry/node@10.25.0":
42074263
version "10.25.0"
42084264
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-10.25.0.tgz#333b946558c0468c6856f874bdc8e921f8e55ca2"
@@ -4244,6 +4300,47 @@
42444300
import-in-the-middle "^1.14.2"
42454301
minimatch "^9.0.0"
42464302

4303+
"@sentry/node@10.26.0":
4304+
version "10.26.0"
4305+
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-10.26.0.tgz#691697582254371e5eb6151e4df77c7d4582d022"
4306+
integrity sha512-VUwNoKYhRpnHQSj9lty1TgooO+1wcpS1V0K87HU8sZEas5gx3Ujiouk5ocPjlgbKreoYOApgOnEEIq5W/hfQcQ==
4307+
dependencies:
4308+
"@opentelemetry/api" "^1.9.0"
4309+
"@opentelemetry/context-async-hooks" "^2.1.0"
4310+
"@opentelemetry/core" "^2.1.0"
4311+
"@opentelemetry/instrumentation" "^0.204.0"
4312+
"@opentelemetry/instrumentation-amqplib" "0.51.0"
4313+
"@opentelemetry/instrumentation-connect" "0.48.0"
4314+
"@opentelemetry/instrumentation-dataloader" "0.22.0"
4315+
"@opentelemetry/instrumentation-express" "0.53.0"
4316+
"@opentelemetry/instrumentation-fs" "0.24.0"
4317+
"@opentelemetry/instrumentation-generic-pool" "0.48.0"
4318+
"@opentelemetry/instrumentation-graphql" "0.52.0"
4319+
"@opentelemetry/instrumentation-hapi" "0.51.0"
4320+
"@opentelemetry/instrumentation-http" "0.204.0"
4321+
"@opentelemetry/instrumentation-ioredis" "0.52.0"
4322+
"@opentelemetry/instrumentation-kafkajs" "0.14.0"
4323+
"@opentelemetry/instrumentation-knex" "0.49.0"
4324+
"@opentelemetry/instrumentation-koa" "0.52.0"
4325+
"@opentelemetry/instrumentation-lru-memoizer" "0.49.0"
4326+
"@opentelemetry/instrumentation-mongodb" "0.57.0"
4327+
"@opentelemetry/instrumentation-mongoose" "0.51.0"
4328+
"@opentelemetry/instrumentation-mysql" "0.50.0"
4329+
"@opentelemetry/instrumentation-mysql2" "0.51.0"
4330+
"@opentelemetry/instrumentation-pg" "0.57.0"
4331+
"@opentelemetry/instrumentation-redis" "0.53.0"
4332+
"@opentelemetry/instrumentation-tedious" "0.23.0"
4333+
"@opentelemetry/instrumentation-undici" "0.15.0"
4334+
"@opentelemetry/resources" "^2.1.0"
4335+
"@opentelemetry/sdk-trace-base" "^2.1.0"
4336+
"@opentelemetry/semantic-conventions" "^1.37.0"
4337+
"@prisma/instrumentation" "6.15.0"
4338+
"@sentry/core" "10.26.0"
4339+
"@sentry/node-core" "10.26.0"
4340+
"@sentry/opentelemetry" "10.26.0"
4341+
import-in-the-middle "^1.14.2"
4342+
minimatch "^9.0.0"
4343+
42474344
"@sentry/nuxt@^10.25.0":
42484345
version "10.25.0"
42494346
resolved "https://registry.yarnpkg.com/@sentry/nuxt/-/nuxt-10.25.0.tgz#ad2315e64b8ff4b48a91c92b43aa2d731591777b"
@@ -4265,6 +4362,13 @@
42654362
dependencies:
42664363
"@sentry/core" "10.25.0"
42674364

4365+
"@sentry/opentelemetry@10.26.0":
4366+
version "10.26.0"
4367+
resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-10.26.0.tgz#26745b55d9e65e135e7f9264d83705bb72e9ba13"
4368+
integrity sha512-ASJdOwn6NwMH2ZeBrnGJI+l/xkJp1AOiQ5FWkvTqLc/vHX+r3PDMO7c+koecY+LiZxSzZF4IV8sALXfOh6UnwA==
4369+
dependencies:
4370+
"@sentry/core" "10.26.0"
4371+
42684372
"@sentry/profiling-node@^10.25.0":
42694373
version "10.25.0"
42704374
resolved "https://registry.yarnpkg.com/@sentry/profiling-node/-/profiling-node-10.25.0.tgz#bf8c4d2e5fe41092965a5793b0d04690fbd374db"
@@ -4274,6 +4378,15 @@
42744378
"@sentry/core" "10.25.0"
42754379
"@sentry/node" "10.25.0"
42764380

4381+
"@sentry/profiling-node@^10.26.0":
4382+
version "10.26.0"
4383+
resolved "https://registry.yarnpkg.com/@sentry/profiling-node/-/profiling-node-10.26.0.tgz#d158e50f570a73191ac5bb412ed9c1e4073c8006"
4384+
integrity sha512-NgfKgrJc39q/khkWZFph1tiZ1uUadtL8VrBTe+7eB/vogPAuEJa+eH/oCS3/M+Pu2fal61MoCw+2qHDH5JDxQQ==
4385+
dependencies:
4386+
"@sentry-internal/node-cpu-profiler" "^2.2.0"
4387+
"@sentry/core" "10.26.0"
4388+
"@sentry/node" "10.26.0"
4389+
42774390
"@sentry/rollup-plugin@^4.3.0":
42784391
version "4.6.0"
42794392
resolved "https://registry.yarnpkg.com/@sentry/rollup-plugin/-/rollup-plugin-4.6.0.tgz#b1730da5990468c98660590390d9e1e043e47262"

0 commit comments

Comments
 (0)