From 5652d086cdac17cb19f1667657546ed1dbc16a01 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Mon, 21 Feb 2022 17:07:03 +0100 Subject: [PATCH] [mirotalksfu] - add sentry --- app/src/Logger.js | 8 ++++++++ app/src/Server.js | 30 +++++++++++++++++++++++++++++- app/src/config.template.js | 11 +++++++++++ package.json | 4 +++- public/js/Room.js | 2 ++ 5 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/src/Logger.js b/app/src/Logger.js index c613a26..c35e885 100644 --- a/app/src/Logger.js +++ b/app/src/Logger.js @@ -9,9 +9,17 @@ module.exports = class Logger { debug(msg, op = '') { if (this.debugOn === false) return; + console.debug('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op); + } + + log(msg, op = '') { console.log('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op); } + info(msg, op = '') { + console.info('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op); + } + warn(msg, op = '') { console.warn('[' + this.getDataTime() + '] [' + this.appName + '] ' + msg, op); } diff --git a/app/src/Server.js b/app/src/Server.js index b706e49..4cd78ea 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -18,6 +18,8 @@ const log = new Logger('Server'); const yamlJS = require('yamljs'); const swaggerUi = require('swagger-ui-express'); const swaggerDocument = yamlJS.load(path.join(__dirname + '/../api/swagger.yaml')); +const Sentry = require('@sentry/node'); +const { CaptureConsole } = require('@sentry/integrations'); const app = express(); @@ -43,6 +45,30 @@ const hostCfg = { const apiBasePath = '/api/v1'; // api endpoint path const api_docs = host + apiBasePath + '/docs'; // api docs +// Sentry monitoring +const sentryEnabled = config.sentry.enabled; +const sentryDSN = config.sentry.DSN; +const sentryTracesSampleRate = config.sentry.tracesSampleRate; +if (sentryEnabled) { + Sentry.init({ + dsn: sentryDSN, + integrations: [ + new CaptureConsole({ + // ['log', 'info', 'warn', 'error', 'debug', 'assert'] + levels: ['warn', 'error'], + }), + ], + tracesSampleRate: sentryTracesSampleRate, + }); + /* + log.log('test-log'); + log.info('test-info'); + log.warn('test-warning'); + log.warn('test-error'); + log.warn('test-debug'); + */ +} + // Authenticated IP by Login let authHost; @@ -258,6 +284,7 @@ async function ngrokStart() { tunnel: tunnel, api_docs: api_docs, mediasoup_version: mediasoup.version, + sentry_enabled: sentryEnabled, }); } catch (err) { log.error('Ngrok Start error: ', err); @@ -294,6 +321,7 @@ httpsServer.listen(config.listenPort, () => { server: host, api_docs: api_docs, mediasoup_version: mediasoup.version, + sentry_enabled: sentryEnabled, }); }); @@ -482,7 +510,7 @@ io.on('connection', (socket) => { const { params } = await roomList.get(socket.room_id).createWebRtcTransport(socket.id); callback(params); } catch (err) { - log.error('Create WebRtc Transport error: ', err); + log.error('Create WebRtc Transport error: ', err.message); callback({ error: err.message, }); diff --git a/app/src/config.template.js b/app/src/config.template.js index 93a9358..e87bcc1 100644 --- a/app/src/config.template.js +++ b/app/src/config.template.js @@ -44,6 +44,17 @@ module.exports = { */ ngrokAuthToken: '', apiKeySecret: 'mirotalksfu_default_secret', + sentry: { + /* + Sentry + 1. Goto https://sentry.io/ + 2. Create account + 3. On dashboard goto Settings/Projects/YourProjectName/Client Keys (DSN) + */ + enabled: false, + DSN: '', + tracesSampleRate: 0.5, + }, mediasoup: { // Worker settings numWorkers: Object.keys(os.cpus()).length, diff --git a/package.json b/package.json index e6b991a..34f309d 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,13 @@ "dependencies": { "compression": "1.7.4", "cors": "2.8.5", - "express": "4.17.2", + "express": "4.17.3", "httpolyglot": "0.1.2", "mediasoup": "3.9.6", "mediasoup-client": "3.6.50", "ngrok": "4.3.0", + "@sentry/node": "^6.17.9", + "@sentry/integrations": "^6.17.9", "socket.io": "4.4.1", "swagger-ui-express": "4.3.0", "uuid": "8.3.2", diff --git a/public/js/Room.js b/public/js/Room.js index 5b06026..57797e1 100644 --- a/public/js/Room.js +++ b/public/js/Room.js @@ -1540,6 +1540,8 @@ function adaptAspectRatio(participantsCount) { // desktop aspect ratio switch (participantsCount) { case 1: + desktop = 0; // (0:0) + break; case 3: case 4: case 7: