From 932ab13d979ff4d7e13e657951d0475ee7a32df2 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Tue, 3 Dec 2024 15:10:05 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=88(collaboration)=20add=20sentry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add sentry to the collaboration server. It will be used to log errors and exceptions. --- src/frontend/servers/y-provider/package.json | 2 + src/frontend/servers/y-provider/src/env.ts | 1 + src/frontend/servers/y-provider/src/server.ts | 5 ++ .../servers/y-provider/src/services/sentry.ts | 11 +++ src/frontend/yarn.lock | 84 ++++++++++++++++++- 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 src/frontend/servers/y-provider/src/services/sentry.ts diff --git a/src/frontend/servers/y-provider/package.json b/src/frontend/servers/y-provider/package.json index 08586eb7..b53a477c 100644 --- a/src/frontend/servers/y-provider/package.json +++ b/src/frontend/servers/y-provider/package.json @@ -17,6 +17,8 @@ }, "dependencies": { "@hocuspocus/server": "2.14.0", + "@sentry/node": "8.41.0", + "@sentry/profiling-node": "8.41.0", "express": "4.21.1", "express-ws": "5.0.2", "y-protocols": "1.0.6" diff --git a/src/frontend/servers/y-provider/src/env.ts b/src/frontend/servers/y-provider/src/env.ts index 571d52e0..e2a8d782 100644 --- a/src/frontend/servers/y-provider/src/env.ts +++ b/src/frontend/servers/y-provider/src/env.ts @@ -5,3 +5,4 @@ export const COLLABORATION_SERVER_ORIGIN = export const COLLABORATION_SERVER_SECRET = process.env.COLLABORATION_SERVER_SECRET || 'secret-api-key'; export const PORT = Number(process.env.PORT || 4444); +export const SENTRY_DSN = process.env.SENTRY_DSN || ''; diff --git a/src/frontend/servers/y-provider/src/server.ts b/src/frontend/servers/y-provider/src/server.ts index 2ff1ad6c..804a58bf 100644 --- a/src/frontend/servers/y-provider/src/server.ts +++ b/src/frontend/servers/y-provider/src/server.ts @@ -1,4 +1,7 @@ +// eslint-disable-next-line import/order +import './services/sentry'; import { Server } from '@hocuspocus/server'; +import * as Sentry from '@sentry/node'; import express, { Request, Response } from 'express'; import expressWebsockets from 'express-ws'; @@ -130,6 +133,8 @@ export const initServer = () => { }, ); + Sentry.setupExpressErrorHandler(app); + app.get('/ping', (req, res) => { res.status(200).json({ message: 'pong' }); }); diff --git a/src/frontend/servers/y-provider/src/services/sentry.ts b/src/frontend/servers/y-provider/src/services/sentry.ts new file mode 100644 index 00000000..e4706801 --- /dev/null +++ b/src/frontend/servers/y-provider/src/services/sentry.ts @@ -0,0 +1,11 @@ +import * as Sentry from '@sentry/node'; +import { nodeProfilingIntegration } from '@sentry/profiling-node'; + +import { SENTRY_DSN } from '../env'; + +Sentry.init({ + dsn: SENTRY_DSN, + integrations: [nodeProfilingIntegration()], + tracesSampleRate: 1.0, + profilesSampleRate: 1.0, +}); diff --git a/src/frontend/yarn.lock b/src/frontend/yarn.lock index d1525d01..f7ca77b0 100644 --- a/src/frontend/yarn.lock +++ b/src/frontend/yarn.lock @@ -3906,6 +3906,13 @@ "@sentry/cli-win32-i686" "2.39.1" "@sentry/cli-win32-x64" "2.39.1" +"@sentry/core@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.41.0.tgz#e8a25cacd25fe4358f3179e85f3c2697427fe5a6" + integrity sha512-3v7u3t4LozCA5SpZY4yqUN2U3jSrkXNoLgz6L2SUUiydyCuSwXZIFEwpLJfgQyidpNDifeQbBI5E1O910XkPsA== + dependencies: + "@sentry/types" "8.41.0" + "@sentry/core@8.42.0": version "8.42.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.42.0.tgz#9fc0db6794186dc2d1167cf82e579e387198ba77" @@ -3932,6 +3939,48 @@ rollup "3.29.5" stacktrace-parser "^0.1.10" +"@sentry/node@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.41.0.tgz#52f970648d961f6e82a1b23a88c0000aa72ba21a" + integrity sha512-eYD5S8Lti9efBHFSIhZ/0C5uI1DQtGqjuNWQ62CKC47G2qgJddBtb2HgqRFAnMajYL9FXEtiDT6uqQhKQnmLcQ== + dependencies: + "@opentelemetry/api" "^1.9.0" + "@opentelemetry/context-async-hooks" "^1.25.1" + "@opentelemetry/core" "^1.25.1" + "@opentelemetry/instrumentation" "^0.54.0" + "@opentelemetry/instrumentation-amqplib" "^0.43.0" + "@opentelemetry/instrumentation-connect" "0.40.0" + "@opentelemetry/instrumentation-dataloader" "0.12.0" + "@opentelemetry/instrumentation-express" "0.44.0" + "@opentelemetry/instrumentation-fastify" "0.41.0" + "@opentelemetry/instrumentation-fs" "0.16.0" + "@opentelemetry/instrumentation-generic-pool" "0.39.0" + "@opentelemetry/instrumentation-graphql" "0.44.0" + "@opentelemetry/instrumentation-hapi" "0.41.0" + "@opentelemetry/instrumentation-http" "0.53.0" + "@opentelemetry/instrumentation-ioredis" "0.43.0" + "@opentelemetry/instrumentation-kafkajs" "0.4.0" + "@opentelemetry/instrumentation-knex" "0.41.0" + "@opentelemetry/instrumentation-koa" "0.43.0" + "@opentelemetry/instrumentation-lru-memoizer" "0.40.0" + "@opentelemetry/instrumentation-mongodb" "0.48.0" + "@opentelemetry/instrumentation-mongoose" "0.42.0" + "@opentelemetry/instrumentation-mysql" "0.41.0" + "@opentelemetry/instrumentation-mysql2" "0.41.0" + "@opentelemetry/instrumentation-nestjs-core" "0.40.0" + "@opentelemetry/instrumentation-pg" "0.44.0" + "@opentelemetry/instrumentation-redis-4" "0.42.0" + "@opentelemetry/instrumentation-tedious" "0.15.0" + "@opentelemetry/instrumentation-undici" "0.6.0" + "@opentelemetry/resources" "^1.26.0" + "@opentelemetry/sdk-trace-base" "^1.26.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@prisma/instrumentation" "5.19.1" + "@sentry/core" "8.41.0" + "@sentry/opentelemetry" "8.41.0" + "@sentry/types" "8.41.0" + import-in-the-middle "^1.11.2" + "@sentry/node@8.42.0": version "8.42.0" resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.42.0.tgz#829a02ce322bf7ee13e2bd09acc2eb56a8e04525" @@ -3973,6 +4022,14 @@ "@sentry/opentelemetry" "8.42.0" import-in-the-middle "^1.11.2" +"@sentry/opentelemetry@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.41.0.tgz#0e5c4bb8d5b58f07eb80e312fc66b8709a688c61" + integrity sha512-Ld6KdBQsmSk2IfFSoZ7CMpmuQbfb3viV6nTDCz6+11wL9S+1b+hadCN+38yBW4CmI4/hEpYfwwWQPseQQTvBCg== + dependencies: + "@sentry/core" "8.41.0" + "@sentry/types" "8.41.0" + "@sentry/opentelemetry@8.42.0": version "8.42.0" resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.42.0.tgz#d4a5e988689b3c64370eff5763e7cf3af4e43cba" @@ -3980,6 +4037,17 @@ dependencies: "@sentry/core" "8.42.0" +"@sentry/profiling-node@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@sentry/profiling-node/-/profiling-node-8.41.0.tgz#47acdac0373fc1dcce182370082bfd5f4f47720e" + integrity sha512-0/40Hzrm8XzCQL+CM65ETZMW+SV8Jp71+E+w2uh3xobSQJQSsZKOOwSj5Nmp5QL6v5ZOZZE0fceVaym1lhQylw== + dependencies: + "@sentry/core" "8.41.0" + "@sentry/node" "8.41.0" + "@sentry/types" "8.41.0" + detect-libc "^2.0.2" + node-abi "^3.61.0" + "@sentry/react@8.42.0": version "8.42.0" resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.42.0.tgz#7c3ae19e5d9ea3332303fcd347eb220ec1c69e93" @@ -3989,6 +4057,11 @@ "@sentry/core" "8.42.0" hoist-non-react-statics "^3.3.2" +"@sentry/types@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.41.0.tgz#db40c93bcedad26569c5dfe10a4b31253c349a10" + integrity sha512-eqdnGr9k9H++b9CjVUoTNUVahPVWeNnMy0YGkqS5+cjWWC+x43p56202oidGFmWo6702ub/xwUNH6M5PC4kq6A== + "@sentry/vercel-edge@8.42.0": version "8.42.0" resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-8.42.0.tgz#02149bacf42522916aacfe75fcd86f05c39fa48a" @@ -6373,7 +6446,7 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-libc@^2.0.3: +detect-libc@^2.0.2, detect-libc@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== @@ -10112,6 +10185,13 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-abi@^3.61.0: + version "3.71.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.71.0.tgz#52d84bbcd8575efb71468fbaa1f9a49b2c242038" + integrity sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw== + dependencies: + semver "^7.3.5" + node-ensure@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz#ecae764150de99861ec5c810fd5d096b183932a7" @@ -11749,7 +11829,7 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: +semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==