@opentelemetry/instrumentation-nestjs-core
v0.68.0
Published
OpenTelemetry instrumentation for NestJS server side applications framework
Readme
OpenTelemetry NestJS Instrumentation for Node.js
This module provides automatic instrumentation for the Nest framework module.
If total installation size is not constrained, it is recommended to use the @opentelemetry/auto-instrumentations-node bundle with @opentelemetry/sdk-node for the most seamless instrumentation experience.
Compatible with OpenTelemetry JS API and SDK 1.0+.
Installation
npm install --save @opentelemetry/instrumentation-nestjs-coreSupported Versions
@nestjs/coreversions>=4.0.0 <12
Usage
OpenTelemetry Nest Instrumentation allows the user to automatically collect trace data from the controller handlers and export them to the backend of choice.
To enable a specific instrumentation, pass it to registerInstrumentations().
This is commonly done via NodeSDK for fully setting up all OpenTelemetry SDK components:
const { NodeSDK } = require('@opentelemetry/sdk-node');
const { NestInstrumentation } = require('@opentelemetry/instrumentation-nestjs-core');
const sdk = new NodeSDK({
instrumentations: [
new NestInstrumentation(),
],
});
sdk.start();
process.once('beforeExit', async () => { await sdk.shutdown(); });Emitted Spans
| Name | nestjs.type | Description | Included attributes |
|---------------------------------|-------------------|----------------------------------------------------------------------------|-----------------------------|
| Create Nest App | app_creation | Traces the bootup for the Nest App. The NestFactory(Static).create call. | nestjs.module |
| <ControllerName>.<memberName> | request_context | Traces the whole request context. | http.*, nestjs.callback |
| <memberName> | handler | Traces the work of a specific controller member function. | nestjs.callback |
Semantic Conventions
This instrumentation creates spans with attributes from the HTTP and NestJS semantic conventions.
The instrumentation-nestjs-core versions 0.66.0 and later emit the stable v1.23.0+ semantic conventions.
Attributes collected:
| Attribute | Short Description |
|-----------------------|-------------------------------------------------------------------|
| component* | "@nestjs/core" |
| nestjs.version* | Version of instrumented @nestjs/core package |
| nestjs.type* | See NestType |
| nestjs.module | Nest module class name |
| nestjs.controller | Nest controller class name |
| nestjs.callback | The function name of the member in the controller |
| http.route | Route assigned to handler. Ex: /users/:id |
| http.request.method | HTTP method. |
| url.full | Full request URL. |
* included in all of the spans.
Useful links
- For more information on OpenTelemetry, visit: https://opentelemetry.io/
- For more about OpenTelemetry JavaScript: https://github.com/open-telemetry/opentelemetry-js
- For help or feedback on this project, join us in GitHub Discussions
License
Apache 2.0 - See LICENSE for more information.
