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
k8sattributesprocessor moves from contrib v1.0.0 to v1.2.0. - Log records produced by the
filelog,journaldandwindowseventlogreceivers that carry no instrumentation scope now get the scope namegithub.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanzaand the collector build version as the scope version. Previously both were empty. Upstream governs this with the new betapkg.stanza.addDefaultScopeNamefeature 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_overflowenabled. 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,filterandroutingcomponents 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 askeep_keys(attributes, "http.method"), is now rejected when the configuration loads instead of failing on every record. Slice arguments of stable functions such asConcatnow accept paths and converters that resolve to a list at runtime.Timeno longer treats a trailing strptime%Zas UTC when no location is given. Upstream added anpkg.ottl.functions.enableExperimentalgate that must be enabled to use experimental functions; no function shipped here is marked experimental, so it has no effect today. - The
routingconnector validates its OTTL conditions and statements when the configuration loads, so a bad statement fails at startup instead of at runtime. - The
k8sattributesprocessor rejects an invalid regular expression inexclude.pods[].namewhen 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
redactionprocessor 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 whosesummaryis notdebugorinfono longer protects an upstream summary, so a downstream processor withallow_all_keys: falsenow removes the five summary attributes it previously kept unless they are listed inallowed_keys; and a key inside a log body named after a summary attribute is now redacted like any other unknown key. - The
failoverconnector requires everycondition.error.containsentry 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
postgresqlreceiver now times out a scrape after 60s by default so a blocked query no longer stalls collection. Settimeouthigher for long scrapes ortimeout: 0for the previous unbounded behaviour. It gainsconnect_databaseto choose the database used for cluster-wide statistics, and addspostgresql.useridtodb.server.top_queryanddb.server.query_planevents. - The
mongodbreceiver reports a loopbackserver.addressas the collector host name, which also changesservice.instance.idfor those deployments, and now emitsserver.portby default; disable it withresource_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
mysqlreceiver reportsmysql.index.io.wait.countandmysql.index.io.wait.timeunder the correctoperationattribute; delete counts previously appeared underoperation=update. - The
elasticsearchexporter detects the connected Elasticsearch version at startup and logs it. On Elasticsearch 9.3.0 or later inotelmapping mode it stores exponential histograms in the nativeexponential_histogramfield. Setversion_detection.enabled: falseto opt out of both. - The
googlecloudlogentryencoding extension now setshost.idas a string taken fromvmInstanceIdStringrather than an integer fromvmInstanceId, fixing Cloud DNS query logs whose id is in exponent notation. Entries with an unparseabletraceorspanIdare kept with the raw values ingcp.traceandgcp.span_id, and a bare trace ID without theprojects/<project>/traces/prefix is accepted. - The
statsdreceiver 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
prometheusremotewritereceiver attaches exemplars once, to the series that sent them, rather than to every metric built from the same labels. - The
basicauthextension can source credentials from a secret provider extension viahtpasswd.secret_providerorclient_auth.secret_providerand rotate them without a restart. Thegroupbytraceprocessor gainsemit_strategy: serviceto release spans per emitting service. - The
containerparser used by thefilelogreceiver is roughly 70% cheaper on CPU, and accepts containerd logs whose timestamps use a UTC offset instead ofZwhenformat: containerdis set. - No configuration changes are required unless a setting listed above is set explicitly.