Loading

Elastic Distribution of OpenTelemetry Node.js release notes

Stack Serverless Observability

Review the changes, fixes, and more in each version of Elastic Distribution of OpenTelemetry Node.js (EDOT Node.js).

To check for breaking changes, see EDOT Node.js Breaking Changes.

To check for security updates, go to Security announcements for the Elastic stack.

  • Initial support for Central Configuration: the ability to configure some aspects of EDOT Node.js in running instrumented applications from a central Kibana. This feature is in technical preview. #834

    This release includes support for the following settings: logging_level

  • Fix publishing so that the "hook.mjs" file is included. #835

    Without this fix, using node --import @elastic/opentelemetry-node ... will crash with:

    Cannot find module '.../node_modules/@elastic/opentelemetry-node/hook.mjs' imported from .../node_modules/@elastic/opentelemetry-node/import.mjs

  • Added the ELASTIC_OTEL_HOST_METRICS_DISABLED environment variable to control whether EDOT Node.js collects host metrics (process.*). This means users can turn off host metrics without affecting metrics from instrumentations. #736

The ELASTIC_OTEL_METRICS_DISABLED environment variable is now deprecated. Use OTEL_METRICS_EXPORTER=none to turn off any metrics exported by EDOT Node.js.

  • Restored the @elastic/opentelemetry-node/sdk entry point. You can use node --import ./telemetry.mjs app.js rather than the typical zero-code node --import @elastic/opentelemetry-node app.js method for starting the SDK. #718.

The ./telemetry.mjs file uses APIs exported by @elastic/opentelemetry-node/sdk to configure and start the OpenTelemetry Node.js SDK. See examples/telemetry.mjs.

Warning

Bootstrapping the Node SDK in code often requires using OpenTelemetry JS APIs that are not yet stable. These APIs might break in minor versions of @elastic/opentelemetry-node.

  • Default to stable semantic conventions for HTTP instrumentation. #669.
  • Upgraded upstream OTel dependencies to SDK 2.0. This should be non-breaking for users of node --import @elastic/opentelemetry-node my-app.js to start EDOT Node.js for their application. #663.
  • Use peerDependencies for @opentelemetry/api dependency, and cap it to a known-supported maximum version, according to OTel JS guidance for implementors. #606.
  • Improved ES module (ESM) instrumentation. #584. As part of this change, using --require @elastic/opentelemetry-node will no longer set up a module hook for instrumenting ES modules; only using --import @elastic/opentelemetry-node will do so. Use --import @elastic/opentelemetry-node to start EDOT Node.js. Using --require ... is still valid when you know your application is only using CommonJS modules.
  • Added @opentelemetry/instrumentation-mysql to the default set of instrumentations.
  • Added @opentelemetry/instrumentation-mysql2 to the default set of instrumentations.
  • Added @opentelemetry/instrumentation-cassandra-driver to the default set of instrumentations.
  • Test that the native instrumentation in @elastic/elasticsearch@8.15.0 and later works.
  • Added @elastic/opentelemetry-instrumentation-openai to the default set of instrumentations.
  • Bumped @opentelemetry/* dependencies.
  • Fixed release workflow. v0.4.0 was released without a GitHub releases entry.
  • A Docker image is now being published that can be used with the OpenTelemetry Operator's support for auto-instrumentation injection (#374):

    • docker.elastic.co/observability/elastic-otel-node:${version} and :latest will be published for tagged releases
    • docker.elastic.co/observability/elastic-otel-node:edge will be published for each push to "main".
  • Added the following instrumentations:
    @opentelemetry/instrumentation-connect
    @opentelemetry/instrumentation-cucumber
    @opentelemetry/instrumentation-dataloader
    @opentelemetry/instrumentation-dns
    @opentelemetry/instrumentation-generic-pool
    @opentelemetry/instrumentation-knex
    @opentelemetry/instrumentation-koa
    @opentelemetry/instrumentation-lru-memoizer
    @opentelemetry/instrumentation-memcached
    @opentelemetry/instrumentation-nestjs-core
    @opentelemetry/instrumentation-net
    @opentelemetry/instrumentation-redis
    @opentelemetry/instrumentation-restify
    @opentelemetry/instrumentation-router
    @opentelemetry/instrumentation-socket.io
    
  • Bumped minimum supported Node.js version to v14.18.0.
  • Added the following @opentelemetry/instrumentation-* instrumentations: hapi, aws-sdk, redis-4, grpc, pino.
  • Added cloud and container resource detectors, the same set included in @opentelemetry/auto-instrumentations-node. These are enabled by default. Use OTEL_NODE_RESOURCE_DETECTORS to set an explicit list of detectors.
  • Added missing exporters for logs and metrics signals. This means that OTEL_EXPORTER_OTLP_PROTOCOL=grpc and OTEL_EXPORTER_OTLP_PROTOCOL=http/json now work. Before this change only the default http/proto OTLP export protocol would work by default.
  • Correct another issue with "repository.url" setting in package.json, required for npm provenance generation.

Correct "repository.url" setting in package.json, required for npm provenance generation.

  • Trimmed files included in published npm package.

First release of the Elastic Distribution of OpenTelemetry Node.js.