diff --git a/package-lock.json b/package-lock.json
index e665d2a67e..c12fc241b5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -37904,7 +37904,7 @@
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/instrumentation": "^0.50.0",
- "@opentelemetry/semantic-conventions": "^1.0.0"
+ "@opentelemetry/semantic-conventions": "^1.22.0"
},
"devDependencies": {
"@opentelemetry/api": "^1.3.0",
@@ -46305,7 +46305,7 @@
"@opentelemetry/instrumentation": "^0.50.0",
"@opentelemetry/sdk-trace-base": "^1.8.0",
"@opentelemetry/sdk-trace-node": "^1.8.0",
- "@opentelemetry/semantic-conventions": "^1.0.0",
+ "@opentelemetry/semantic-conventions": "^1.22.0",
"@types/mocha": "7.0.2",
"@types/node": "18.6.5",
"knex": "0.95.9",
diff --git a/plugins/node/opentelemetry-instrumentation-knex/README.md b/plugins/node/opentelemetry-instrumentation-knex/README.md
index 05537459cc..ba3e97846e 100644
--- a/plugins/node/opentelemetry-instrumentation-knex/README.md
+++ b/plugins/node/opentelemetry-instrumentation-knex/README.md
@@ -48,6 +48,24 @@ registerInstrumentations({
| ------- | ---- | ------- | ----------- |
| `maxQueryLength` | `number` | `100` | Truncate `db.statement` attribute to a maximum length. If the statement is truncated `'..'` is added to it's end. Default `1022`. `-1` leaves `db.statement` untouched. |
+## Semantic Conventions
+
+This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md)
+
+Attributes collected:
+
+| Attribute | Short Description |
+| ----------------------- | ------------------------------------------------------------------------------ |
+| `db.name` | This attribute is used to report the name of the database being accessed. |
+| `db.operation` | The name of the operation being executed. |
+| `db.sql.table` | The name of the primary table that the operation is acting upon. |
+| `db.statement` | The database statement being executed. |
+| `db.system` | An identifier for the database management system (DBMS) product being used. |
+| `db.user` | Username for accessing the database. |
+| `net.peer.name` | Remote hostname or similar. |
+| `net.peer.port` | Remote port number. |
+| `net.transport` | Transport protocol used. |
+
## Useful links
- For more information on OpenTelemetry, visit:
diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json
index 0248695c58..5a8b7078c6 100644
--- a/plugins/node/opentelemetry-instrumentation-knex/package.json
+++ b/plugins/node/opentelemetry-instrumentation-knex/package.json
@@ -58,7 +58,7 @@
},
"dependencies": {
"@opentelemetry/instrumentation": "^0.50.0",
- "@opentelemetry/semantic-conventions": "^1.0.0"
+ "@opentelemetry/semantic-conventions": "^1.22.0"
},
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-knex#readme"
}
diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts
index 257232f278..bb6e6114b5 100644
--- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts
+++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts
@@ -23,7 +23,17 @@ import {
InstrumentationNodeModuleFile,
isWrapped,
} from '@opentelemetry/instrumentation';
-import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
+import {
+ SEMATTRS_DB_NAME,
+ SEMATTRS_DB_OPERATION,
+ SEMATTRS_DB_SQL_TABLE,
+ SEMATTRS_DB_STATEMENT,
+ SEMATTRS_DB_SYSTEM,
+ SEMATTRS_DB_USER,
+ SEMATTRS_NET_PEER_NAME,
+ SEMATTRS_NET_PEER_PORT,
+ SEMATTRS_NET_TRANSPORT,
+} from '@opentelemetry/semantic-conventions';
import * as utils from './utils';
import * as types from './types';
@@ -144,18 +154,18 @@ export class KnexInstrumentation extends InstrumentationBase {
const attributes: api.SpanAttributes = {
'knex.version': moduleVersion,
- [SemanticAttributes.DB_SYSTEM]: utils.mapSystem(config.client),
- [SemanticAttributes.DB_SQL_TABLE]: table,
- [SemanticAttributes.DB_OPERATION]: operation,
- [SemanticAttributes.DB_USER]: config?.connection?.user,
- [SemanticAttributes.DB_NAME]: name,
- [SemanticAttributes.NET_PEER_NAME]: config?.connection?.host,
- [SemanticAttributes.NET_PEER_PORT]: config?.connection?.port,
- [SemanticAttributes.NET_TRANSPORT]:
+ [SEMATTRS_DB_SYSTEM]: utils.mapSystem(config.client),
+ [SEMATTRS_DB_SQL_TABLE]: table,
+ [SEMATTRS_DB_OPERATION]: operation,
+ [SEMATTRS_DB_USER]: config?.connection?.user,
+ [SEMATTRS_DB_NAME]: name,
+ [SEMATTRS_NET_PEER_NAME]: config?.connection?.host,
+ [SEMATTRS_NET_PEER_PORT]: config?.connection?.port,
+ [SEMATTRS_NET_TRANSPORT]:
config?.connection?.filename === ':memory:' ? 'inproc' : undefined,
};
if (maxLen !== 0) {
- attributes[SemanticAttributes.DB_STATEMENT] = utils.limitLength(
+ attributes[SEMATTRS_DB_STATEMENT] = utils.limitLength(
query?.sql,
maxLen
);
diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts b/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts
index 6c7e6fbdba..da640ceae3 100644
--- a/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts
+++ b/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts
@@ -14,7 +14,10 @@
* limitations under the License.
*/
-import { DbSystemValues } from '@opentelemetry/semantic-conventions';
+import {
+ DBSYSTEMVALUES_SQLITE,
+ DBSYSTEMVALUES_POSTGRESQL,
+} from '@opentelemetry/semantic-conventions';
type Exception = {
new (message: string): Exception;
@@ -52,8 +55,8 @@ export const cloneErrorWithNewMessage = (err: Exception, message: string) => {
};
const systemMap = new Map([
- ['sqlite3', DbSystemValues.SQLITE],
- ['pg', DbSystemValues.POSTGRESQL],
+ ['sqlite3', DBSYSTEMVALUES_SQLITE],
+ ['pg', DBSYSTEMVALUES_POSTGRESQL],
]);
export const mapSystem = (knexSystem: string) => {
return systemMap.get(knexSystem) || knexSystem;