Releases: elastic/elastic-otel-node
@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/[email protected]prevented 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
@elastic/opentelemetry-node 1.5.0
Changelog
Chores
-
Update to the latest upstream OpenTelemetry JS dependencies. (#1062)
-
Switch to trusted publishing (https://docs.npmjs.com/trusted-publishers) as a security precaution against supply-chain attacks.
@elastic/opentelemetry-node 1.4.0
Changelog
Features and enhancements
-
The Elastic-authored
@elastic/opentelemetry-instrumentation-openai
instrumentation has been upstreamed to OpenTelemetry.
EDOT Node.js now uses the@opentelemetry/instrumentation-openaipackage
to instrumentopenai. The newer package supports instrumenting openai@5 --
the current major version.
#1015- If you were using
@elastic/opentelemetry-instrumentation-openaiwith the
OTEL_NODE_ENABLED_INSTRUMENTATIONSorOTEL_NODE_ENABLED_INSTRUMENTATIONS
environment variables, you should switch to usingopenai. The old value
will still work until the next major release.
- If you were using
Fixes
- Update to latest
@opentelemetry/*dependencies (#1027), which includes a fix for a bug in@opentelemetry/[email protected]that could break bundling.
@elastic/opentelemetry-node 1.3.0
Changelog
Features and enhancements
-
Added
@opentelemetry/instrumentation-oracledbto the default set of instrumentations. -
New Central Configuration settings. Typically these settings are only useful
for temporary debugging of telemetry.send_traces: A boolean to disable/enable sending of trace telemetry (i.e. spans).send_metrics: The same, for the metrics signal.send_logs: The same, for the logs signal.
While these are supported in EDOT Node.js, they will only be present in
"Agent Configuration" UI of Kibana version 9.2 and later.
#928 -
New
ELASTIC_OTEL_CONTEXT_PROPAGATION_ONLYconfiguration environment variable.
Set this totrueto disable sending of spans, but otherwise continue to
do context propagation. This can be useful in limited conditions to support
propagating trace-context through a service to downstream services for
distributed tracing, but not collect spans from the service. (Note that this
typically results in incomplete or broken traces in Kibana trace viewer.)
#928
Fixes
Chores
- OTLP export requests (HTTP flavors only) will include an identifier for EDOT Node.js in the User-Agent header.
#982
@elastic/mockotlpserver 0.10.0
Changelog
-
feat: Add a new
onRequestcallback option toMockOTLPServerthat allows
capturing some info for each incoming request. The callback will be called
for each incoming OTLP request. The callback data will include:{ transport: <string>, // 'http' or 'grpc' method?: <string>, // HTTP method if transport is 'http' path: <string>, // HTTP or gRPC request path headers: <map>, // HTTP headers if transport is 'http' metadata: <Metadata>, // gRPC headers if transport is 'grpc' }