1.24.0 • Published 6 days ago

@opentelemetry/sdk-trace-node v1.24.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
6 days ago

OpenTelemetry Node SDK

NPM Published Version Apache License

This module provides automated instrumentation and tracing for Node.js applications.

For manual instrumentation see the @opentelemetry/sdk-trace-base package.

How auto instrumentation works

This package exposes a NodeTracerProvider. For loading instrumentations please use registerInstrumentations function from opentelemetry-instrumentation

OpenTelemetry comes with a growing number of instrumentation plugins for well known modules (see supported modules) and an API to create custom instrumentation (see the instrumentation developer guide).

Please note: This module does not bundle any plugins. They need to be installed separately.

This is done by wrapping all tracing-relevant functions.

This instrumentation code will automatically

  • extract a trace-context identifier from inbound requests to allow distributed tracing (if applicable)
  • make sure that this current trace-context is propagated while the transaction traverses an application (see context document in @opentelemetry/api for an in-depth explanation)
  • add this trace-context identifier to outbound requests to allow continuing the distributed trace on the next hop (if applicable)
  • create and end spans

Creating custom spans on top of auto-instrumentation

Additionally to automated instrumentation, NodeTracerProvider exposes the same API as @opentelemetry/sdk-trace-base, allowing creating custom spans if needed.

Installation

npm install --save @opentelemetry/api
npm install --save @opentelemetry/sdk-trace-node

# Install instrumentation plugins
npm install --save @opentelemetry/instrumentation-http
# and for example one additional
npm install --save instrumentation-graphql

Usage

The following code will configure the NodeTracerProvider to instrument http (and any other installed supported modules) using @opentelemetry/plugin-http.

const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');

// Create and configure NodeTracerProvider
const provider = new NodeTracerProvider();

// Initialize the provider
provider.register();

// register and load instrumentation and old plugins - old plugins will be loaded automatically as previously
// but instrumentations needs to be added
registerInstrumentations({
});

// Your application code - http will automatically be instrumented if
// @opentelemetry/plugin-http is present
const http = require('http');

Instrumentation configuration

In the following example:

  • the express instrumentation is enabled
  • the http instrumentation has a custom config for a requestHook
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');
const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express');

const provider = new NodeTracerProvider();
provider.register();

// register and load instrumentation and old plugins - old plugins will be loaded automatically as previously
// but instrumentations needs to be added
registerInstrumentations({
  instrumentations: [
    new ExpressInstrumentation(),
    new HttpInstrumentation({
        requestHook: (span, request) => {
          span.setAttribute("custom request hook attribute", "request");
        },
    }),
  ],
});

Examples

See how to automatically instrument http and gRPC / grpc-js using node-sdk.

Useful links

License

Apache 2.0 - See LICENSE for more information.

@pulumi/pulumicreate-redwood-app@redwoodjs/clilib-tracingnotnodeagentlog-util-win-otel-final@middleware.io/mw-node-apmsalesforce-opentelemetry@wesjet/utils@chanzuckerberg/edu-platform-observabilitygodspeed-noderenovate@everything-registry/sub-chunk-690opentelemetry-armsopentelemetry-cdsopentelemetry-tracingopentelemetrywrapperopentelemetry-instrumentation-testing-utilsoptl-poc-trace-libraryoptl-trace-poc-libraryotel-custom-library-testotel-custom-trace-libopen-telemetry-nodejs-trackerreact-agent-ts@fleekxyz/graphql-testnode-agent-test1node-apm-b3qmantis-expressrfuicorecreate-saas-boilerplatecreate-jtoar-appcustom-monitoringcustom-otel-testrenovate-csmrootnovatesubito-libsuprboard-tracersupergraph-demo-opentelemetrydev-authentication-servicedev-chat-servicedeno-node-apmdeno-tstracing-telemetry-libtracenovatrigger.devsolarwinds-apm@opentelemetry/sdk-node@opvious/stl-bootstrap@opentelemetry/contrib-test-utils@nvisionjs/trace@pothos-examples/open-telemetry@selig123/monitor@postman/postman-sdk@prairielearn/opentelemetry@pocket-tools/tracing@sentio/debugger-server@querycrab/instrumentation@skedulo/mex-service-libsdtx-lib-otel@sima-land/isomorph@pzama/opentelemetry@shelfjs/opentelemetry@purista/mqttbridge@purista/natsbridge@purista/amqpbridge@purista/core@shipixen/utilseggshell-opentracing-opentelemetry@dynatrace/opentelemetry-core@icano/nestjs-opentelemetry@hypertrace/nodejsagent@lwrjs/instrumentation@lumigo/lumigo-node-wrapper@lumigo/microservices-node-tracer@lumigo/opentelemetry@fluxninja/aperture-js@firesync/server@jahiduls/lib-tracing@jambonz/tracing@mapogo/opentelemetry-subgraph@map-colonies/telemetry@mgcrea/otlp-node-sdk@mgcrea/otlp-sdk-node@mikelaferriere/core@jovijovi/pedro.js@jovijovi/pedrojs-tracing@khulnasoft/lambda-node-opentelemetry@khulnasoft/node-opentelemetry@konfik/utils@moreapp/common-nodejs@metis-data/prisma-express-interceptor@metis-data/prisma-nest-interceptor@metis-data/sequelize-express-interceptor@middleware.io/node-apm@middlewarelabs-devs/mw-node-apm@kant2002-diia-inhouse/diia-app@mocobaas/server-sdk@patientstatus/common@novu/application-generic@saidsef/tracing-node
1.24.0

6 days ago

1.23.0

27 days ago

1.22.0

2 months ago

1.21.0

3 months ago

1.20.0

4 months ago

1.19.0

5 months ago

1.18.1

6 months ago

1.18.0

6 months ago

1.16.0

8 months ago

1.15.0

10 months ago

1.17.1

7 months ago

1.17.0

8 months ago

1.15.2

9 months ago

1.15.1

9 months ago

1.14.0

11 months ago

1.13.0

12 months ago

1.12.0

1 year ago

1.11.0

1 year ago

1.10.1

1 year ago

1.10.0

1 year ago

1.9.1

1 year ago

1.9.0

1 year ago

1.8.0

1 year ago

1.7.0

2 years ago

1.6.0

2 years ago

1.5.0

2 years ago

1.4.0

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

3 years ago

0.26.0

3 years ago

0.25.1-alpha.23

3 years ago

0.25.1-alpha.16

3 years ago

0.25.1-alpha.12

3 years ago

0.25.1-alpha.13

3 years ago

0.25.1-alpha.7

3 years ago

0.25.1-alpha.1

3 years ago

0.25.1-alpha.2

3 years ago

0.25.1-alpha.4

3 years ago

0.25.0

3 years ago

0.25.1-alpha.21

3 years ago

0.24.1-alpha.20

3 years ago

0.24.1-alpha.18

3 years ago

0.24.1-alpha.14

3 years ago

0.24.1-alpha.7

3 years ago

0.24.1-alpha.9

3 years ago

0.24.1-alpha.8

3 years ago

0.24.1-alpha.5

3 years ago

0.24.1-alpha.4

3 years ago