diff --git a/package-lock.json b/package-lock.json index bce2d960c7..1ec423ddfb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11789,6 +11789,7 @@ "version": "0.208.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0" @@ -11951,6 +11952,7 @@ "version": "0.28.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.28.0.tgz", "integrity": "sha512-nQ9k1Bdk2yG4SPRuHZ+QVcc3YMm2sfsBV1MQIc/Y/OcN83Q+jA7gXgYgYIblQ1wI+/RtKlJpdl6hobAXuj+pSA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.208.0", @@ -11968,6 +11970,7 @@ "version": "0.208.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.208.0.tgz", "integrity": "sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.208.0", @@ -33666,10 +33669,10 @@ "@opentelemetry/instrumentation-oracledb": "0.46.0", "@opentelemetry/instrumentation-restify": "0.63.0", "@opentelemetry/instrumentation-socket.io": "0.67.0", - "@opentelemetry/instrumentation-tedious": "0.28.0", + "@opentelemetry/instrumentation-tedious": "0.40.0", "@opentelemetry/sdk-trace-base": "2.9.0", "cls-bluebird": "^2.1.0", - "import-in-the-middle": "2.0.5", + "import-in-the-middle": "3.3.3", "lru-cache": "^10.1.0", "methods": "^1.1.2", "opentracing": "^0.14.5", @@ -33767,20 +33770,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "packages/core/node_modules/@opentelemetry/instrumentation-fs/node_modules/import-in-the-middle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.1.tgz", - "integrity": "sha512-0rymlHSFLwZ0ixx8DaQkoIyZojJPY2a0K2nEYslhKJ6jIYO/m0IcCb7iQsFPmS7WmKwISZiIrv5Icstrw/CmqA==", - "license": "Apache-2.0", - "dependencies": { - "cjs-module-lexer": "^2.2.0", - "es-module-lexer": "^2.2.0", - "module-details-from-path": "^1.0.4" - }, - "engines": { - "node": ">=18" - } - }, "packages/core/node_modules/@opentelemetry/instrumentation-oracledb": { "version": "0.46.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-oracledb/-/instrumentation-oracledb-0.46.0.tgz", @@ -33827,20 +33816,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "packages/core/node_modules/@opentelemetry/instrumentation-oracledb/node_modules/import-in-the-middle": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.2.tgz", - "integrity": "sha512-jTd2FfOgOWOdgjkHuk/1Ms8VKFXkPs15ymYBETw1sAOrO/dY3XeGVRWir9qBbw7pXr0T2eTFwfCZ+N02HmiNGA==", - "license": "Apache-2.0", - "dependencies": { - "cjs-module-lexer": "^2.2.0", - "es-module-lexer": "^2.2.0", - "module-details-from-path": "^1.0.4" - }, - "engines": { - "node": ">=18" - } - }, "packages/core/node_modules/@opentelemetry/instrumentation-restify": { "version": "0.63.0", "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.63.0.tgz", @@ -33902,29 +33877,60 @@ "@opentelemetry/api": "^1.3.0" } }, - "packages/core/node_modules/@opentelemetry/instrumentation-socket.io/node_modules/import-in-the-middle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.1.tgz", - "integrity": "sha512-0rymlHSFLwZ0ixx8DaQkoIyZojJPY2a0K2nEYslhKJ6jIYO/m0IcCb7iQsFPmS7WmKwISZiIrv5Icstrw/CmqA==", + "packages/core/node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.40.0.tgz", + "integrity": "sha512-zTNNxs+KUJf1J+lHzeTDxAIZdVJYvQ8mvGUfyiWcVFgVdl7+4XV+wOBMSd1tZcRRlopfcVODDCOVMx/N7+zvcA==", "license": "Apache-2.0", "dependencies": { - "cjs-module-lexer": "^2.2.0", - "es-module-lexer": "^2.2.0", - "module-details-from-path": "^1.0.4" + "@opentelemetry/instrumentation": "^0.221.0", + "@opentelemetry/semantic-conventions": "^1.33.0", + "@types/tedious": "^4.0.14" }, "engines": { - "node": ">=18" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "packages/core/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.0.2.tgz", - "integrity": "sha512-LGLYRl0A2gtyUJb2WDliBHmk6TtlHwdDjxonacZ8QrEs/ZW+YDgNv2QAfjRQWpS8HqvNcq6GGnN6jrOa5FysDQ==", + "packages/core/node_modules/@opentelemetry/instrumentation-tedious/node_modules/@opentelemetry/api-logs": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.221.0.tgz", + "integrity": "sha512-OlanaW1vv7ufTqQ3/fPLI4arGt5ZoM+P8abOMki6uEYnpRazepSWDwDnnw+la7kE26SHVC18//SMccrDvLKOXQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "packages/core/node_modules/@opentelemetry/instrumentation-tedious/node_modules/@opentelemetry/instrumentation": { + "version": "0.221.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.221.0.tgz", + "integrity": "sha512-cCk80Z/iRDf/5gfsKMB4f74LqVA5yKETB/9ojPzVW/6/f70iu89nJvGxsFCxx4XfSohaOofkU19kiYm84AiAlw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.221.0", + "import-in-the-middle": "^3.0.0", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "packages/core/node_modules/import-in-the-middle": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.3.tgz", + "integrity": "sha512-AiohS3H80sXO6owEltjGX+glb7qXaDhBoJb9XcQVH4UI207xu/bDLUcadVKp7Qe576reg9yr/PXZjV5qx8gfbA==", "license": "Apache-2.0", "dependencies": { - "acorn": "^8.15.0", - "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^2.2.0", + "es-module-lexer": "^2.2.0", "module-details-from-path": "^1.0.4" }, "engines": { diff --git a/packages/collector/test/integration/currencies/databases/tedious/tedious-app.js b/packages/collector/test/integration/currencies/databases/tedious/tedious-app.js index 6affad46d4..b2bb549740 100644 --- a/packages/collector/test/integration/currencies/databases/tedious/tedious-app.js +++ b/packages/collector/test/integration/currencies/databases/tedious/tedious-app.js @@ -28,6 +28,14 @@ if (!tediousPath.includes(expectedLocalPath)) { ); } +const localNodeModules = tediousPath.substring(0, tediousPath.lastIndexOf('node_modules') + 'node_modules'.length); +const tediousVersion = require(path.join(localNodeModules, 'tedious', 'package.json')).version; +const otelTediousVersion = require(path.join(localNodeModules, '@opentelemetry', 'instrumentation-tedious', 'package.json')).version; + +console.log('[tedious-app] tedious version:', tediousVersion); +console.log('[tedious-app] tedious resolved path:', tediousPath); +console.log('[tedious-app] @opentelemetry/instrumentation-tedious version:', otelTediousVersion); + const Connection = tedious.Connection; const Request = tedious.Request; const bodyParser = require('body-parser'); diff --git a/packages/collector/test/integration/currencies/databases/tedious/tedious-app.mjs b/packages/collector/test/integration/currencies/databases/tedious/tedious-app.mjs index 08972b81aa..ce34e729be 100644 --- a/packages/collector/test/integration/currencies/databases/tedious/tedious-app.mjs +++ b/packages/collector/test/integration/currencies/databases/tedious/tedious-app.mjs @@ -32,6 +32,14 @@ if (!tediousPath.includes(expectedLocalPath)) { ); } +const localNodeModules = tediousPath.substring(0, tediousPath.lastIndexOf('node_modules') + 'node_modules'.length); +const tediousVersion = require(resolve(localNodeModules, 'tedious', 'package.json')).version; +const otelTediousVersion = require(resolve(localNodeModules, '@opentelemetry', 'instrumentation-tedious', 'package.json')).version; + +console.log('[tedious-app] tedious version:', tediousVersion); +console.log('[tedious-app] tedious resolved path:', tediousPath); +console.log('[tedious-app] @opentelemetry/instrumentation-tedious version:', otelTediousVersion); + const Connection = tedious.Connection; const Request = tedious.Request; const app = express(); diff --git a/packages/collector/test/integration/currencies/databases/tedious/test_base.js b/packages/collector/test/integration/currencies/databases/tedious/test_base.js index 7e34fed8f2..786ecfefed 100644 --- a/packages/collector/test/integration/currencies/databases/tedious/test_base.js +++ b/packages/collector/test/integration/currencies/databases/tedious/test_base.js @@ -89,11 +89,10 @@ module.exports = function (name, version, isLatest) { expect(span.data.tags.name).to.eql(`${queryType} azure-nodejs-test`); expect(span.data.operation).to.equal('tedious'); - expect(span.data.tags['db.system']).to.eql('mssql'); - expect(span.data.tags['db.name']).to.eql('azure-nodejs-test'); - expect(span.data.tags['db.user']).to.eql('admin@instana@nodejs-team-db-server'); - expect(span.data.tags['db.statement']).to.eql(expectedStatement); - expect(span.data.tags['net.peer.name']).to.eql('nodejs-team-db-server.database.windows.net'); + expect(span.data.tags['db.system.name']).to.eql('microsoft.sql_server'); + expect(span.data.tags['db.namespace']).to.eql('azure-nodejs-test'); + expect(span.data.tags['db.query.text']).to.eql(expectedStatement); + expect(span.data.tags['server.address']).to.eql('nodejs-team-db-server.database.windows.net'); checkTelemetryResourceAttrs(span); } }); diff --git a/packages/core/package.json b/packages/core/package.json index a8cf8289a6..d4573dbaeb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -65,10 +65,10 @@ "@opentelemetry/instrumentation-oracledb": "0.46.0", "@opentelemetry/instrumentation-restify": "0.63.0", "@opentelemetry/instrumentation-socket.io": "0.67.0", - "@opentelemetry/instrumentation-tedious": "0.28.0", + "@opentelemetry/instrumentation-tedious": "0.40.0", "@opentelemetry/sdk-trace-base": "2.9.0", "cls-bluebird": "^2.1.0", - "import-in-the-middle": "2.0.5", + "import-in-the-middle": "3.3.3", "lru-cache": "^10.1.0", "methods": "^1.1.2", "opentracing": "^0.14.5", diff --git a/packages/core/src/tracing/opentelemetry-instrumentations/tedious.js b/packages/core/src/tracing/opentelemetry-instrumentations/tedious.js index a8ea5ef5bd..ca798395a5 100644 --- a/packages/core/src/tracing/opentelemetry-instrumentations/tedious.js +++ b/packages/core/src/tracing/opentelemetry-instrumentations/tedious.js @@ -2,6 +2,8 @@ * (c) Copyright IBM Corp. 2024 */ +/* eslint-disable no-console */ + 'use strict'; const constants = require('../constants'); @@ -25,6 +27,18 @@ module.exports.init = () => { const instrumentation = new TediousInstrumentation(); + const moduleDefinitions = instrumentation.getModuleDefinitions(); + const instrumentedPath = moduleDefinitions && moduleDefinitions[0] ? moduleDefinitions[0].name : 'unknown'; + console.log('[Instana] tedious instrumented path:', instrumentedPath); + + let resolvedPath; + try { + resolvedPath = require.resolve('tedious'); + } catch (e) { + resolvedPath = `not resolvable: ${e.message}`; + } + console.log('[Instana] tedious required resolved path:', resolvedPath); + if (!instrumentation.getConfig().enabled) { instrumentation.enable(); }