diff --git a/package-lock.json b/package-lock.json index a178c73cf0..e7be22b429 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38344,7 +38344,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "devDependencies": { "@nestjs/common": "9.4.3", @@ -47123,7 +47123,7 @@ "@opentelemetry/instrumentation": "^0.51.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.23.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md b/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md index 1b24dc360d..ac24133fa3 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md @@ -48,19 +48,23 @@ registerInstrumentations({ `.` | `request_context` | Traces the whole request context. | `http.*`, `nestjs.callback` `` | `handler` | Traces the work of a specific controller member function. | `nestjs.callback` -### Attributes - -| Name | Description -| ---- | ---- -| `component`* | "@nestjs/core" -| `nestjs.version`* | Version of instrumented `@nestjs/core` package -| `nestjs.type`* | See [NestType](./src/enums/NestType.ts) -| `nestjs.module` | Nest module class name -| `nestjs.controller` | Nest controller class name -| `nestjs.callback` | The function name of the member in the controller -| `http.method` | HTTP method -| `http.url` | Full request URL -| `http.route` | Route assigned to handler. Ex: `/users/:id` +## 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 | +|---------------------|----------------------------------------------------| +| `component`* | "@nestjs/core" | +| `nestjs.version`* | Version of instrumented `@nestjs/core` package | +| `nestjs.type`* | See [NestType](./src/enums/NestType.ts) | +| `nestjs.module` | Nest module class name | +| `nestjs.controller` | Nest controller class name | +| `nestjs.callback` | The function name of the member in the controller | +| `http.method` | HTTP method | +| `http.url` | Full request URL | +| `http.route` | Route assigned to handler. Ex: `/users/:id` | \* included in all of the spans. diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index d6b7964932..cf31974c6b 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -71,7 +71,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index 29b86aadba..9f90a7c1b8 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -25,7 +25,11 @@ import { import type { NestFactory } from '@nestjs/core/nest-factory.js'; import type { RouterExecutionContext } from '@nestjs/core/router/router-execution-context.js'; import type { Controller } from '@nestjs/common/interfaces'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_METHOD, + SEMATTRS_HTTP_ROUTE, + SEMATTRS_HTTP_URL, +} from '@opentelemetry/semantic-conventions'; import { VERSION } from './version'; import { AttributeNames, NestType } from './enums'; @@ -168,9 +172,9 @@ function createWrapCreateHandler(tracer: api.Tracer, moduleVersion?: string) { ...Instrumentation.COMMON_ATTRIBUTES, [AttributeNames.VERSION]: moduleVersion, [AttributeNames.TYPE]: NestType.REQUEST_CONTEXT, - [SemanticAttributes.HTTP_METHOD]: req.method, - [SemanticAttributes.HTTP_URL]: req.originalUrl || req.url, - [SemanticAttributes.HTTP_ROUTE]: + [SEMATTRS_HTTP_METHOD]: req.method, + [SEMATTRS_HTTP_URL]: req.originalUrl || req.url, + [SEMATTRS_HTTP_ROUTE]: req.route?.path || req.routeOptions?.url || req.routerPath, [AttributeNames.CONTROLLER]: instanceName, [AttributeNames.CALLBACK]: callbackName,