The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.
End User Changelog
🛑 Breaking changes 🛑
-
cmd/opampsupervisor: The supervisor now fails to start when the deprecatedreports_remote_configcapability option is set totrue. (#49763)
Removereports_remote_configfrom the supervisor config;accepts_remote_configenables both the AcceptsRemoteConfig and ReportsRemoteConfig OpAMP capabilities. The option will be removed in v0.165.0. -
connector/failover: Reject emptycondition.error.containsvalues and fail over only for matching downstream errors (#44518)
condition.error.containsnow requires a list of non-empty strings. -
exporter/signalfx: Exclude generatedcontainer_cpu_utilizationmetric by default (#51906)
This metric has been deprecated in favor ofcontainer.cpu.usage. Ifcontainer_cpu_utilization
is still required, please add it to the exporter'sinclude_metricsconfiguration option as shown below.signalfx: include_metrics: - metric_name: container_cpu_utilization -
extension/google_cloud_logentry_encoding: Fix Cloud DNS query logs failing to decode whenvmInstanceIdis in exponent notation.host.idis now a string taken fromvmInstanceIdStringinstead of an int taken fromvmInstanceId. (#51552) -
processor/redaction: Keep every redaction summary attribute intact when data re-enters the processor (#50770)
Only five of the fourteen summary attributes the processor writes survived a second redaction processor. When data
passed through one,redaction.allowed.keys,redaction.allowed.countand the sevenredaction.body.*attributes
were treated as unknown keys, deleted, and reported inredaction.redacted.keys.The processor now treats all fourteen as its own bookkeeping rather than as user data, so they are no longer deleted,
masked, obfuscated or counted as redacted, and the summary accumulates across chained processors as intended.
Previously ablocked_key_patternsorblocked_valuesrule matching one of these attributes replaced the summary
with a masked value, and withredact_all_typesenabled it rewrote the*.countintegers as strings, which made the
running totals read back as zero at the next hop.Chaining two processors also reported the same attribute more than once: the allowed and ignored summaries
describe the record as it currently stands, which every processor re-derives in full, so merging them with an
upstream value counted one attribute twice.redaction.allowed.keysreademail,emailwith
redaction.allowed.countof 2 for a single allowed attribute. Those two outcomes now replace the upstream
value, while the redacted and masked outcomes keep accumulating, because a removed key and an already masked
value cannot be detected again.Two behaviour changes come with this, both of which can affect an existing chained configuration.
A processor whose
summaryis notdebugorinfonow claims no ownership of a summary it finds, so the ordinary
allow list decides whether it survives. This lets a strict egress processor strip an upstream audit trail, which it
could not do before. It also means a downstream processor withallow_all_keys: falsenow removes the five summary
attributes it previously kept unconditionally, unless they are named inallowed_keysorallow_all_keysis set.
summaryis unset by default, which counts as silent, so a chained configuration that never sets it is affected.A key inside a log body named after a summary attribute is now redacted like any other unknown key. The processor
only ever writes its summary to the record attributes, so such a key in a body carries user data. -
receiver/postgresql: Set the default scrape timeout to 60s to cancel blocked PostgreSQL queries. (#50757)
Increasetimeoutfor longer scrapes, or settimeout: 0to restore the unbounded behavior. -
receiver/prometheus_simple: Remove the long-deprecatedtls_enabledandtls_configsettings; usetlsinstead (#51895)
tls_enabled/tls_configwere deprecated in v0.55.0 in favor of the standard
tlsblock (confighttp's TLS settings). Besides being long overdue, keeping both
was a footgun: settingtls_enabled: truesilently overrode anytlsblock.
Migratetls_config(ca_file/cert_file/key_file/insecure_skip_verify) to
the equivalent fields undertls. -
receiver/sql_server: Performance counters read from the SQL ServerDatabasesobject on a direct database connection now carry thesqlserver.database.nameresource attribute and no longer emit an unlabeled_Totalaggregate, which changes the series identity ofsqlserver.database.backup_or_restore.rate. (#51384)
sqlserver.database.backup_or_restore.ratesplits from one series into one per database, and the
unlabeled series it previously reported is gone. Aggregate acrosssqlserver.database.nameinstead.
This brings the direct database connection in line with the Windows performance counter path, which
already discards the aggregate instance before recording.
🚩 Deprecations 🚩
receiver/sql_server: Rename thesqlserverreceiver tosql_server. The oldsqlservertype remains available as a deprecated alias. (#45339)
🚀 New components 🚀
processor/adaptive_tail_sampling: Promote the adaptive_tail_sampling processor to alpha stability and include it in the contrib distribution. (#49311)processor/partitioning: Add the initial skeleton for the partitioning processor. (#39199)processor/rolling_span_latency: Promote the rolling_span_latency processor to alpha stability and include it in the contrib distribution. (#50260)
💡 Enhancements 💡
-
connector/routing: Validate OTTL conditions and statements during configuration. (#51748) -
connector/service_graph: Recognize current semantic-convention attributes (peer.service.name,db.namespace,db.system.name) alongside legacy keys when deriving peer and database-name dimensions. (#22095) -
exporter/cassandra: Add configuration validation and error case tests. (#51730) -
exporter/clickhouse: Adddatabase_engineconfig to set theENGINEused when creating the database, such asReplicated. (#51513)
Whendatabase_engine.nameisReplicated,ON CLUSTERis only applied to theCREATE DATABASEstatement. -
exporter/datadog: Mark exporter/datadogexporter as unsupported on freebsd/amd64. (#15781) -
exporter/datadog: Move theexporter.datadogexporter.AddUnitsfeature gate to beta. Metric units are now sent to Datadog by default. (#15280) -
exporter/elasticsearch: Store OTLP exponential histograms in Elasticsearch's native exponential_histogram field (#51429)
Enabled automatically in OTel mapping mode when connected to Elasticsearch 9.3.0 or later; disable viaversion_detection.enabled: false. -
exporter/elasticsearch: Log the connected Elasticsearch version and build flavor at startup (#51541)
Addsversion_detection(enabled by default); setversion_detection.enabled: falseto opt out. -
exporter/kafka: Add the trace context to Kafka record headers using the propagators configured inservice::telemetry::traces::propagators. (#51078) -
exporter/nats: Implement core NATS publishing, so traces, metrics, and logs are published to per-signal subjects derived from OTTL value expressions. (#50735)
JetStream durable publishing is not yet implemented; a configuredjetstreamblock is rejected at startup until it lands. -
exporter/splunk_hec: Define the exporter's heartbeat metrics in metadata.yaml and generate them via mdatagen. (#49009) -
extension/basicauth: Support sourcing credentials from secret provider extensions, with rotation that does not restart the collector. (#48277)
Configure withhtpasswd.secret_provider(server) orclient_auth.secret_provider(client).
The referenced extension must implement theSecretProviderinterface (GetSecretandOnChange). -
extension/datadog: Mark extension/datadogextension as unsupported on freebsd/amd64. (#15781) -
extension/opamp: Add asocketoption underserver.wsandserver.httpto dial the OpAMP server over a Unix domain socket (transport: unix) or Windows named pipe (transport: npipe). (#50603)
Whensocketis set, theendpointonly supplies the URL scheme, request path, and Host
header; its host and port are ignored. -
extension/pebble_tail_storage: Addon_read_errorto choose between dropping a trace or returning the readable part when stored batches cannot be read or decoded. (#49906)
The default isdrop_trace. Take deletes the stored trace and returns an error, and the tail sampling processor drops the trace without a sampling decision.
Seton_read_error: return_partialto keep the previous best-effort behavior, where Take returns the batches that could still be read.
Two new metrics,otelcol_extension_pebble_tail_storage_read_error_trace_dropsandotelcol_extension_pebble_tail_storage_read_error_partial_returns, count which policy ran. -
internal/kafka: Reuse cached AWS credentials acrossAWS_MSK_IAM_OAUTHBEARERtoken generations instead of resolving them on every SASL authentication. (#50038) -
pkg/ottl: Add thepkg.ottl.functions.enableExperimentalfeature gate, which must be enabled to use experimental OTTL functions. (#51564) -
pkg/ottl: Allowkeep_keysto accept slice values from paths and converter expressions when thepkg.ottl.functions.enableDynamicSliceArgumentsfeature gate is enabled. (#45980) -
pkg/ottl: Improve OTTL parse error diagnostics by reporting the line and column of the input where available. (#51680)
Not all parse errors carry a position: errors that aggregate multiple statements, and some
inner errors that didn't already carry one, are still returned without one. The exact
wording and position of statement, condition, and value expression parse error messages
has changed as a result. The position is exposed programmatically via the new experimental
xottl.Errortype. -
pkg/ottl: Add the betapkg.ottl.functions.enableDynamicSliceArgumentsfeature gate, which controls whether slice arguments of stable functions such asConcataccept paths and converters. (#51565) -
pkg/stanza: Optimize container parser operator by replacing CRI line and File path regexes with a hand-written parsers and caching log filepath metadata extraction, reducing CPU usage by ~70% on the container parser hot path (#41672) -
pkg/stanza: Add default scope name and version for stanza log entries without scope name (#51084)
This introduces thepkg.stanza.addDefaultScopeNamefeature gate (currently in beta) to ensure Stanza log entries are assigned a default scope name and version when not explicitly provided. -
processor/adaptive_tail_sampling: Addfleet_trackerto divide eachadaptive_throughputrule'sgoal_throughputby the live fleet member count reported by afleet_trackerextension, making the goal a fleet-wide budget instead of a per-instance one. (#50577) -
processor/akamaidetector: Addomit_detector_akamaigo build tag to omit detector at build time. (#47218) -
processor/alibabaecsdetector: Addomit_detector_alibaba_ecsgo build tag to omit detector at build time. (#47218) -
processor/azuredetector: Addomit_detector_azurego build tag to omit detector at build time. (#47218) -
processor/digitaloceandetector: Addomit_detector_digitaloceango build tag to omit detector at build time. (#47218) -
processor/dynatracedetector: Addomit_detector_dynatracego build tag to omit detector at build time. (#47218) -
processor/groupbytrace: Allow grouping spans by the service that emitted them within a trace (#50553)
Adds anemit_strategyoption that can be set toserviceto allow
emitting spans sourced from a single service within a trace. In some
setups this may allow spans to move more quickly through the processor
while still permitting operations such as RED metric generation,
service discovery, etc. that require spans to be grouped by trace. -
processor/hetznerdetector: Addomit_detector_hetznergo build tag to omit detector at build time. (#47218) -
processor/ibmcloudclassicdetector: Addomit_detector_ibmcloud_classicgo build tag to omit detector at build time. (#47218) -
processor/ibmcloudvpcdetector: Addomit_detector_ibmcloud_vpcgo build tag to omit detector at build time. (#47218) -
processor/novadetector: Addomit_detector_openstack_novago build tag to omit detector at build time. (#47218) -
processor/oracleclouddetector: Addomit_detector_oraclecloudgo build tag to omit detector at build time. (#47218) -
processor/partitioning: Implement logs partitioning. (#39199) -
processor/partitioning: Implement traces partitioning. (#39199) -
processor/partitioning: Implement metrics partitioning. (#39199) -
processor/resource_detection: Addomit_detector_systemgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_aws_ec2go build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_envgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_azure_functionsgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_azure_containerappsgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_dockergo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_azure_appservicego build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_consulgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_azure_aksgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_k8s_apigo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_kubeadmgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_openshiftgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_aws_lambdago build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_gcpgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_herokugo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_aws_eksgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_aws_elastic_beanstalkgo build tag to omit detector at build time. (#47218) -
processor/resource_detection: Addomit_detector_aws_ecsgo build tag to omit detector at build time. (#47218) -
processor/scalewaydetector: Addomit_detector_scalewaygo build tag to omit detector at build time. (#47218) -
processor/tail_sampling: Move spans out of incoming batches instead of copying them, and declare that the processor mutates data. (#51920) -
processor/tencentcvmdetector: Addomit_detector_tencent_cvmgo build tag to omit detector at build time. (#47218) -
processor/upclouddetector: Addomit_detector_upcloudgo build tag to omit detector at build time. (#47218) -
processor/vultrdetector: Addomit_detector_vultrgo build tag to omit detector at build time. (#47218) -
receiver/aws_cloudwatch: Addscope.nameandscope.versionto logs and metrics. (#51333) -
receiver/azure_blob: Add acompressionoption to read gzip compressed blobs (#51412) -
receiver/azure_monitor: Add per-metric time grain overrides for Azure Monitor metric queries. (#51295) -
receiver/google_cloud_spanner: Add missing metrics to top minute transaction stats ingooglecloudspannerreceiver. (#51272) -
receiver/google_cloud_spanner: Add top minute split stats metrics andhide_split_stats_keyslogic ingooglecloudspannerreceiver. Allsplit_stats/top/*metrics gain thesplit_startandsplit_limitattributes with PII hiding support. (#51026) -
receiver/google_cloud_spanner: Add query_optimizer_versions and its value_typeint_slicelogic ingooglecloudspannerreceiver. Allquery_stats/top/*metrics gain this new attribute. (#51219) -
receiver/google_cloud_spanner: Add missing execution metrics to total query stats ingooglecloudspannerreceiver. (#51228) -
receiver/google_cloud_spanner: Add total minute transaction stats metrics to googlecloudspannerreceiver. (#51296) -
receiver/kafka: Addpartition_processing.max_in_flight.recordsto run concurrent unmarshal-plus-Consume calls on one independent partition worker. (#51080)
Whenmax_in_flight.recordsis above 1, the worker always marks after processing.message_marking.after: falsedoes not mark before Consume. -
receiver/kubelet_stats: Add optional k8s node pid limit and usage metrics. (#48926)
Adds the following optional metrics to kubeletstatsreceiver:- k8s.node.pid.limit
- k8s.node.pid.usage
-
receiver/mongodb: Add assert, global lock queue, and write concern metrics (#51418)
Addsmongodb.assert.count,mongodb.global_lock.queue.countand
mongodb.write_concern.wait.time, all disabled by default. -
receiver/mongodb: Add query executor scan and collection scan metrics (#51060)
Addsmongodb.query_executor.index_key.scanned.count,
mongodb.query_executor.document.scanned.countand
mongodb.query_executor.collection_scan.count, all disabled by default. -
receiver/mongodb: Report a loopbackserver.addressas the collector host name, and enableserver.portby default (#51633)
When a scraped node reports a loopback address (localhost,127.0.0.1or::1),server.addressnow
reports the host name of the machine running the collector.service.instance.idis seeded from the same
value and changes for those deployments.server.portwas previously disabled by default; disable it with
resource_attributes.server.port.enabled: false. -
receiver/mysql: Add row-count and database namespace context to the top query event (#51312) -
receiver/oracledb: Add support for Kerberos authentication via a newauth_typeoption andkerberosconfiguration block. (#50401)
Setauth_type: kerberosand configure thekerberosblock to authenticate using a keytab,
credential cache, or password. Kerberos support is implemented in pure Go and requires no external
libraries. -
receiver/postgresql: Addconnect_databaseto configure which database the receiver connects to for cluster-wide statistics collection. (#50920) -
receiver/prometheus_simple: Restore the stability of the receiver fromunmaintainedtobeta(#11504) -
receiver/prometheus_simple: Validate thatendpointis set andcollection_intervalis positive, so an invalid configuration is rejected at startup instead of failing later (#11504) -
receiver/pulsar: Add freebsd/amd64 as a supported build platform. (#15781)
Updated the github.com/AthenZ/athenz dependency to v1.12.27 to enable
freebsd/amd64 builds. -
receiver/sql_server: Addsqlserver.db.editionresource attribute. (#51414)
Disabled by default. Opt in by settingresource_attributes.sqlserver.db.edition.enabled: truein the receiver config. -
receiver/windows_event_log: Promote Windows Event Log receiver to beta stability (#42167)
🧰 Bug fixes 🧰
-
exporter/awsemf: Drop a metric declaration with an invalidmetric_name_selectorsregex instead of panicking (#51115)
An invalid regular expression inmetric_name_selectorswas passed toregexp.MustCompile,
panicking during config validation. It is now compiled withregexp.Compileand the error is
returned, so the declaration is dropped with a warning like an invalidlabel_matchersregex. -
exporter/datadog: Dropinstancefrom the Azure App Service and Azure Functions running metrics in preparation for more accurate instance descriptions. (#51919)
otel.datadog_exporter.metrics.running.azureappservicesandotel.datadog_exporter.metrics.running.azurefunctionsare now tagged only withname,subscription_id, andresource_group, and App Service metrics no longer get aninstancetag. -
exporter/file: Fix race condition where a writer could be closed while still in use, causing data to be silently lost. (#49228)
This will happen ingroup_bymode whenrotationis not set. -
exporter/file: Rejectgroup_by.max_open_files<= 0 and negativerotationvalues during config validation. (#51515) -
extension/azure_encoding: Do not emit 0-valued timeseries for aggregates (total, count, minimum, maximum, average) that are missing from the source Azure record (#50485)
Diagnostic settings only export the aggregates a resource supports. A configured
aggregation whose aggregate is absent from the record is now skipped instead of
being coerced to 0. -
extension/docker_observer: Discover IPv6-only Docker endpoints and format their port targets correctly. (#50972) -
extension/google_cloud_logentry_encoding: Do not drop log entries with an unparseabletraceorspanId, and accept a bare trace ID without theprojects/<project>/traces/prefix. (#51666)
Unparseable values are kept as thegcp.traceandgcp.span_idlog record attributes. -
pkg/faro: Return an error instead of panicking when a log record contains a malformedbrowser_brand_<N>key (#51759) -
pkg/faro: Skip malformedsdk_integrationsentries instead of panicking when translating logs to Faro payloads (#51484)
An integration entry without a:separator, or a trailing comma, caused the Faro exporter to
crash the collector. Such entries are now skipped. Versions that contain:are also no longer
truncated. -
pkg/ottl:Timeno longer treats a trailing strptime%Zas Zulu (UTC) when no location is given (#51416) -
pkg/ottl: Reject literal values that are not lists for slice arguments, such askeep_keys(attributes, "http.method")orConcat("a", "-"), at parse time instead of failing on every execution (#51833) -
pkg/stanza: Fix thecontainerparser rejecting containerd logs whose timestamps use a UTC offset instead ofZwhenformat: containerdis set. (#51284) -
processor/adaptive_tail_sampling: Forward an evicted trace on a detached context rather than the context of whichever request triggered the eviction, so its spans are no longer attributed to an unrelated client. (#51691)
Components reading client.Info downstream, such as headers_setter with from_context, now see no client metadata for an evicted trace instead of the wrong request's. -
processor/adaptive_tail_sampling: Preserve original scope groups, scope metadata, and schema URLs when splitting spans by trace ID, including late spans handled by the decision cache. (#51461) -
processor/cumulative_to_delta: Fix ExponentialBuckets.Diff missing reset when old buckets precede current histogram offset (#51303) -
processor/remotetap: Fix a panic on shutdown (close of nil channel) when a websocket client had already disconnected before the processor shut down. (#51342) -
processor/resource_detection: Honorfail_on_missing_metadataalso for the instance identity document and hostname lookups of theec2detector (#50826)
Theec2detector guarded only its initialinstance-idlookup withfail_on_missing_metadata. The
subsequent instance identity document and hostname lookups always returned their respective errors,
regardless of the fail_on_missing_metadata setting.On clusters where the metadata service implements the EC2-compatible
meta-datatree, but not the AWS-specific
dynamic/instance-identityendpoints, this would lead to a crash on startup even with
fail_on_missing_metadata: false. Theinstance-idlookup would succeed and then the identity document lookup would
fail with HTTP 404. OpenStack Nova based clusters behave this way, so a collector configured with theec2detector and
fail_on_missing_metadata: falsefailed to start on those hosts rather than skipping the detector.The identity document lookup now honors the flag: when
fail_on_missing_metadataisfalseand the endpoint
responds with HTTP 404, the detector logs at debug level and returns an empty resource. Any other error is still
returned, since it might be transient. When the flag istruethe error is returned as before.The hostname lookup honors the flag as well: when
fail_on_missing_metadataisfalse, the detector logs at
debug level and returns the resource without thehost.nameattribute, instead of failing the detection or skipping
the instance tags. When it istrue, the error is returned. -
receiver/azure_blob: Return an error instead of panicking when an Event Hub message has no events or an unexpected blob subject (#51474)
A malformed or unexpected Event Hub message could crash the collector. Such messages are now
logged as errors and skipped, and events other than blob creation are ignored without being parsed. -
receiver/azure_event_hub: Do not emit 0-valued timeseries for aggregates (total, count, minimum, maximum, average) that are missing from the source Azure record (#50485)
Diagnostic settings only export the aggregates a resource supports, e.g. a Standard
Load Balancer exports total and count but no minimum/maximum. Missing aggregates are
now skipped instead of being coerced to 0. -
receiver/azure_event_hub: Recreate the partition client after anownershiplosterror instead of polling a permanently detached link. (#51463)
When another receiver with a higher epoch attached to the same partition and consumer group, the
receiver loggederror receiving eventson every poll forever and never received data again.
The partition client is now closed and reopened from the last received sequence number with exponential backoff. -
receiver/cloud_foundry: Do not emit partially initialized log records for unsupported log types. (#51517) -
receiver/googlecloudmonitoring: Emit data points in chronological order to prevent data loss in downstream processors. (#51641) -
receiver/host_metrics: Reject negativemetadata_collection_intervalvalues during configuration validation. (#51640) -
receiver/kafka: Fix records from healthy partitions being dropped when a poll also contains a fetch error. (#51852) -
receiver/mysql: Reportmysql.index.io.wait.countandmysql.index.io.wait.timeunder the correctoperationattribute (#49597)
Themysql.index.io.wait.countandmysql.index.io.wait.timemetrics were reported under the
wrongoperationattribute (for example, delete counts appeared underoperation=update). Each
datapoint is now reported under its correct operation. -
receiver/postgresql: Addpostgresql.useridtodb.server.top_queryanddb.server.query_plan, and key the top-query counter cache and EXPLAIN plan cache on it instead ofpostgresql.rolname. Fixes a case where two dropped database roles could be reported under each other's counters or query plan, and keeps counter deltas continuous across a role rename. (#51319) -
receiver/prometheus_remote_write: Attach exemplars once, to the series that sent them, rather than to every metric built from the same labels. (#50334, #50546) -
receiver/splunk_enterprise: Fixes recorded value for RollingRestartStatus metric (#51866) -
receiver/sql_server: Fix missing metrics when using direct SQL Server connection -sqlserver.lock.wait_time.avg,sqlserver.transaction.rate,sqlserver.page.operation.rate,sqlserver.page.lazy_write.rate, andsqlserver.transaction_log.growth.countnow emit values on non-Windows platforms and when the receiver is configured with a direct database connection. (#51384)
All of these exceptsqlserver.transaction_log.growth.countreport no
data point on the first scrape, since they are calculated from the change in their counters between scrapes. -
receiver/sql_server:sqlserver.session.durationnow reports whole seconds since login instead of milliseconds, fixing a 25-day overflow intotal_elapsed_time. (#51419) -
receiver/sql_server: Fix direct connection queries returning no data wheninstance_nameis set to a named instance (#50773)
The direct connection queries filtered rows with@@SERVERNAME = '<instance_name>'. On a named
instance@@SERVERNAMEreturns<host>\<instance>, which never matches the bare instance name,
so every query returned zero rows and no metrics were emitted. The filter was also redundant:
a connection is scoped to a single instance and its DMVs only expose that instance. It has been
removed.instance_nameremains in use for the Windows performance counter collection path. -
receiver/sql_server: Fix direct-connection performance counter rate metrics to emit per-second rates instead of cumulative counter values. (#50772)
Thesqlserver.page.buffer_cache.free_list.stalls.ratemetric value type changes from int to double so fractional rates can be represented. -
receiver/statsd: Close the TCP connection when the client disconnects and bound the size of an unterminated line, fixing a per-connection file descriptor leak and an unbounded memory growth path in the TCP transport. (#50123) -
receiver/webhook_event: Validate thatpathandhealth_pathbegin with a leading/so the collector fails at config load instead of panicking at startup. (#50893)
Apathorhealth_pathwithout a leading/causedhttprouterto panic inStart(),
after the collector had already bound its telemetry port. The panic left the port held, so every
restart attempt failed withbind: address already in use. -
receiver/yang_grpc: Apply the configuredsecurity.allowed_clientsandsecurity.rate_limitingsettings to theMdtDialoutstreaming RPC, which previously did not enforce either. (#0) -
scraper/network: Fix incorrect Linux TCP state names (FIN_WAIT_1/FIN_WAIT_2) used by the networkscraper, which never matched real connection states. (#51271)
API Changelog
🛑 Breaking changes 🛑
-
pkg/ottl:FunctionContextand theStandard*Getterstructs can no longer be initialized with unkeyed struct literals. (#47305) -
pkg/ottl: Move the experimental lambda expression Go API into thepkg/ottl/xottlmodule so it is excluded from OTTL's stability guarantees. (#51566)
LambdaExpression,LambdaActivation, andNewTestingLambdaExpressionmoved to
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/xottl.LocalIdentifierDecland
LambdaExpression.Formalswere removed. -
pkg/ottl: Move the experimentalSliceGetterAPI to thexottlmodule. (#51565)
ottl.SliceGetter,ottl.GetLiteralValues,ottl.GetScalarLiteralValues, andottl.NewTestingSliceGetterare now inxottl.
💡 Enhancements 💡
-
connector/routing: CreateWith*Functionsfactory options to allow custom OTTL functions registration. (#51709) -
pkg/ottl: Improve OTTL parse error diagnostics by reporting the line and column of the input where available. (#51680)
Not all parse errors carry a position: errors that aggregate multiple statements, and some
inner errors that didn't already carry one, are still returned without one. The exact
wording and position of statement, condition, and value expression parse error messages
has changed as a result. The position is exposed programmatically via the new experimental
xottl.Errortype. -
pkg/ottl: AddWithCacheoption to theottlotelcolTransformContext. (#51652) -
pkg/pdatatest: Add pmetricassert numeric comparison operators (#48470)
🧰 Bug fixes 🧰
pkg/ottl: Preserve the distinction between nil and empty slices in thexottlGetScalarLiteralValuesandGetLiteralValueshelpers. (#51814)
We are thrilled to welcome our first-time contributors to this project. Thank you for your contributions @uttam282005, @anarwal, @bvetsa, @MartinCajiao, @Syedowais312, @Bbn08, @SatoshiKamiyama, @Harshal96, @IsharaEkanayaka, @hpaliwal8, @meebok, @gowchin, @cauebraz, @svencowart, @RutamBhagat, @hajimeCha, @TeodorDichev, @rluidash, @stackempty, @zanarellidev, @kth496, @kalaivani9721, @abhishekjoshi2612, @jstar0, @JashRashne ! 🎉