Releases: elastic/elastic-otel-node
@elastic/opentelemetry-node 1.10.0
Changelog
Features and enhancements
- Because
@opentelemetry/instrumentation-fastifyis no longer being maintained, it has been removed from EDOT Node.js. This matches the removal from@opentelemetry/auto-instrumentations-node. See the breaking changes note for this release for details on how to switch to@fastify/otelinstrumentation. - Change the docker image (
docker.elastic.co/observability/elastic-otel-node), used primarily for Kubernetes auto-instrumentation with the OpenTelemetry Operator, to run as thenonrootuser. This allows using EDOT Node.js in with the OpenTelemetry Operator in Kubernetes clusters configured with a strict pod security policy that disallows running as root (securityContext.runAsNonRoot).
Chores
- Update all
@opentelemetry/*upstream package dependencies to the latest releases:v2.6.1release from opentelemetry-jsexperimental/v0.214.0release from opentelemetry-js- opentelemetry-js-contrib release
- Notably,
@opentelemetry/instrumentation-fastifyis no longer being updated, in favor of@fastify/otel.
- Notably,
@elastic/opentelemetry-node 1.9.0
Changelog
Features and enhancements
- Add environment variables for configuring HTTP header capture. #1349
ELASTIC_OTEL_INSTRUMENTATION_HTTP_CLIENT_CAPTURE_REQUEST_HEADERS- Comma-separated list of HTTP request headers to capture on client spans.ELASTIC_OTEL_INSTRUMENTATION_HTTP_CLIENT_CAPTURE_RESPONSE_HEADERS- Comma-separated list of HTTP response headers to capture on client spans.ELASTIC_OTEL_INSTRUMENTATION_HTTP_SERVER_CAPTURE_REQUEST_HEADERS- Comma-separated list of HTTP request headers to capture on server spans.ELASTIC_OTEL_INSTRUMENTATION_HTTP_SERVER_CAPTURE_RESPONSE_HEADERS- Comma-separated list of HTTP response headers to capture on server spans.
Chores
- Update all
@opentelemetry/*upstream package dependencies to the latest releases:v2.6.0release from opentelemetry-jsexperimental/v0.213.0release from opentelemetry-js- opentelemetry-js-contrib release
@elastic/mockotlpserver 0.11.0
Changelog
- fix: Do not throw when summarizing a span with no
span.status.
Per https://opentelemetry.io/docs/specs/otlp/#json-protobuf-encoding and OTLP
proto files, thestatusproperty is fully optional.
@elastic/opentelemetry-node 1.8.0
Changelog
Fixes
- Fix the handling of the
deactivate_all_instrumentationscentral configuration setting. If the value isfalse, it is now treated the same as if the setting had not been specified in central configuration. This means thatdeactivate_all_instrumentations=falseanddeactivate_instrumentations=foowill result in the "bar" instrumentation not being deactivated, which is the intended behavior. Before this change,deactivate_all_instrumentations=falsewould result in thedeactivate_instrumentationssetting being completely ignored. #1236
Chores
- Update all
@opentelemetry/*upstream package dependencies to the latest releases:v2.5.0release from opentelemetry-jsexperimental/v0.211.0release from opentelemetry-js- opentelemetry-js-contrib releases up to 2026-01-22
@elastic/opentelemetry-node 1.7.0
Changelog
Features and enhancements
-
Add support for TLS/mTLS configuration of the OpAMP client (used for central configuration). Three new environment variables can be used:
ELASTIC_OTEL_OPAMP_CERTIFICATE,ELASTIC_OTEL_OPAMP_CLIENT_CERTIFICATE, andELASTIC_OTEL_OPAMP_CLIENT_KEY. See the Configure central configuration doc section for details. #1044 -
Improve the "preamble" log message at startup to include some details on envvars set that are relevant to the EDOT Node.js config. This uses an allowlist of non-sensitive envvars to avoid logging sensitive details. #1018
-
Add support for the
opamp_polling_intervalsetting in Central Configuration. #1128While this is supported in the EDOT Node.js SDK, it will only be present in
the "Agent Configuration" UI of Kibana version 9.3 and later.
Fixes
- Update
@opentelemetry/instrumentation-openaidependency to version 0.7.0 to resolve a possible issue with TypeScript compilation. opentelemetry-js-contrib#3240
@elastic/opamp-client-node 0.4.0
Changelog
-
BREAKING CHANGE: The
heartbeatIntervalSecondsoption tocreateOpAMPClient
used to clamp the given value to[100ms, 1d]. Starting in this version,
a value less than 100ms will be ignored, and the default value will be
used. The reason for this is to ignore a possible accidental error case where
zero or a negative number is provided, resulting in a too-fast 100ms
interval. (The 100ms lower bound really only exists for faster testing. It
is not a reasonable value for production.) -
Add
opampClient.setHeartbeatIntervalSeconds(num)and
.resetHeartbeatIntervalSeconds()methods for dynamically changing the
heartbeat interval used by the OpAMP client. Values less than 100ms are
ignored (with a log.warn) and values greater than 1d are clamped to 1d.
#1128
@elastic/opamp-client-node 0.3.0
Changelog
-
Add TLS and mTLS support. #1044
const client = createOpAMPClient({ // ... connect: { ca: fs.readFileSync(path.join(CERTS_DIR, 'ca.crt')), cert: fs.readFileSync(path.join(CERTS_DIR, 'client.crt')), key: fs.readFileSync(path.join(CERTS_DIR, 'client.key')), } });
-
Be more defensive in handling the
heartbeatIntervalSecondsoption: clamp to
[100ms, 1d]and use the default (30s) for invalid values. The previous
behaviour was to throw on invalid values, and to not have a max value.
@elastic/mockopampserver 0.5.0
Changelog
-
Add TLS and mTLS support. #1044
The mockopampserver CLI now has these new options for setting TLS data, and
for requesting client certs (for mTLS):--cacert=ARG Override the built-in-to-Node.js trusted CA certificates with the content of this file, in PEM format. Enables HTTPS. --cert=ARG Path to file with TLS certificate chains, in PEM format, to use. Enables HTTPS. --key=ARG Path to server TLS private keys, in PEM format. Enables HTTPS. --request-client-cert Tells the server to request TLS certs from connecting clients. Enables HTTPS.The code interface also has equivalent new options:
const opampServer = new MockOpAMPServer({ // ... ca: fs.readFileSync("..."), cert: fs.readFileSync("..."), key: fs.readFileSync("..."), requestCert: true });
@elastic/opentelemetry-node 1.6.0
Changelog
Features and enhancements
-
Add support for
ELASTIC_OTEL_OPAMP_HEADERSenvironment variable for setting headers for OpAMP requests. This typically would be used to specify authorization for a givenELASTIC_OTEL_OPAMP_ENDPOINT, e.g.:export ELASTIC_OTEL_OPAMP_HEADERS="Authorization=ApiKey sekrit". #1069 -
HTTP exporters now accept TLS configuration via the env vars
OTEL_EXPORTER_OTLP_CERTIFICATE,OTEL_EXPORTER_OTLP_CLIENT_KEYandOTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE. The signal specific vars (OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE, ...) are also taken into account. -
Prepend EDOT Node.js product identifier in the
user-agentfor all HTTP and GRPC exporters. (#1104) -
Switch back to the upstream resource detector
@opentelemetry/resource-detector-gcpwhich covers more environments thanks to Google's contribution. -
Add support for dynamic configuration of the sampling rate of the default logger via the
sampling_ratevariable in Central Configuration. #1070While this is supported in the EDOT Node.js SDK, it will only be present in
the "Agent Configuration" UI of Kibana version 9.3 and later.
Fixes
- Update to latest
@opentelemetry/*dependencies (#1104), which includes a couple of fixes:- a bug in
@opentelemetry/otlp-grpc-exporter-base@0.206.0prevented to set theuser-agentheader in metadata. A change in the exporter configuration fixed it. - the context manager and propagation setup is the first thing at the start of the SDK. This prevents detectors from leaking telemetry since they get the right context.
- a bug in
@elastic/mockopampserver 0.4.1
Changelog
-
Fix an edge case where the server could crash on receiving a AgentToServer
with aninstance_uidthat could not be stringified to a valid UUID. -
Bump the OpAMP protobuf definitions to v0.14.0 (from v0.12.0).
https://github.com/open-telemetry/opamp-spec/blob/main/CHANGELOG.md#v0140