diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index ee2ab49fee..ec2ced25f5 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -62,6 +62,7 @@ import { METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, METRIC_DB_CLIENT_OPERATION_DURATION, ATTR_DB_NAMESPACE, + ATTR_DB_OPERATION_NAME, } from '@opentelemetry/semantic-conventions/incubating'; export class PgInstrumentation extends InstrumentationBase { @@ -228,6 +229,7 @@ export class PgInstrumentation extends InstrumentationBase { @@ -282,6 +284,11 @@ export class PgInstrumentation extends InstrumentationBase { plugin.recordOperationDuration(attributes, startTime); }; diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts b/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts index f3d65f5b82..f34fb174e0 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts @@ -92,7 +92,7 @@ export function getQuerySpanName( return `${SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`; } -function parseNormalizedOperationName(queryText: string) { +export function parseNormalizedOperationName(queryText: string) { const indexOfFirstSpace = queryText.indexOf(' '); let sqlCommand = indexOfFirstSpace === -1 diff --git a/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts b/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts index aa89830104..7f2c0db6fc 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts @@ -50,7 +50,11 @@ import { SEMATTRS_DB_USER, SEMATTRS_DB_STATEMENT, } from '@opentelemetry/semantic-conventions'; -import { ATTR_DB_CLIENT_CONNECTION_STATE } from '@opentelemetry/semantic-conventions/incubating'; +import { + METRIC_DB_CLIENT_CONNECTION_COUNT, + METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, + ATTR_DB_CLIENT_CONNECTION_STATE, +} from '@opentelemetry/semantic-conventions/incubating'; const memoryExporter = new InMemorySpanExporter(); @@ -522,7 +526,7 @@ describe('pg-pool', () => { const metrics = resourceMetrics.scopeMetrics[0].metrics; assert.strictEqual( metrics[1].descriptor.name, - 'db.client.connection.count' + METRIC_DB_CLIENT_CONNECTION_COUNT ); assert.strictEqual( metrics[1].descriptor.description, @@ -553,7 +557,7 @@ describe('pg-pool', () => { assert.strictEqual( metrics[2].descriptor.name, - 'db.client.connection.pending_requests' + METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS ); assert.strictEqual( metrics[2].descriptor.description, diff --git a/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts b/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts index b394893399..cff686eae1 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts @@ -53,6 +53,10 @@ import { DBSYSTEMVALUES_POSTGRESQL, ATTR_ERROR_TYPE, } from '@opentelemetry/semantic-conventions'; +import { + METRIC_DB_CLIENT_OPERATION_DURATION, + ATTR_DB_OPERATION_NAME, +} from '@opentelemetry/semantic-conventions/incubating'; import { addSqlCommenterComment } from '@opentelemetry/sql-common'; const memoryExporter = new InMemorySpanExporter(); @@ -984,7 +988,7 @@ describe('pg', () => { const metrics = resourceMetrics.scopeMetrics[0].metrics; assert.strictEqual( metrics[0].descriptor.name, - 'db.client.operation.duration' + METRIC_DB_CLIENT_OPERATION_DURATION ); assert.strictEqual( metrics[0].descriptor.description, @@ -995,6 +999,10 @@ describe('pg', () => { dataPoint.attributes[SEMATTRS_DB_SYSTEM], DBSYSTEMVALUES_POSTGRESQL ); + assert.strictEqual( + dataPoint.attributes[ATTR_DB_OPERATION_NAME], + 'SELECT' + ); assert.strictEqual(dataPoint.attributes[ATTR_ERROR_TYPE], undefined); const v = (dataPoint as DataPoint).value;