Skip to content

Releases: elastic/elastic-otel-node

@elastic/opentelemetry-node 1.7.0

24 Nov 19:40
bf29223

Choose a tag to compare

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, and ELASTIC_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_interval setting in Central Configuration. #1128

    While 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-openai dependency to version 0.7.0 to resolve a possible issue with TypeScript compilation. opentelemetry-js-contrib#3240

README | Full Release Notes | Breaking Changes

@elastic/opamp-client-node 0.4.0

10 Nov 17:45
c53bc46

Choose a tag to compare

Changelog

  • BREAKING CHANGE: The heartbeatIntervalSeconds option to createOpAMPClient
    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


README | Full Changelog

@elastic/opamp-client-node 0.3.0

05 Nov 20:10
69eaf2c

Choose a tag to compare

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 heartbeatIntervalSeconds option: 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.


README | Full Changelog

@elastic/mockopampserver 0.5.0

04 Nov 19:50
e7385d8

Choose a tag to compare

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
    });

README | Full Changelog

@elastic/opentelemetry-node 1.6.0

03 Nov 09:34
de63a92

Choose a tag to compare

Changelog

Features and enhancements

  • Add support for ELASTIC_OTEL_OPAMP_HEADERS environment variable for setting headers for OpAMP requests. This typically would be used to specify authorization for a given ELASTIC_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_KEY and OTEL_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-agent for all HTTP and GRPC exporters. (#1104)

  • Switch back to the upstream resource detector @opentelemetry/resource-detector-gcp which covers more environments thanks to Google's contribution.

  • Add support for dynamic configuration of the sampling rate of the default logger via the sampling_rate variable in Central Configuration. #1070

    While 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:

README | Full Release Notes | Breaking Changes

@elastic/mockopampserver 0.4.1

31 Oct 20:16
1a058c9

Choose a tag to compare

Changelog


README | Full Changelog

@elastic/opentelemetry-node 1.5.0

07 Oct 15:22
f9cd4fc

Choose a tag to compare

Changelog

Chores


README | Full Release Notes | Breaking Changes

@elastic/opentelemetry-node 1.4.0

16 Sep 15:51
53f6370

Choose a tag to compare

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-openai package
    to instrument openai. The newer package supports instrumenting openai@5 --
    the current major version.
    #1015

    • If you were using @elastic/opentelemetry-instrumentation-openai with the
      OTEL_NODE_ENABLED_INSTRUMENTATIONS or OTEL_NODE_ENABLED_INSTRUMENTATIONS
      environment variables, you should switch to using openai. The old value
      will still work until the next major release.

Fixes

  • Update to latest @opentelemetry/* dependencies (#1027), which includes a fix for a bug in @opentelemetry/[email protected] that could break bundling.

README | Full Release Notes | Breaking Changes

@elastic/opentelemetry-node 1.3.0

09 Sep 18:53
1b3987d

Choose a tag to compare

Changelog

Features and enhancements

  • Added @opentelemetry/instrumentation-oracledb to 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_ONLY configuration environment variable.
    Set this to true to 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

README | Full Release Notes | Breaking Changes

@elastic/mockotlpserver 0.10.0

03 Sep 15:22
62eb330

Choose a tag to compare

Changelog

  • feat: Add a new onRequest callback option to MockOTLPServer that 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'
      }
    

README | Full Changelog