diff --git a/app.js b/app.js index f85ce8b..ee4a045 100644 --- a/app.js +++ b/app.js @@ -5,7 +5,23 @@ var app = express(); // Initalize Sentry (import library and instantiate) const Sentry = require('@sentry/node'); -Sentry.init({ dsn: 'https://276b9c69b15b41a3ae98d07206889b24@sentry.io/1366275'}); +const Tracing = require('@sentry/tracing'); + +Sentry.init({ + dsn: 'https://276b9c69b15b41a3ae98d07206889b24@sentry.io/1366275', + integrations: [ + // Enable HTTP calls tracing + new Sentry.Integrations.Http({ tracing: true }), + // Enable Express.js middleware tracing + new Tracing.Integrations.Express({ app }), + ], + + // Sample rate can be set as a decimal between 0 and 1 + // representing the percent of transactions to record + // + // For our example, we will collect all transactions + tracesSampleRate: 1.0, +}); let Inventory = { wrench: 0, @@ -30,6 +46,8 @@ let checkout = (cart) => { // The request handler must be the first middleware on the app app.use(Sentry.Handlers.requestHandler()); +// TracingHandler creates a trace for every incoming request +app.use(Sentry.Handlers.tracingHandler()); app.use(bodyParser.json()); app.use(cors()); @@ -69,8 +87,11 @@ app.post('/checkout', function (req, res) { }); app.get('/capture-message', function (req, res) { + // Simulate an API call that takes a random amount + // of time and goes long + let delay = 2500; Sentry.captureMessage('Custom Message'); - res.send('Success'); + setTimeout(() => { res.send('Success'); }, delay); }); app.get('/unhandled', function (req, res) { diff --git a/package-lock.json b/package-lock.json index 6668d37..861c9ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,74 +18,103 @@ } }, "@sentry/core": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.6.1.tgz", - "integrity": "sha512-gK8XfkJIZLsBEQehkr2q2fdHI50B3yo4RXiixSZiNBVIzQ+1z3JcMssDzGwhbY81NHUzHZ7of3oQ4Ab4OGRI/g==", + "version": "5.27.4", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.27.4.tgz", + "integrity": "sha512-IbI37cIZU/qBQouuUXaLbGF/9xYFp5STqmj1Gv64l0IZe4JnEp06V3yD5GxQ/mJ78vSfOqfwLooVCUw9FA61sQ==", "requires": { - "@sentry/hub": "5.6.1", - "@sentry/minimal": "5.6.1", - "@sentry/types": "5.6.1", - "@sentry/utils": "5.6.1", + "@sentry/hub": "5.27.4", + "@sentry/minimal": "5.27.4", + "@sentry/types": "5.27.4", + "@sentry/utils": "5.27.4", "tslib": "^1.9.3" } }, "@sentry/hub": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.6.1.tgz", - "integrity": "sha512-m+OhkIV5yTAL3R1+XfCwzUQka0UF/xG4py8sEfPXyYIcoOJ2ZTX+1kQJLy8QQJ4RzOBwZA+DzRKP0cgzPJ3+oQ==", + "version": "5.27.4", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.27.4.tgz", + "integrity": "sha512-Ba1AqcjvSd2S+fpdXtXCrVXdrzq9E2Etb2eHUOkEYwSsq7StMOw7E8YHDPAo+to8zUbpMPz/Z9XGhFkyAbImGQ==", "requires": { - "@sentry/types": "5.6.1", - "@sentry/utils": "5.6.1", + "@sentry/types": "5.27.4", + "@sentry/utils": "5.27.4", "tslib": "^1.9.3" } }, "@sentry/minimal": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.6.1.tgz", - "integrity": "sha512-ercCKuBWHog6aS6SsJRuKhJwNdJ2oRQVWT2UAx1zqvsbHT9mSa8ZRjdPHYOtqY3DoXKk/pLUFW/fkmAnpdMqRw==", + "version": "5.27.4", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.27.4.tgz", + "integrity": "sha512-biw5YfIQwvDoaRhLarfeRQ6MJ9UJOoDTmu8Kgg18prJy4rtfDowNJP0OBs5XAsTk6SWAXiE3g7vqUJBXgs7BWA==", "requires": { - "@sentry/hub": "5.6.1", - "@sentry/types": "5.6.1", + "@sentry/hub": "5.27.4", + "@sentry/types": "5.27.4", "tslib": "^1.9.3" } }, "@sentry/node": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.6.1.tgz", - "integrity": "sha512-8gNjFRrTOG3vu2RpWZnUSxNx6Ui2Dthq2VHeVImt7PYtVaSddlYZvt0xl8L/fJC/TvFZEPfX0d8Is9v8yvsgRQ==", + "version": "5.27.4", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.27.4.tgz", + "integrity": "sha512-fv3FfQ6FiNV56LKk6t48oNw8qgf7X5fEhqhvKAoU7w+BL9AhChzh9v7sWn9ppDtRFE45tFfsZh0J/8ox5jpnfQ==", "requires": { - "@sentry/core": "5.6.1", - "@sentry/hub": "5.6.1", - "@sentry/types": "5.6.1", - "@sentry/utils": "5.6.1", - "cookie": "0.3.1", - "https-proxy-agent": "2.2.1", - "lru_map": "0.3.3", + "@sentry/core": "5.27.4", + "@sentry/hub": "5.27.4", + "@sentry/tracing": "5.27.4", + "@sentry/types": "5.27.4", + "@sentry/utils": "5.27.4", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", "tslib": "^1.9.3" }, "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "requires": { + "ms": "2.1.2" + } + }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "agent-base": "6", + "debug": "4" } } } }, + "@sentry/tracing": { + "version": "5.27.4", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.27.4.tgz", + "integrity": "sha512-f3nG8ozCdcbFOzsnBCZ8w+/WfoNiAd0Ctr643L0rsFbaSzPWxbPMe3LNVrWwFVo6mHacG3/2HYmJ3CYMiWyTKQ==", + "requires": { + "@sentry/hub": "5.27.4", + "@sentry/minimal": "5.27.4", + "@sentry/types": "5.27.4", + "@sentry/utils": "5.27.4", + "tslib": "^1.9.3" + } + }, "@sentry/types": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.6.1.tgz", - "integrity": "sha512-Kub8TETefHpdhvtnDj3kKfhCj0u/xn3Zi2zIC7PB11NJHvvPXENx97tciz4roJGp7cLRCJsFqCg4tHXniqDSnQ==" + "version": "5.27.4", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.27.4.tgz", + "integrity": "sha512-41h3c7tgtSS8UBmfvEckSr+7V7/IVOjt/EiydyOd6s0N18zSFfGY5HdA6g+eFtIJK3DhWkUHCHZNanD5IY5YCQ==" }, "@sentry/utils": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.6.1.tgz", - "integrity": "sha512-rfgha+UsHW816GqlSRPlniKqAZylOmQWML2JsujoUP03nPu80zdN43DK9Poy/d9OxBxv0gd5K2n+bFdM2kqLQQ==", + "version": "5.27.4", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.27.4.tgz", + "integrity": "sha512-shV1I/q+Tob3hUxRj11DfMhe9PNDiv85hUUoRloZGGwu275dMwpswb2uwgSmjc2Ao4pnMKVx8TL1hC3kGLVHTQ==", "requires": { - "@sentry/types": "5.6.1", + "@sentry/types": "5.27.4", "tslib": "^1.9.3" } }, @@ -162,9 +191,9 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" }, "cookie-signature": { "version": "1.0.6", @@ -579,9 +608,9 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "type-is": { "version": "1.6.18", diff --git a/package.json b/package.json index f08b090..d19ca84 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,9 @@ "name": "t-em-backend", "version": "1.0.0", "dependencies": { - "@sentry/node": "^5.2", "@sentry/cli": "^1.37.0", + "@sentry/node": "^5.27.4", + "@sentry/tracing": "^5.27.4", "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1"