The Elastic Distribution of OpenTelemetry Node.js (EDOT Node.js) sends data via OpenTelemetry protocol (OTLP). Since version 7.14, Elastic Observability supports OTLP natively.
Note that OpenTelemetry support is being improved in the 8.x versions of the Elastic Stack, so it is strongly recommended to be using a recent 8.x version.
EDOT Node.js supports Node.js v14.18.0 and later. This follows from the OpenTelemetry JS supported runtimes.
To use this package, @elastic/opentelemetry-node
, in TypeScript code
requires:
- TypeScript 4.7.2 or later, and
- using
"module": "node16"
(or "nodenext") in "tsconfig.json" to get support for handling the "exports" entry in package.json. This is so the@elastic/opentelemetry-node/sdk
entry-point can be used. (See https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-7.html#ecmascript-module-support-in-nodejs)
Name | Packages instrumented | Reference |
---|---|---|
@elastic/opentelemetry-instrumentation-openai |
openai version range >=4.19.0 <5 |
README |
@opentelemetry/instrumentation-aws-sdk |
aws-sdk v2 and @aws-sdk/client-* v3 |
README |
@opentelemetry/instrumentation-bunyan |
bunyan version range ^1.0.0 |
README |
@opentelemetry/instrumentation-express |
express version range ^4.0.0 |
README |
@opentelemetry/instrumentation-fastify |
fastify version range >=3 <5 |
README |
@opentelemetry/instrumentation-generic-pool |
generic-pool version range 2 - 2.3, ^2.4, >=3 |
README |
@opentelemetry/instrumentation-grpc |
@grpc/grpc-js version range ^1.0.0 |
README |
@opentelemetry/instrumentation-hapi |
@hapi/hapi >=17.0.0 <21 |
README |
@opentelemetry/instrumentation-http |
http module for Node.js >=14 |
README |
@opentelemetry/instrumentation-ioredis |
ioredis version range >=2 <6 |
README |
@opentelemetry/instrumentation-knex |
knex version range >=0.10.0 |
README |
@opentelemetry/instrumentation-koa |
koa version range ^2.0.0 |
README |
@opentelemetry/instrumentation-lru-memoizer |
lru-memoizer version range >=1.3 <3 |
README |
@opentelemetry/instrumentation-memcached |
memcached version range >=2.2 |
README |
@opentelemetry/instrumentation-mongodb |
mongodb version range >=3.3 <7 |
README |
@opentelemetry/instrumentation-nestjs-core |
@nestjs/core version range >=4.0.0 |
README |
@opentelemetry/instrumentation-net |
net module for Node.js >=14 |
README |
@opentelemetry/instrumentation-pino |
pino version range >=5.14.0 <10 |
README |
@opentelemetry/instrumentation-pg |
pg version range >=8 <9 |
README |
@opentelemetry/instrumentation-redis-4 |
redis version range ^4.0.0 |
README |
@opentelemetry/instrumentation-restify |
restify version range >=4.0.0 <12 |
README |
@opentelemetry/instrumentation-router |
router version range 1 |
README |
@opentelemetry/instrumentation-socket.io |
socket.io version range 2, >=3 <5 |
README |
@opentelemetry/instrumentation-tedious |
tedious version range >=1.11.0 <=15 |
README |
@opentelemetry/instrumentation-undici |
undici version range >=5.12.0 |
README |
@opentelemetry/instrumentation-winston |
winston version range >1 <4 |
README |
This Distro includes limited and experimental support for instrumenting ECMAScript module imports, i.e. modules that are loaded via import ...
statements and import('...')
(dynamic import).
Limitations:
- For Node.js
>=20.6.0 || >=18.19.0
, support for hookingimport
s is automatically enabled. For earlier versions of Node.js, you must manually enable theimport
-hook via the--experimental-loader=@elastic/opentelemetry-node/hook.mjs
option, e.g.:node --experimental-loader=@elastic/opentelemetry-node/hook.mjs --require=@elastic/opentelemetry-node app.js
. - Currently only a subset of instrumentations support ESM:
express
,ioredis
,koa
,pg
,pino
. See this OpenTelemetry JS tracking issue for progress.