diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml
index 1c58cefc06..6bf4f04da7 100644
--- a/.github/workflows/release-please.yml
+++ b/.github/workflows/release-please.yml
@@ -54,11 +54,15 @@ jobs:
# get main again
- name: Checkout Repository
+ # only checkout if a release has been created
+ if: ${{ steps.release.outputs.release_created }}
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Rebuild Packages
+ # only rebuild if a release has been created
+ if: ${{ steps.release.outputs.release_created }}
run: |
npm ci
npm run compile
@@ -67,6 +71,8 @@ jobs:
# need to publish all unpublished versions to npm here
# See: https://github.com/lerna/lerna/tree/main/commands/publish#bump-from-package
- name: Publish to npm
+ # only publish if a release has been created
+ if: ${{ steps.release.outputs.release_created }}
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
run: npx lerna publish from-package --no-push --no-private --no-git-tag-version --no-verify-access --yes
diff --git a/package-lock.json b/package-lock.json
index adb9293cdf..1bfd2fcf51 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -38198,7 +38198,7 @@
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/instrumentation": "^0.50.0",
- "@opentelemetry/semantic-conventions": "^1.0.0",
+ "@opentelemetry/semantic-conventions": "^1.22.0",
"@types/mysql": "2.15.22"
},
"devDependencies": {
@@ -38231,7 +38231,7 @@
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/instrumentation": "^0.50.0",
- "@opentelemetry/semantic-conventions": "^1.0.0",
+ "@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/sql-common": "^0.40.0"
},
"devDependencies": {
@@ -46599,7 +46599,7 @@
"@opentelemetry/instrumentation": "^0.50.0",
"@opentelemetry/sdk-metrics": "^1.8.0",
"@opentelemetry/sdk-trace-base": "^1.8.0",
- "@opentelemetry/semantic-conventions": "^1.0.0",
+ "@opentelemetry/semantic-conventions": "^1.22.0",
"@types/mocha": "7.0.2",
"@types/mysql": "2.15.22",
"@types/node": "18.6.5",
@@ -46621,7 +46621,7 @@
"@opentelemetry/contrib-test-utils": "^0.38.0",
"@opentelemetry/instrumentation": "^0.50.0",
"@opentelemetry/sdk-trace-base": "^1.8.0",
- "@opentelemetry/semantic-conventions": "^1.0.0",
+ "@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/sql-common": "^0.40.0",
"@types/mocha": "7.0.2",
"@types/node": "18.6.5",
diff --git a/plugins/node/opentelemetry-instrumentation-mysql/README.md b/plugins/node/opentelemetry-instrumentation-mysql/README.md
index 6b86badf8e..e632521fb6 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql/README.md
+++ b/plugins/node/opentelemetry-instrumentation-mysql/README.md
@@ -49,6 +49,23 @@ See [examples/mysql](https://github.com/open-telemetry/opentelemetry-js-contrib/
| [`enhancedDatabaseReporting`](./src/types.ts#L24) | `boolean` | `false` | If true, an attribute containing the query's parameters will be attached the spans generated to represent the query |
|
+## 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.connection_string` | The connection string used to connect to the database. |
+| `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.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. |
+
## Useful links
- For more information on OpenTelemetry, visit:
diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json
index fccb9fe6ae..13d2c6d3af 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql/package.json
+++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json
@@ -60,7 +60,7 @@
},
"dependencies": {
"@opentelemetry/instrumentation": "^0.50.0",
- "@opentelemetry/semantic-conventions": "^1.0.0",
+ "@opentelemetry/semantic-conventions": "^1.22.0",
"@types/mysql": "2.15.22"
},
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql#readme"
diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts
index 8ef20b9e2b..9ff48fd684 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts
+++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts
@@ -29,8 +29,9 @@ import {
isWrapped,
} from '@opentelemetry/instrumentation';
import {
- DbSystemValues,
- SemanticAttributes,
+ DBSYSTEMVALUES_MYSQL,
+ SEMATTRS_DB_STATEMENT,
+ SEMATTRS_DB_SYSTEM,
} from '@opentelemetry/semantic-conventions';
import type * as mysqlTypes from 'mysql';
import { AttributeNames } from './AttributeNames';
@@ -54,7 +55,7 @@ export class MySQLInstrumentation extends InstrumentationBase<
typeof mysqlTypes
> {
static readonly COMMON_ATTRIBUTES = {
- [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MYSQL,
+ [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL,
};
private _connectionsUsage!: UpDownCounter;
@@ -331,10 +332,7 @@ export class MySQLInstrumentation extends InstrumentationBase<
},
});
- span.setAttribute(
- SemanticAttributes.DB_STATEMENT,
- getDbStatement(query)
- );
+ span.setAttribute(SEMATTRS_DB_STATEMENT, getDbStatement(query));
const instrumentationConfig: MySQLInstrumentationConfig =
thisPlugin.getConfig();
diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts
index 05eb1d809f..8230052d0e 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts
+++ b/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts
@@ -14,8 +14,14 @@
* limitations under the License.
*/
-import { SpanAttributes } from '@opentelemetry/api';
-import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
+import { Attributes } from '@opentelemetry/api';
+import {
+ SEMATTRS_DB_CONNECTION_STRING,
+ SEMATTRS_DB_NAME,
+ SEMATTRS_DB_USER,
+ SEMATTRS_NET_PEER_NAME,
+ SEMATTRS_NET_PEER_PORT,
+} from '@opentelemetry/semantic-conventions';
import type {
ConnectionConfig,
PoolActualConfig,
@@ -25,37 +31,29 @@ import type {
import type * as mysqlTypes from 'mysql';
/**
- * Get an SpanAttributes map from a mysql connection config object
+ * Get an Attributes map from a mysql connection config object
*
* @param config ConnectionConfig
*/
export function getConnectionAttributes(
config: ConnectionConfig | PoolActualConfig
-): SpanAttributes {
+): Attributes {
const { host, port, database, user } = getConfig(config);
const portNumber = parseInt(port, 10);
if (!isNaN(portNumber)) {
return {
- [SemanticAttributes.NET_PEER_NAME]: host,
- [SemanticAttributes.NET_PEER_PORT]: portNumber,
- [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString(
- host,
- port,
- database
- ),
- [SemanticAttributes.DB_NAME]: database,
- [SemanticAttributes.DB_USER]: user,
+ [SEMATTRS_NET_PEER_NAME]: host,
+ [SEMATTRS_NET_PEER_PORT]: portNumber,
+ [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database),
+ [SEMATTRS_DB_NAME]: database,
+ [SEMATTRS_DB_USER]: user,
};
}
return {
- [SemanticAttributes.NET_PEER_NAME]: host,
- [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString(
- host,
- port,
- database
- ),
- [SemanticAttributes.DB_NAME]: database,
- [SemanticAttributes.DB_USER]: user,
+ [SEMATTRS_NET_PEER_NAME]: host,
+ [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database),
+ [SEMATTRS_DB_NAME]: database,
+ [SEMATTRS_DB_USER]: user,
};
}
diff --git a/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts
index eaef649b3c..676081d47e 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts
+++ b/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts
@@ -17,8 +17,13 @@
import { context, Context, trace, SpanStatusCode } from '@opentelemetry/api';
import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
import {
- DbSystemValues,
- SemanticAttributes,
+ DBSYSTEMVALUES_MYSQL,
+ SEMATTRS_DB_NAME,
+ SEMATTRS_DB_STATEMENT,
+ SEMATTRS_DB_SYSTEM,
+ SEMATTRS_DB_USER,
+ SEMATTRS_NET_PEER_NAME,
+ SEMATTRS_NET_PEER_PORT,
} from '@opentelemetry/semantic-conventions';
import * as testUtils from '@opentelemetry/contrib-test-utils';
import {
@@ -868,15 +873,12 @@ function assertSpan(
values?: any,
errorMessage?: string
) {
- assert.strictEqual(
- span.attributes[SemanticAttributes.DB_SYSTEM],
- DbSystemValues.MYSQL
- );
- assert.strictEqual(span.attributes[SemanticAttributes.DB_NAME], database);
- assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_PORT], port);
- assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_NAME], host);
- assert.strictEqual(span.attributes[SemanticAttributes.DB_USER], user);
- assert.strictEqual(span.attributes[SemanticAttributes.DB_STATEMENT], sql);
+ assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], DBSYSTEMVALUES_MYSQL);
+ assert.strictEqual(span.attributes[SEMATTRS_DB_NAME], database);
+ assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_PORT], port);
+ assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_NAME], host);
+ assert.strictEqual(span.attributes[SEMATTRS_DB_USER], user);
+ assert.strictEqual(span.attributes[SEMATTRS_DB_STATEMENT], sql);
if (errorMessage) {
assert.strictEqual(span.status.message, errorMessage);
assert.strictEqual(span.status.code, SpanStatusCode.ERROR);
diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/README.md b/plugins/node/opentelemetry-instrumentation-mysql2/README.md
index 04f15355ef..a0f3c73658 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql2/README.md
+++ b/plugins/node/opentelemetry-instrumentation-mysql2/README.md
@@ -49,6 +49,22 @@ You can set the following instrumentation options:
| `responseHook` | `MySQL2InstrumentationExecutionResponseHook` (function) | Function for adding custom attributes from db response |
| `addSqlCommenterCommentToQueries` | `boolean` | If true, adds [sqlcommenter](https://github.com/open-telemetry/opentelemetry-sqlcommenter) specification compliant comment to queries with tracing context (default false). _NOTE: A comment will not be added to queries that already contain `--` or `/* ... */` in them, even if these are not actually part of comments_ |
+## 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.connection_string` | The connection string used to connect to the database. |
+| `db.name` | This attribute is used to report the name of the database being accessed. |
+| `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. |
+
## Useful links
- For more information on OpenTelemetry, visit:
diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json
index b20fb7aaf6..5d7d885d02 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json
+++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json
@@ -62,7 +62,7 @@
},
"dependencies": {
"@opentelemetry/instrumentation": "^0.50.0",
- "@opentelemetry/semantic-conventions": "^1.0.0",
+ "@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/sql-common": "^0.40.0"
},
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql2#readme"
diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts
index ea792f8025..2d79311bcb 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts
+++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts
@@ -22,8 +22,9 @@ import {
safeExecuteInTheMiddle,
} from '@opentelemetry/instrumentation';
import {
- DbSystemValues,
- SemanticAttributes,
+ DBSYSTEMVALUES_MYSQL,
+ SEMATTRS_DB_STATEMENT,
+ SEMATTRS_DB_SYSTEM,
} from '@opentelemetry/semantic-conventions';
import { addSqlCommenterComment } from '@opentelemetry/sql-common';
import type * as mysqlTypes from 'mysql2';
@@ -40,7 +41,7 @@ type formatType = typeof mysqlTypes.format;
export class MySQL2Instrumentation extends InstrumentationBase {
static readonly COMMON_ATTRIBUTES = {
- [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MYSQL,
+ [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL,
};
constructor(config?: MySQL2InstrumentationConfig) {
@@ -115,11 +116,7 @@ export class MySQL2Instrumentation extends InstrumentationBase {
attributes: {
...MySQL2Instrumentation.COMMON_ATTRIBUTES,
...getConnectionAttributes(this.config),
- [SemanticAttributes.DB_STATEMENT]: getDbStatement(
- query,
- format,
- values
- ),
+ [SEMATTRS_DB_STATEMENT]: getDbStatement(query, format, values),
},
});
diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts
index 82333c109f..cfd9f2ef0f 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts
+++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts
@@ -14,8 +14,14 @@
* limitations under the License.
*/
-import { SpanAttributes } from '@opentelemetry/api';
-import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
+import { Attributes } from '@opentelemetry/api';
+import {
+ SEMATTRS_DB_CONNECTION_STRING,
+ SEMATTRS_DB_NAME,
+ SEMATTRS_DB_USER,
+ SEMATTRS_NET_PEER_NAME,
+ SEMATTRS_NET_PEER_PORT,
+} from '@opentelemetry/semantic-conventions';
/*
Following types declare an expectation on mysql2 types and define a subset we
@@ -42,35 +48,27 @@ interface Config {
connectionConfig?: Config;
}
/**
- * Get an SpanAttributes map from a mysql connection config object
+ * Get an Attributes map from a mysql connection config object
*
* @param config ConnectionConfig
*/
-export function getConnectionAttributes(config: Config): SpanAttributes {
+export function getConnectionAttributes(config: Config): Attributes {
const { host, port, database, user } = getConfig(config);
const portNumber = parseInt(port, 10);
if (!isNaN(portNumber)) {
return {
- [SemanticAttributes.NET_PEER_NAME]: host,
- [SemanticAttributes.NET_PEER_PORT]: portNumber,
- [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString(
- host,
- port,
- database
- ),
- [SemanticAttributes.DB_NAME]: database,
- [SemanticAttributes.DB_USER]: user,
+ [SEMATTRS_NET_PEER_NAME]: host,
+ [SEMATTRS_NET_PEER_PORT]: portNumber,
+ [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database),
+ [SEMATTRS_DB_NAME]: database,
+ [SEMATTRS_DB_USER]: user,
};
}
return {
- [SemanticAttributes.NET_PEER_NAME]: host,
- [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString(
- host,
- port,
- database
- ),
- [SemanticAttributes.DB_NAME]: database,
- [SemanticAttributes.DB_USER]: user,
+ [SEMATTRS_NET_PEER_NAME]: host,
+ [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database),
+ [SEMATTRS_DB_NAME]: database,
+ [SEMATTRS_DB_USER]: user,
};
}
diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts
index 4c7a4bab23..7b2bfe74ee 100644
--- a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts
+++ b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts
@@ -18,8 +18,13 @@ import * as semver from 'semver';
import { context, trace, SpanStatusCode } from '@opentelemetry/api';
import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
import {
- DbSystemValues,
- SemanticAttributes,
+ DBSYSTEMVALUES_MYSQL,
+ SEMATTRS_DB_NAME,
+ SEMATTRS_DB_STATEMENT,
+ SEMATTRS_DB_SYSTEM,
+ SEMATTRS_DB_USER,
+ SEMATTRS_NET_PEER_NAME,
+ SEMATTRS_NET_PEER_PORT,
} from '@opentelemetry/semantic-conventions';
import * as testUtils from '@opentelemetry/contrib-test-utils';
import {
@@ -177,10 +182,7 @@ describe('mysql2@2.x', () => {
query.on('end', () => {
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans[0].name, 'SELECT');
- assert.strictEqual(
- spans[0].attributes[SemanticAttributes.DB_STATEMENT],
- sql
- );
+ assert.strictEqual(spans[0].attributes[SEMATTRS_DB_STATEMENT], sql);
done();
});
});
@@ -198,7 +200,7 @@ describe('mysql2@2.x', () => {
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans[0].name, 'SELECT');
assert.strictEqual(
- spans[0].attributes[SemanticAttributes.DB_STATEMENT],
+ spans[0].attributes[SEMATTRS_DB_STATEMENT],
query.sql
);
done();
@@ -1215,16 +1217,13 @@ function assertSpan(
values?: any,
errorMessage?: string
) {
+ assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], DBSYSTEMVALUES_MYSQL);
+ assert.strictEqual(span.attributes[SEMATTRS_DB_NAME], database);
+ assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_PORT], port);
+ assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_NAME], host);
+ assert.strictEqual(span.attributes[SEMATTRS_DB_USER], user);
assert.strictEqual(
- span.attributes[SemanticAttributes.DB_SYSTEM],
- DbSystemValues.MYSQL
- );
- assert.strictEqual(span.attributes[SemanticAttributes.DB_NAME], database);
- assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_PORT], port);
- assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_NAME], host);
- assert.strictEqual(span.attributes[SemanticAttributes.DB_USER], user);
- assert.strictEqual(
- span.attributes[SemanticAttributes.DB_STATEMENT],
+ span.attributes[SEMATTRS_DB_STATEMENT],
mysqlTypes.format(sql, values)
);
if (errorMessage) {