Releases: open-telemetry/opentelemetry-collector
v1.53.0/v0.147.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.147.0
End User Changelog
💡 Enhancements 💡
exporter/debug: Output bucket counts for exponential histogram data points in normal verbosity. (#10463)pkg/exporterhelper: Addmetadata_keysconfiguration tosending_queue.batch.partitionto partition batches by client metadata (#14139)
Themetadata_keysconfiguration option is now available in thesending_queue.batch.partitionsection for all exporters.
When specified, batches are partitioned based on the values of the listed metadata keys, allowing separate batching per metadata partition. This feature
is automatically configured when usingexporterhelper.WithQueue().
🧰 Bug fixes 🧰
-
cmd/builder: Fix duplicate error output when CLI command execution fails in the builder tool. (#14436) -
cmd/mdatagen: Fix duplicate error output when CLI command execution fails in the mdatagen tool. (#14436) -
cmd/mdatagen: Fix semconv URL validation for metrics with underscores in their names (#14583)
Metrics likesystem.disk.io_timenow correctly validate against semantic convention URLs containing underscores in the anchor tag. -
extension/memory_limiter: Use ChainUnaryInterceptor instead of UnaryInterceptor to allow multiple interceptors. (#14634)
If multiple extensions that use the UnaryInterceptor are set the binary panics at start time. -
extension/memory_limiter: Add support for streaming services. (#14634) -
pkg/config/configmiddleware: Add context.Context to HTTP middleware interface constructors. (#14523)
This is a breaking API change for components that implement or use extensionmiddleware. -
pkg/confmap: Fix another issue where configs could fail to decode when using interpolated values in string fields. (#14034)
For example, a resource attribute can be set via an environment variable to a string that is parseable as a number, e.g.1234.(A similar bug was fixed in a previous release: that one was triggered when the field was nested in a struct,
whereas this one is triggered when the field internally has type "pointer to string" rather than "string".) -
pkg/otelcol: The featuregate subcommand now rejects extra positional arguments instead of silently ignoring them. (#14554) -
pkg/queuebatch: Fix data race in partition_batcher where resetTimer() was called outside mutex, causing concurrent timer.Reset() calls and unpredictable batch flush timing under load. (#14491) -
pkg/scraperhelper: Log scrapers now emit log-appropriate receiver telemetry (#14654)
Log scrapers previously emitted the same receiver telemetry as metric scrapers,
such as the otelcol_receiver_accepted_metric_points metric (instead of otelcol_receiver_accepted_log_records),
or spans named receiver/myreceiver/MetricsReceived (instead of receiver/myreceiver/LogsReceived).This did not affect scraper-specific spans and metrics.
-
processor/batch: Fixes a bug where the batch processor would not copySchemaUrlmetadata from resource and scope containers during partial batch splits. (#12279, #14620)
API Changelog
💡 Enhancements 💡
-
pkg/exporterhelper: Addmetadata_keysconfiguration tosending_queue.batch.partitionto partition batches by client metadata (#14139)
Themetadata_keysconfiguration option is now available in thesending_queue.batch.partitionsection for all exporters.
When specified, batches are partitioned based on the values of the listed metadata keys, allowing separate batching per metadata partition. This feature
is automatically configured when usingexporterhelper.WithQueue(). -
pkg/xexporterhelper: Add code structure to handle unbounded partitions in sending queue. (#14526)
🧰 Bug fixes 🧰
v1.52.0/v0.146.1
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.146.1
There are no changes in this release, see the following changelog for both v1.52.0 and v0.146.1: https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.146.0
v0.146.1 was released to address the fact that a v1.52.0 release was needed for v0.146.0, but was not released with it.
v0.146.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.146.0
End User Changelog
🛑 Breaking changes 🛑
all: Increase minimum Go version to 1.25 (#14567)
🚩 Deprecations 🚩
pdata/pprofile: Declare removed aggregation elements as deprecated. (#14528)
💡 Enhancements 💡
-
all: Add detailed failure attributes to exporter send_failed metrics at detailed telemetry level. (#13956)
Theotelcol_exporter_send_failed_{spans,metric_points,log_records}metrics now include
failure attributes when telemetry level is Detailed:error.type(OpenTelemetry semantic convention
describing the error class) anderror.permanent(indicates if error is permanent/non-retryable).
Theerror.typeattribute captures gRPC status codes (e.g., "Unavailable", "ResourceExhausted"),
standard Go context errors (e.g., "canceled", "deadline_exceeded"),
and collector-specific errors (e.g., "shutdown").
This enables better alerting and debugging by providing standardized error classification. -
cmd/builder: Introduce new experimentalinitsubcommand (#14530)
The newinitsubcommand initializes a new custom collector -
cmd/builder: Add "telemetry" field to allow configuring telemetry providers (#14575)
Most users should not need to use this, this field should only be set if you
intend to provide your own OpenTelemetry SDK. -
cmd/mdatagen: Introduce additional metadata (the version since the deprecation started, and the deprecation reason) for deprecated metrics. (#14113) -
cmd/mdatagen: Add optionalrelationshipsfield to entity schema in metadata.yaml (#14284) -
exporter/debug: Addoutput_pathsconfiguration option to control output destination whenuse_internal_loggeris false. (#10472)
Whenuse_internal_loggeris set tofalse, the debug exporter now supports configuring the output destination via theoutput_pathsoption.
This allows users to send debug exporter output tostdout,stderr, or a file path.
The default value is["stdout"]to maintain backward compatibility. -
pkg/confmap: Add experimentalToStringMapRawfunction to decodeconfmap.Confinto a string map without losing internal types (#14480)
This method exposes the internal structure of aconfmap.Confwhich may change at any time without prior notice
🧰 Bug fixes 🧰
cmd/mdatagen: Reset aggDataPoints during metric init to avoid index out of range panic across emit cycles when reaggregation is enabled. (#14569)cmd/mdatagen: Fix panic when mdatagen is run without arguments. (#14506)pdata/pprofile: Fix off-by-one issue in dictionary lookups. (#14534)pkg/config/confighttp: Fix high cardinality span name from request method from confighttp server internal telemetry (#14516)
Follow spec to bound request method cardinality.pkg/otelcol: Ignore component aliases in theotelcol componentscommand (#14492)pkg/otelcol: Order providers and converters in alphabetical order in thecomponentssubcommand. (#14476)
API Changelog
🛑 Breaking changes 🛑
cmd/mdatagen: Flatten the metric stability field (#14113)
So we better match the weaver schema. Additional deprecation data can be set within thedeprecatedfield.
🚩 Deprecations 🚩
pdata/pprofile: Declare removed aggregation elements as deprecated. (#14528)
💡 Enhancements 💡
v1.51.0/v0.145.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.145.0
End User Changelog
💡 Enhancements 💡
pkg/scraperhelper: ScraperID has been added to the logs for metrics, logs, and profiles (#14461)
🧰 Bug fixes 🧰
-
exporter/otlp_grpc: Fix the OTLP exporter balancer to use round_robin by default, as intended. (#14090) -
pkg/config/configoptional: FixUnmarshalmethods not being called when config is wrapped insideOptional(#14500)
This bug notably manifested in the fact that thesending_queue::batch::sizerconfig for exporters
stopped defaulting tosending_queue::sizer, which sometimes caused the wrong units to be used
when configuringsending_queue::batch::min_sizeandmax_size.As part of the fix,
xconfmapexposes a newxconfmap.WithForceUnmarshaleroption, to be used in theUnmarshalmethods
of wrapper types likeconfigoptional.Optionalto make sure theUnmarshalmethod of the inner type is called.The default behavior remains that calling
conf.Unmarshalon theconfmap.Confpassed as argument to anUnmarshal
method will skip any top-levelUnmarshalmethods to avoid infinite recursion in standard use cases. -
pkg/confmap: Fix an issue where configs could fail to decode when using interpolated values in string fields. (#14413)
For example, a header can be set via an environment variable to a string that is parseable as a number, e.g.1234 -
pkg/service: Don't error on startup when process metrics are enabled on unsupported OSes (e.g. AIX) (#14307)
API Changelog
💡 Enhancements 💡
pkg/config/configgrpc: add client info to context before server authentication (#12836)pkg/xscraperhelper: Add AddProfilesScraper similar to scraperhelper.AddMetricsScraper (#14427)
🧰 Bug fixes 🧰
-
pkg/config/configoptional: FixUnmarshalmethods not being called when config is wrapped insideOptional(#14500)
This bug notably manifested in the fact that thesending_queue::batch::sizerconfig for exporters
stopped defaulting tosending_queue::sizer, which sometimes caused the wrong units to be used
when configuringsending_queue::batch::min_sizeandmax_size.As part of the fix,
xconfmapexposes a newxconfmap.WithForceUnmarshaleroption, to be used in theUnmarshalmethods
of wrapper types likeconfigoptional.Optionalto make sure theUnmarshalmethod of the inner type is called.The default behavior remains that calling
conf.Unmarshalon theconfmap.Confpassed as argument to anUnmarshal
method will skip any top-levelUnmarshalmethods to avoid infinite recursion in standard use cases.
v1.50.0/v0.144.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.144.0
End User Changelog
🛑 Breaking changes 🛑
pkg/exporterhelper: Change verbosity level for otelcol_exporter_queue_batch_send_size metric to detailed. (#14278)pkg/service: Remove deprecatedtelemetry.disableHighCardinalityMetricsfeature gate. (#14373)pkg/service: Remove deprecatedservice.noopTracerProviderfeature gate. (#14374)
🚩 Deprecations 🚩
exporter/otlp_grpc: Renameotlpexporter tootlp_grpcexporter and add deprecated aliasotlp. (#14403)exporter/otlp_http: Renameotlphttpexporter tootlp_httpexporter and add deprecated aliasotlphttp. (#14396)
💡 Enhancements 💡
-
cmd/builder: Avoid duplicate CLI error logging in generated collector binaries by relying on cobra's error handling. (#14317) -
cmd/mdatagen: Add the ability to disable attributes at the metric level and re-aggregate data points based off of these new dimensions (#10726) -
cmd/mdatagen: Add optionaldisplay_nameanddescriptionfields to metadata.yaml for human-readable component names (#14114)
Thedisplay_namefield allows components to specify a human-readable name in metadata.yaml.
When provided, this name is used as the title in generated README files.
Thedescriptionfield allows components to include a brief description in generated README files. -
cmd/mdatagen: Validate stability level for entities (#14425) -
pkg/xexporterhelper: Reenable batching for profiles (#14313) -
receiver/nop: add profiles signal support (#14253)
🧰 Bug fixes 🧰
pkg/exporterhelper: Fix reference count bug in partition batcher (#14444)
API Changelog
🛑 Breaking changes 🛑
pkg/config/confighttp: ReplaceServerConfig.EndpointwithNetAddr confignet.AddrConfig, enabling more flexible transport configuration. (#14187, #8752)
This change adds "transport" as a configuration option, allowing users to specify
different transport protocols (e.g., "tcp", "unix").
🚩 Deprecations 🚩
pkg/scraperhelper: Deprecate theAddScrapermethod. (#14428)
🚀 New components 🚀
pkg/xscraperhelper: Add xscraperhelper for the experimental OTel profiling signal. (#14235)
💡 Enhancements 💡
-
all: Add support for deprecated component type aliases (#14208)
To add a deprecated type alias to a component factory, use theWithDeprecatedTypeAliasoption.return xexporter.NewFactory( metadata.Type, createDefaultConfig, xexporter.WithTraces(createTracesExporter, metadata.TracesStability), xexporter.WithDeprecatedTypeAlias("old_component_name"), )
When the alias is used in configuration, a deprecation warning will be automatically logged, and the component will function normally using the original implementation.
-
cmd/mdatagen: Add the ability to disable attributes at the metric level and re-aggregate data points based off of these new dimensions (#10726) -
extension/xextension: Add deprecated type alias support for extensions viaxextensionmodule (#14208)
Extensions can now register deprecated type aliases using the experimentalxextension.WithDeprecatedTypeAliasoption.return xextension.NewFactory( metadata.Type, createDefaultConfig, createExtension, metadata.Stability, xextension.WithDeprecatedTypeAlias("old_extension_name"), )
When the alias is used in configuration, a deprecation warning will be automatically logged, and the extension will function normally using the original implementation.
-
pkg/consumer/consumertest: Add ProfileCount() (#14251) -
pkg/exporterhelper: Add support for profile samples metrics (#14423) -
pkg/receiverhelper: Add support for profile samples metrics (#14226) -
pkg/scraperhelper: IntroduceAddMetricsScraperto be more explicit thanAddScraper. (#14428) -
receiver/otlp: Add metrics tracking the number of receiver, refused and failed profile samples (#14226)
🧰 Bug fixes 🧰
pkg/xconnector: Add component ID type validation to all xconnector Create methods (#14357)
v1.49.0/v0.143.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.143.0
End User Changelog
💡 Enhancements 💡
all: Update semconv import to 1.38.0 (#14305)exporter/nop: Add profiles support to nop exporter (#14331)pkg/pdata: Optimize the size and pointer bytes for pdata structs (#14339)pkg/pdata: Avoid using interfaces/oneof like style for optional fields (#14333)
API Changelog
🛑 Breaking changes 🛑
pkg/xprocessor: Use pointer receivers in xprocessor factory methods for consistency with other factories. (#14348)
v1.48.0/v0.142.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.142.0
End User Changelog
💡 Enhancements 💡
-
exporter/debug: Add logging of dropped attributes, events, and links counts in detailed verbosity (#14202) -
extension/memory_limiter: The memorylimiter extension can be used as an HTTP/GRPC middleware. (#14081) -
pkg/config/configgrpc: Statically validate gRPC endpoint (#10451)
This validation was already done in the OTLP exporter. It will now be applied to any gRPC client. -
pkg/service: Add support to disabling adding resource attributes as zap fields in internal logging (#13869)
Note that this does not affect logs exported through OTLP.
API Changelog
🛑 Breaking changes 🛑
pdata/xpdata: RenameEntity.IDAttributes()toEntity.IdentifyingAttributes()andEntity.DescriptionAttributes()toEntity.DescriptiveAttributes()to align with OpenTelemetry specification terminology for attributes. (#14275)pkg/exporterhelper: Useconfigoptional.Optionalfor theexporterhelper.QueueBatchConfig(#14155)
It's recommended to change the field type in your component configuration to beconfigoptional.Optional[exporterhelper.QueueBatchConfig]to keep theenabledsubfield. Use configoptional.Some(exporterhelper.NewDefaultQueueConfig()) to enable by default. Use configoptional.Default(exporterhelper.NewDefaultQueueConfig()) to disable by default.
🚩 Deprecations 🚩
pkg/service: Deprecate Settings.LoggingOptions and telemetry.LoggerSettings.ZapOptions, add telemetry.LoggerSettings.BuildZapLogger (#14002)
BuildZapLogger provides a more flexible way to build the Zap logger,
since the function will have access to the zap.Config. This is used
in otelcol to install a Windows Event Log output when the zap config
does not specify any file output.
💡 Enhancements 💡
pdata/pprofile: add ProfileCount() (#14239)
🧰 Bug fixes 🧰
pkg/confmap: Ensure that embedded structs are not overwritten after Unmarshal is called (#14213)
This allows embedding structs which implement Unmarshal and contain a configopaque.String.
v1.47.0/v0.141.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.141.0
End User Changelog
🛑 Breaking changes 🛑
pkg/config/confighttp: Use configoptional.Optional for confighttp.ClientConfig.Cookies field (#14021)
💡 Enhancements 💡
pkg/config/confighttp: Settingcompression_algorithmsto an empty list now disables automatic decompression, ignoring Content-Encoding (#14131)pkg/service: Update semantic conventions from internal telemetry to v1.37.0 (#14232)pkg/xscraper: Implement xscraper for Profiles. (#13915)
🧰 Bug fixes 🧰
pkg/config/configoptional: Ensure that configoptional.None values resulting from unmarshaling are equivalent to configoptional.Optional zero value. (#14218)
API Changelog
🛑 Breaking changes 🛑
-
pkg/config/configgrpc: Replacecomponent.Hostparameter of ToServer/ToClientConn by map of extensions (#13640)
Components must now pass the map obtained from the host'sGetExtensionsmethod
instead of the host itself.Nil may be used in tests where no middleware or authentication extensions are used.
-
pkg/config/confighttp: Replacecomponent.Hostparameter of ToServer/ToClient by map of extensions (#13640)
Components must now pass the map obtained from the host'sGetExtensionsmethod
instead of the host itself.Nil may be used in tests where no middleware or authentication extensions are used.
🚩 Deprecations 🚩
pkg/pdata: Deprecate profile.Duration() and profile.SetDuration() (#14188)
💡 Enhancements 💡
v1.46.0/v0.140.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.140.0
End User Changelog
💡 Enhancements 💡
-
cmd/mdatagen:metadata.yamlnow supports an optionalentitiessection to organize resource attributes into logical entities with identity and description attributes (#14051)
When entities are defined, mdatagen generatesAssociateWith{EntityType}()methods on ResourceBuilder
that associate resources with entity types using the entity refs API. The entities section is backward
compatible - existing metadata.yaml files without entities continue to work as before. -
cmd/mdatagen: Add semconv reference for metrics (#13920) -
connector/forward: Add support for Profiles to Profiles (#14092) -
exporter/debug: Disable sending queue by default (#14138)
The recently added sending queue configuration in Debug exporter was enabled by default and had a problematic default size of 1.
This change disables the sending queue by default.
Users can enable and configure the sending queue if needed. -
pkg/config/configoptional: Markconfigoptional.AddEnabledFieldas beta (#14021) -
pkg/otelcol: This feature has been improved and tested; secure-by-default redacts configopaque values (#12369)
🧰 Bug fixes 🧰
all: Ensure service service.instance.id is the same for all the signals when it is autogenerated. (#14140)
API Changelog
🛑 Breaking changes 🛑
-
pdata/pprofile: Upgrade the OTLP protobuf definitions to version 1.9.0 (#14128)- Drop field
CommentStrindicesinProfile. - Rename
SampletoSamplesinProfile. - Rename
LinetoLinesinLocation. - Remove
AggregationTemporalityfield inValueType.
See https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v1.9.0
- Drop field
-
pkg/otelcol: Theotelcol.Factories.Telemetryfield is now required (#14003)
Previously if this field was not set, then it would default to an otelconftelemetry factory.
Callers of the otelcol package must now set the field explicitly.
💡 Enhancements 💡
pkg/pdata: Upgrade the OTLP protobuf definitions to version 1.9.0 (#14128)
v1.45.0/v0.139.0
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.139.0
End User Changelog
🛑 Breaking changes 🛑
-
cmd/mdatagen: Make stability.level a required field for metrics (#14070) -
cmd/mdatagen: Replaceoptionalfield withrequirement_levelfield for attributes in metadata schema (#13913)
Theoptionalboolean field for attributes has been replaced with arequirement_levelfield that accepts enum values:required,conditionally_required,recommended, oropt_in.required: attribute is always included and cannot be excludedconditionally_required: attribute is included by default when certain conditions are met (replacesoptional: true)recommended: attribute is included by default but can be disabled via configuration (replacesoptional: false)opt_in: attribute is not included unless explicitly enabled in user config
Whenrequirement_levelis not specified, it defaults torecommended.
-
pdata/pprofile: Remove deprecatedPutAttributehelper method (#14082) -
pdata/pprofile: Remove deprecatedPutLocationhelper method (#14082)
💡 Enhancements 💡
all: Add FIPS and non-FIPS implementations for allowed TLS curves (#13990)cmd/builder: Set CGO_ENABLED=0 by default, add thecgo_enabledconfiguration to enable it. (#10028)pkg/config/configgrpc: Errors of type status.Status returned from an Authenticator extension are being propagated as is to the upstream client. (#14005)pkg/config/configoptional: Adds newconfigoptional.AddEnabledFieldfeature gate that allows users to explicitly disable aconfigoptional.Optionalthrough a newenabledfield. (#14021)pkg/exporterhelper: Replace usage of gogo proto for persistent queue metadata (#14079)pkg/pdata: Remove usage of gogo proto and generate the structs with pdatagen (#14078)
🧰 Bug fixes 🧰
exporter/debug: add queue configuration (#14101)
API Changelog
🛑 Breaking changes 🛑
-
all: Change type ofconfiggrpc.ClientConfig.Headers,confighttp.ClientConfig.Headers, andconfighttp.ServerConfig.ResponseHeaders(#13930)
configopaque.MapListis a new alternative tomap[string]configopaque.Stringwhich can unmarshal
both maps and lists of name/value pairs.For example, if
headersis a field of typeconfigopaque.MapList,
then the following YAML configs will unmarshal to the same thing:headers: "foo": "bar" headers: - name: "foo" value: "bar"
-
pdata/pprofile: UpdateSetFunctionto return the function's ID rather than update the Line (#14016, #14032) -
pdata/pprofile: UpdateSetLinkto return the link's ID rather than update the Sample (#14016, #14031) -
pdata/pprofile: UpdateSetMappingto return the mapping's ID rather than update the Location (#14016, #14030) -
pkg/otelcol: Require a telemetry factory to be injected through otelcol.Factories (#4970)
otelcol.Factories now has a required Telemetry field,
which contains the telemetry factory to be used by the service.
Set it to otelconftelemetry.NewFactory() for the existing behavior. -
pkg/pdata: Remove unused generated code from pprofile (#14073)
Experimental package, ok to break since not used.
💡 Enhancements 💡
pdata/pprofile: IntroduceSetStackmethod (#14007)pdata/xpdata: Add high-level Entity API for managing entities attached to resources (#14042)
IntroducesEntity,EntitySlice, andEntityAttributeMaptypes that provide a user-friendly interface
for working with resource entities. The new API ensures consistency between entity and resource attributes
by sharing the underlying attribute map, and prevents attribute conflicts between entities. This API may
eventually replace the generated protobuf-based API for better usability.
🧰 Bug fixes 🧰
cmd/mdatagen: Fix mdatagen generated_metrics for connectors (#12402)