Skip to main content

Agent 0.5.72 (Oct 2026)

Enhancements​

Upstream OpenTelemetry Collector updated to v0.163.0​

The collector now builds on OpenTelemetry Collector core and contrib v0.163.0, which fixes a sending-queue deadlock, stamps a default instrumentation scope on file, journald and Windows event log records, validates more configuration at startup, and changes several component defaults.

  • Core collector modules move from v0.162.0 to v0.163.0 (stable modules v1.68.0 to v1.69.0), and all contrib components move from v0.162.0 to v0.163.0. The bundled k8sattributes processor moves from contrib v1.0.0 to v1.2.0.
  • Log records produced by the filelog, journald and windowseventlog receivers that carry no instrumentation scope now get the scope name github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza and the collector build version as the scope version. Previously both were empty. Upstream governs this with the new beta pkg.stanza.addDefaultScopeName feature gate, enabled by default and not togglable here. Destinations or queries that match on an empty scope name need updating.
  • The exporter sending queue no longer deadlocks when a blocked offer is cancelled with block_on_overflow enabled. When a traces batch is split and a single span exceeds the maximum size, only that span is dropped instead of every span queued behind it, matching the logs behaviour introduced in v0.162.0.
  • Effective-configuration snapshots now redact opaque values inside list settings, so secrets held in lists no longer appear in the unexpanded configuration output.
  • OTTL statements and conditions in the transform, filter and routing components now report the line and column of a parse error where available, and the wording of parse error messages has changed. A slice argument given a non-list literal, such as keep_keys(attributes, "http.method"), is now rejected when the configuration loads instead of failing on every record. Slice arguments of stable functions such as Concat now accept paths and converters that resolve to a list at runtime. Time no longer treats a trailing strptime %Z as UTC when no location is given. Upstream added an pkg.ottl.functions.enableExperimental gate that must be enabled to use experimental functions; no function shipped here is marked experimental, so it has no effect today.
  • The routing connector validates its OTTL conditions and statements when the configuration loads, so a bad statement fails at startup instead of at runtime.
  • The k8sattributes processor rejects an invalid regular expression in exclude.pods[].name when the configuration loads instead of crashing at startup, and its deprecation warnings for legacy attribute names are now evaluated after the configured extraction rules are applied, so they fire only when a legacy name is actually configured.
  • The redaction processor keeps all fourteen of its summary attributes intact when data passes through a second redaction processor; previously only five survived and the rest were deleted and reported as redacted. Two behaviour changes follow for chained configurations: a processor whose summary is not debug or info no longer protects an upstream summary, so a downstream processor with allow_all_keys: false now removes the five summary attributes it previously kept unless they are listed in allowed_keys; and a key inside a log body named after a summary attribute is now redacted like any other unknown key.
  • The failover connector requires every condition.error.contains entry to be a non-empty string and fails over only when a downstream error matches one. A configuration with an empty entry no longer loads.
  • The postgresql receiver now times out a scrape after 60s by default so a blocked query no longer stalls collection. Set timeout higher for long scrapes or timeout: 0 for the previous unbounded behaviour. It gains connect_database to choose the database used for cluster-wide statistics, and adds postgresql.userid to db.server.top_query and db.server.query_plan events.
  • The mongodb receiver reports a loopback server.address as the collector host name, which also changes service.instance.id for those deployments, and now emits server.port by default; disable it with resource_attributes.server.port.enabled: false. Six new metrics for asserts, global lock queue, write concern wait time and query executor scans are available but disabled by default.
  • The mysql receiver reports mysql.index.io.wait.count and mysql.index.io.wait.time under the correct operation attribute; delete counts previously appeared under operation=update.
  • The elasticsearch exporter detects the connected Elasticsearch version at startup and logs it. On Elasticsearch 9.3.0 or later in otel mapping mode it stores exponential histograms in the native exponential_histogram field. Set version_detection.enabled: false to opt out of both.
  • The googlecloudlogentry encoding extension now sets host.id as a string taken from vmInstanceIdString rather than an integer from vmInstanceId, fixing Cloud DNS query logs whose id is in exponent notation. Entries with an unparseable trace or spanId are kept with the raw values in gcp.trace and gcp.span_id, and a bare trace ID without the projects/<project>/traces/ prefix is accepted.
  • The statsd receiver closes the TCP connection when the client disconnects and bounds the size of an unterminated line, fixing a file descriptor leak and unbounded memory growth on the TCP transport.
  • The prometheusremotewrite receiver attaches exemplars once, to the series that sent them, rather than to every metric built from the same labels.
  • The basicauth extension can source credentials from a secret provider extension via htpasswd.secret_provider or client_auth.secret_provider and rotate them without a restart. The groupbytrace processor gains emit_strategy: service to release spans per emitting service.
  • The container parser used by the filelog receiver is roughly 70% cheaper on CPU, and accepts containerd logs whose timestamps use a UTC offset instead of Z when format: containerd is set.
  • No configuration changes are required unless a setting listed above is set explicitly.