Feature-gate stabilization + reaggregation default + memory fix
Release history
opentelemetry-collector releases
OpenTelemetry Collector
All releases
29 shown
xconfmap deprecation + metrics + bug fixes
- Added `otelcol_exporter_in_flight_requests` UpDownCounter to track concurrent export requests per exporter
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.152.0
End User Changelog
💡 Enhancements 💡
pkg/exporterhelper: Addotelcol_exporter_in_flight_requestsmetric to track the number of export requests currently in-flight per exporter. (#15009)
This UpDownCounter increments in startOp and decrements in endOp, allowing operators to monitor
concurrent export activity and detect when an exporter is saturating its worker pool.
🧰 Bug fixes 🧰
-
pkg/confighttp: Close the original request body after reading block-formatContent-Encoding: snappyrequests. (#15262) -
pkg/confighttp: Recover from panics in decompression libraries, return HTTP 400 instead of 500. (#13228) -
pkg/confighttp: Enforcemax_request_body_sizeonContent-Encoding: snappyrequests before the decoded buffer is allocated. (#15252) -
pkg/otelcol: Stop emitting verbose gRPC transport messages at WARN during normal client disconnect. (#5169)
grpc-go gates chatty per-RPC notices (e.g. "HandleStreams failed to read frame:
connection reset by peer") behindLoggerV2.V(2). zapgrpc.Logger.V conflates
grpclog verbosity with zap severity, so V(2) returns true whenever WARN is
enabled and these messages emit at WARN. Wrap the installed grpclog.LoggerV2
with a corrected V() that compares against a fixed verbosity threshold,
matching grpclog's intended semantics. See uber-go/zap#1544. -
pkg/pdata:pcommon.Value.AsStringno longer HTML-escapes<,>, and&insideValueTypeMapandValueTypeSlicevalues, matching the behavior already used forValueTypeStr. (#14662) -
pkg/service: Fix Prometheus config defaults mismatch when host is explicitly set in telemetry configuration. (#13867)
When users explicitly configured the telemetry metrics section (e.g. to change the host),
the Prometheus exporter boolean fields (WithoutScopeInfo, WithoutUnits, WithoutTypeSuffix)
defaulted to nil/false instead of true, causing metric name format changes compared to the
implicit default configuration. This fix applies the correct defaults during config unmarshaling. -
pkg/service: Return noop tracer provider when no trace processors are defined (#15135)
API Changelog
🚩 Deprecations 🚩
pkg/xconfmap: Deprecatexconfmap.Validatorandconfmap.Validatein favor ofconfmap.Validatorandconfmap.Validate. (#15142)
💡 Enhancements 💡
-
cmd/mdatagen: Addgo_struct.ignore_defaultflag to suppress default value generation for individual config fields. (#15156)
Settinggo_struct.ignore_default: trueon a config field causes mdatagen to omit that field's default
from the generatedcreateDefaultConfigfunction, emittingnilfor pointer fields
andconfigoptional.Nonefor optional fields. -
pkg/confmap: Add theconfmap.Validatorinterface andconfmap.Validatefunction for configuration validation. (#15142)
Config structs should generally implement the interface to provide validation
of their fields. Theconfmap.Validatefunction can be used to validate
config structs in testing, but is only meant to be called at runtime by the
Collector itself.
🧰 Bug fixes 🧰
pkg/pdata:pcommon.Value.AsStringno longer HTML-escapes<,>, and&insideValueTypeMapandValueTypeSlicevalues, matching the behavior already used forValueTypeStr. (#14662)
- Deprecation: `cmd/mdatagen.DefaultMetricsBuilderConfig` is deprecated; use `NewDefaultMetricsBuilderConfig`.
- `pkg/confignet`: Added support for Windows Named Pipe (npipe) transport.
- cmd/builder: `replace` statements in generated Go module now use relative paths by default; set `dist::use_absolute_replace_paths` to revert to absolute paths.
- receiver/otlp: `Config.Protocols` field renamed from anonymous embedded struct; access via `cfg.Protocols.GRPC` and `cfg.Protocols.HTTP`.
- Add declarative schema support for service telemetry resource configuration with explicit name/value pairs
- Add `UserAgent` field to `ClientConfig` allowing override of gRPC user-agent string
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.151.0
End User Changelog
🛑 Breaking changes 🛑
-
cmd/builder: In the generated Collector source, thereplacestatements in the Go module will now use relative paths by default. (#15097)
We expect that this will not break existing use-cases where the generated collector is only used in an interim manner for builds. It enables the possibility of tracking the generated Collector code as a longer living artifact, allowing it to be run on any machine (whereas absolute paths will be different depending on the machine the Collector source is generated on.) We have addeddist::use_absolute_replace_pathsto go back to the absolute path behaviour in the case where there is an unforeseen use-case that requires absolute paths. -
pkg/confighttp: Stabilize framedSnappy feature gate. (#15096)
💡 Enhancements 💡
-
all: Add declarative schema support for service telemetry resource configuration. (#14411)
Theservice::telemetry::resourceconfiguration now accepts the declarative schema with explicit name/value pairs:service: telemetry: resource: schema_url: https://opentelemetry.io/schemas/1.38.0 attributes: - name: service.name value: my-collector - name: host.name value: collector-hostThe legacy inline attribute map format is still supported for backward compatibility:
service: telemetry: resource: service.name: my-collector host.name: collector-hostNote:
resource.detectorsis accepted for forward compatibility but is not yet applied by the collector. -
exporter/otlp_grpc: Added theserver.addressandurl.pathattributes to metrics generated by the otlp exporter. (#14998) -
exporter/otlp_http: Added theserver.addressandurl.pathattributes to metrics generated by the otlp_http exporter. (#14998) -
pkg/config/configgrpc: AddUserAgentfield toClientConfigto allow overriding the default gRPC user-agent string. (#14686)
The otlp gRPC exporter was unconditionally setting the User-Agent via
grpc.WithUserAgent() at dial time, which takes precedence over per-call
metadata, causing any user-configured User-Agent to be silently discarded.
A dedicatedUserAgentfield has been added toClientConfigwhich, when
set, is used in the dial option directly instead of the default BuildInfo-derived string. -
pkg/config/configgrpc: Accept gRPC resolver scheme URIs in client endpoint (e.g. passthrough:///host:port) to allow control over name resolution (#14990)
After the migration to grpc.NewClient, some gRPC client components such as the OTLP
exporter experienced connection issues in dual-stack DNS environments. This can now be
fixed by using the passthrough:/// gRPC resolver scheme in the endpoint field. -
pkg/config/confignet: Add support for Windows Named Pipe (npipe) transport (#15085) -
pkg/service: Emit a warning when using the old v0.2.0 declarative config format (#15088)
🧰 Bug fixes 🧰
-
pkg/otelcol: Print components exactly once in theotelcol componentscommand (#14682)
This resolves an issue where aliased components were skipped. -
pkg/otelcol: Synchronize Collector Run and Shutdown lifecycles so that Shutdown blocks until Run completes all cleanup. (#4947)
Shutdown now blocks until Run finishes cleanup, matching http.Server semantics.
If Shutdown is called before Run, the next Run call returns nil after cleaning up
the config provider. -
pkg/pdata: Use spec-compliant string representation for NaN, Infinity, and -Infinity in Value.AsString(). (#14487) -
pkg/pprofile: Fix data corruption of resource and scope attributes after marshal-unmarshal-merge round-trip. (#15084) -
pkg/service: Non-string resource attributes in telemetry configuration now return an error instead of panicking (#15171) -
pkg/xscraperhelper: fix the merge of profiles in the profiling scraper helpers (#14790) -
receiver/otlp: Fix profiles receiver reporting its samples as spans (#15089)
API Changelog
🛑 Breaking changes 🛑
receiver/otlp:Config.Protocolsis now a named field instead of an anonymous embedded field. (#15178)
Access tocfg.GRPCandcfg.HTTPmust be updated tocfg.Protocols.GRPCandcfg.Protocols.HTTP.
🚩 Deprecations 🚩
cmd/mdatagen: TheDefaultMetricsBuilderConfigfunction is deprecated. UseNewDefaultMetricsBuilderConfiginstead. (#15165)
The generatedDefaultMetricsBuilderConfigfunction has been renamed toNewDefaultMetricsBuilderConfig
to follow Go naming conventions. The old function is kept as a deprecated wrapper and will be removed
in a future release.
💡 Enhancements 💡
-
cmd/mdatagen: Handle default values for configuration fields in generated code in mdatagen. (#14560) -
cmd/mdatagen: Add opt-in override_value support for resource_attributes config viaoverride_value_enabledflag (#15109)
Components can opt in by settingoverride_value_enabled: truein their metadata.yaml.
When enabled, per-attribute config types are generated with typedoverride_valuefields
that let users override resource attribute values in the collector configuration.
Components without the flag continue to use the sharedResourceAttributeConfigtype. -
cmd/mdatagen: Extend mdatagen config code generation to correctly handle default values for allOf embedded references (#14560) -
cmd/mdatagen: Handle string validators in generated config structs (#14807)
Supported validators includeminLength,maxLengthandpattern. -
pkg/config/configgrpc: Add aDefaultBalancerNameconstant for the name of the default load balancer (#15139)
This replaces theBalancerNamefunction. -
pkg/config/configgrpc: Accept gRPC resolver scheme URIs in client endpoint (e.g. passthrough:///host:port) to allow control over name resolution (#14990)
After the migration to grpc.NewClient, some gRPC client components such as the OTLP
exporter experienced connection issues in dual-stack DNS environments. This can now be
fixed by using the passthrough:/// gRPC resolver scheme in the endpoint field. -
pkg/exporterhelper: Added theWithAttrsoption to allow custom attributes on exporter metrics (#14998)
🧰 Bug fixes 🧰
-
cmd/mdatagen: Fix a bug in mdatagen where theallOffield was not being properly handled, resulting in incorrect generation of data models. (#15153) -
pkg/otelcol: Synchronize Collector Run and Shutdown lifecycles so that Shutdown blocks until Run completes all cleanup. (#4947)
Shutdown now blocks until Run finishes cleanup, matching http.Server semantics.
If Shutdown is called before Run, the next Run call returns nil after cleaning up
the config provider. -
pkg/pdata: Use pool-aware constructors in gRPC service handlers so top-level request structs participate in the sync.Pool lifecycle. (#14763)
The gRPC service handlers for all signal types allocated the top-level
ExportXxxServiceRequest with bare new(), bypassing the sync.Pool when
pdata.useProtoPooling is enabled. This caused objects returned to the pool
via Delete to never be retrieved. The handlers now use the pool-aware
New*() constructors.
- cmd/mdatagen: custom validation support for Go config structs
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.150.0
End User Changelog
💡 Enhancements 💡
all: Update semconv package from 1.38.0 to 1.40.0 (#15095)cmd/mdatagen: Only allow theToVersionfeature flag attribute to be set for theStableandDeprecatedstages. (#15040)
To better match the feature flag README
(https://github.com/open-telemetry/opentelemetry-collector/blob/main/featuregate/README.md#feature-lifecycle).
🧰 Bug fixes 🧰
-
exporter/debug: Guard from out of bounds profiles dictionary indices (#14803) -
pdata/pprofile: create a copy when the input is marked as read-only (#15080) -
pkg/otelcol: Fix missing default values in unredacted print-config command by introducing confmap.WithUnredacted MarshalOption. (#14750)
Resolves an issue where the unredacted mode output omitted all default-valued options. By introducing a new MarshalOption to disable redaction directly at the confmap encoding level, the unredacted mode now preserves all component defaults natively without requiring post-processing. -
pkg/service: Headers on the internal telemetry OTLP exporter are now redacted when the configuration is marshaled (#14756)
API Changelog
💡 Enhancements 💡
cmd/mdatagen: Add custom validation support for Go config structs (#14563)
- Removed `service_name`, `service_instance_id`, and `service_version` constant labels from every internal metric datapoint; they are now only present in the `target_info` metric.
- Moved aix/ppc64 to tier 3 support
- Upgraded profiles stability status of several components (pdata/pprofile, connector/forward, exporter/debug, receiver/nop, exporter/nop, exporter/otlp_grpc, exporter/otlp_http) from development to alpha
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.149.0
End User Changelog
🛑 Breaking changes 🛑
pkg/service: Removeservice_name,service_instance_id, andservice_versionas constant labels on every internal metric datapoint. These attributes are already present intarget_infoand were being duplicated on each series for OpenCensus backwards compatibility. (#14811)
Previously, the collector stamped every internal metric series (e.g.otelcol_process_runtime_heap_alloc_bytes)
withservice_name,service_instance_id, andservice_versionlabels to match the old OpenCensus behavior.
These attributes are now only present in thetarget_infometric, which is the correct Prometheus/OTel convention.
Users who filter or group by these labels on individual metrics will need to update their queries to use
target_infojoins instead.
💡 Enhancements 💡
-
all: Move aix/ppc64 to tier 3 support (#13380) -
all: Upgrade the profiles stability status to alpha (#14817)
The following components have their profiles status upgraded from development to alpha:- pdata/pprofile
- connector/forward
- exporter/debug
- receiver/nop
- exporter/nop
- exporter/otlp_grpc
- exporter/otlp_http
-
cmd/mdatagen: Add semconv reference for attributes (#13297)
🧰 Bug fixes 🧰
cmd/mdatagen: Fix entity code generation soextra_attributesare emitted as resource attributes instead of entity descriptive attributes. (#14778)
API Changelog
💡 Enhancements 💡
cmd/mdatagen: Added ability to generate required fields validation to config go structs generated by mdatagen (#14563)
🧰 Bug fixes 🧰
cmd/mdatagen: Fix RootPackage to use go module root instead of git repo root (#14801)
Fixes issue with running mdatagen when the git repository root is different from the go module root.
- For the Prometheus receiver scraping the collector's internal metrics endpoint (`:8888`), rename OTel service labels from `service_name`, `service_instance_id`, and `service_version` to their dot‑notation equivalents using metric_relabel_configs as described in the changelog.
- Change metric units to singular forms (e.g., `{requests}` → `{request}`) to match the OpenTelemetry specification (#14753).
- `cmd/mdatagen`: Generate a per-metric config type `Config` for each metric when `reaggregation_enabled: true`, altering existing component configuration references (#14689).
- `pdata/pprofile`: Update protoID for message Sample fields (#14652).
- `cmd/mdatagen`: Add deprecated_type field to specify alias for component types (#14718).
- `pkg/pdata`: Upgrade OTLP protobuf definitions to version 1.10.0 (#14766).
- `pkg/xexporterhelper`: Add cleanup logic for unused memory partitions after a specific time period (#14526).
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.148.0
End User Changelog
❗ Known Issues ❗
service: The collector's internal Prometheus metrics endpoint (:8888) now emits OTel service labels with underscore
names (service_name,service_instance_id,service_version) instead of dot-notation names (service.name,
service.instance.id,service.version). Users scraping this endpoint with the Prometheus receiver will see these renamed
labels in resource and datapoint attributes. As a workaround, add the followingmetric_relabel_configsto your scrape
config in prometheus receiver:
See https://github.com/open-telemetry/opentelemetry-collector/issues/14814 for details and updates.metric_relabel_configs: - source_labels: [service_name] target_label: service.name - source_labels: [service_instance_id] target_label: service.instance.id - source_labels: [service_version] target_label: service.version - regex: service_name|service_instance_id|service_version action: labeldrop
🛑 Breaking changes 🛑
all: Change metric units to be singular to match OTel specification, e.g.{requests}->{request}(#14753)
💡 Enhancements 💡
cmd/mdatagen: Add deprecated_type field to allow specifying an alias for component types. (#14718)cmd/mdatagen: Generate entity-scoped MetricsBuilder API that enforces entity-metric associations at compile time (#14659)cmd/mdatagen: Skip generating reaggregation config options for metrics that have no aggregatable attributes. (#14689)pkg/service: The internal status reporter no longer drops repeated Ok and RecoverableError statuses (#14282)
Status events can now carry metadata and there's value in allowing them to be emitted despite the status value itself
not changing.
🧰 Bug fixes 🧰
-
cmd/builder: Add.exeto output binary names when building for Windows targets. (#12591) -
exporter/debug: Add printing of metric metadata in detailed verbosity. (#14667) -
exporter/otlp_grpc: Prevent nil pointer panic when push methods are called before the OTLP exporter initializes its gRPC clients. (#14663)
When the sending queue and retry are disabled, calling ConsumeTraces,
ConsumeMetrics, ConsumeLogs, or ConsumeProfiles before the OTLP exporter
initializes its gRPC clients could cause a nil pointer dereference panic.
The push methods now return an error instead of panicking. -
exporter/otlp_http: Show the actual destination URL in error messages when request URL is modified by middleware. (#14673)
Unwraps the*url.Errorreturned byhttp.Client.Do()to prevent misleading error logs when a middleware extension dynamically updates the endpoint. -
pdata/pprofile: Switch the dictionary of dictionary tables entries only once when merging profiles (#14709)
For dictionary table data, we used to switch their dictionaries when doing
the switch for the data that uses them.
However, when an entry is associated with multiple other data (several
samples can use the same stack), we would have been switching the
dictionaries of the entry multiple times.We now switch dictionaries for dictionary table data only once, before
switching the resource profiles.
API Changelog
🛑 Breaking changes 🛑
-
cmd/mdatagen: Generate a per-metric config type<MetricName>Configfor each metric whenreaggregation_enabled: true(#14689)
Metrics with aggregatable attributes getAggregationStrategyandEnabledAttributes []<MetricName>AttributeKey
fields; others getEnabledonly. Typed attribute key constants (e.g.DefaultMetricAttributeKeyStringAttr)
replace[]string, eliminating runtime attribute slice allocations. Validation errors now list valid attributes
and strategies by name. Components usingreaggregation_enabled: truewill need to update references toMetricConfig. -
pdata/pprofile: Update protoID for message Sample fields (#14652)
💡 Enhancements 💡
-
cmd/mdatagen: Extend mdatagen tool to generate go config structs for OpenTelemetry collector components. (#14561)
The component config go code is generated fromconfigsection of the metadata.yaml file. -
cmd/mdatagen: Extend mdatagen tool to generate config JSON schema for OpenTelemetry components. (#14543)
The component config JSON schema is generated fromconfigsection of the metadata.yaml file. -
cmd/mdatagen: Schema generation for mdatagen-controlled config parts (#14562)
The schema is generated in separate yaml file and used to create full component schema. -
pdata/pprofile: Implement reference based attributes in Profiles (#14546) -
pkg/pdata: Upgrade the OTLP protobuf definitions to version 1.10.0 (#14766) -
pkg/service: The internal status reporter no longer drops repeated Ok and RecoverableError statuses (#14282)
Status events can now carry metadata and there's value in allowing them to be emitted despite the status value itself
not changing. -
pkg/xexporterhelper: Add logic to cleanup partitions from memory which are not being used for specific time period. (#14526) -
pkg/xpdata: AddNewEntityconstructor,Entity.CopyToResource, andEntityAttributeMap.Alltopdata/xpdata/entity(#14659)
🧰 Bug fixes 🧰
-
cmd/mdatagen: Preserve custom extensions (e.g.,x-customType,x-pointer) during schema reference resolution. (#14713, #14565)
Fixes an issue where custom properties defined locally on a node were
overwritten and lost when resolving a$refto an external/internal schema. -
pkg/xexporterhelper: Fix race when partition is being removed from LRU and new items are being added at the same time. (#14526)
- Added `metadata_keys` configuration to `sending_queue.batch.partition` for all exporters, altering batch partitioning behavior.
- API change: `pkg/config/configmiddleware` and `pkg/extensionmiddleware` now require `context.Context` in gRPC middleware interface constructors.
- `exporter/debug`: Output bucket counts for exponential histogram data points at normal verbosity.
- `pkg/exporterhelper`: Added `metadata_keys` option to partition batches by client metadata, automatically applied with `exporterhelper.WithQueue()`.
- `pkg/xexporterhelper`: Added code structure to handle unbounded partitions in sending queue.
Full changelog
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 🧰
pkg/config/configmiddleware: Add context.Context to gRPC middleware interface constructors. (#14523)pkg/extensionmiddleware: Add context.Context to gRPC middleware interface constructors. (#14523)
This is a breaking API change for components that implement or use extensionmiddleware.
Minor fixes and improvements.
Full changelog
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.
- `pdata/pprofile`: aggregation elements are deprecated (will be removed in a future release).
- When using the debug exporter with `use_internal_logger=false`, new `output_paths` option defaults to `["stdout"]` for backward compatibility.
- Increase minimum Go runtime version to 1.25 for all components.
- Flatten the metric stability field in cmd/mdatagen to match the weaver schema.
- Add detailed failure attributes (error.type, error.permanent) to exporter send_failed metrics at Detailed telemetry level.
- Introduce experimental `init` subcommand and configurable `telemetry` field in cmd/builder.
- Add optional `relationships` field to entity schema in metadata.yaml.
Full changelog
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 💡
cmd/mdatagen: Add entity association requirement for metrics and events when entities are defined (#14284)pkg/otelcol: Gate process signals behind build tags (#14542)
Particularly for Wasm on JS, there are no invalid process signal references, which would cause build failures.
- `pkg/scraperhelper`: ScraperID added to logs for metrics, logs, and profiles
Full changelog
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.
- Deprecation: `exporter/otlp_grpc` renamed from `otlp`; alias `otlp` retained.
- Deprecation: `exporter/otlp_http` renamed from `otlphttp`; alias `otlphttp` retained.
- Deprecation: `pkg/scraperhelper.AddScraper` method deprecated; use AddMetricsScraper.
- Removed `telemetry.disableHighCardinalityMetrics` feature gate from pkg/service.
- Removed `service.noopTracerProvider` feature gate from pkg/service.
- Replaced `pkg/config/confighttp.ServerConfig.Endpoint` with `NetAddr confignet.AddrConfig`, adding a "transport" option (e.g., "tcp", "unix").
- Added experimental xscraperhelper component for OTel profiling signal.
- Introduced deprecated type alias support via WithDeprecatedTypeAlias in factories.
- Added ProfileCount() to pkg/consumer/consumertest and profile samples metrics tracking in receiver/otlp.
Full changelog
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)
- pkg/xprocessor factory methods now require pointer receivers
- Update semconv import to version 1.38.0
- Add profiles support to nop exporter
- Optimize pdata struct size and reduce pointer bytes
Full changelog
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)
- Deprecate `Settings.LoggingOptions` and `telemetry.LoggerSettings.ZapOptions`; use `telemetry.LoggerSettings.BuildZapLogger` instead.
- `pkg/exporterhelper`: Update component configurations to use `configoptional.Optional[exporterhelper.QueueBatchConfig]` for the QueueBatchConfig field.
- `pdata/xpdata`: Rename `Entity.IDAttributes()` to `Entity.IdentifyingAttributes()` and `Entity.DescriptionAttributes()` to `Entity.DescriptiveAttributes()`.
- `pkg/exporterhelper`: Use `configoptional.Optional` for the `exporterhelper.QueueBatchConfig` field; update component configurations accordingly.
- `exporter/debug`: Add logging of dropped attributes, events, and links counts in detailed verbosity.
- `extension/memory_limiter`: The memorylimiter extension can be used as an HTTP/GRPC middleware.
- `pkg/config/configgrpc`: Statically validate gRPC endpoint for any gRPC client.
Full changelog
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.
- Deprecation: pkg/pdata functions profile.Duration() and profile.SetDuration() are deprecated; use DurationNano() and SetDurationNano().
- pkg/config/configgrpc: Replace component.Host parameter of ToServer/ToClientConn by map of extensions obtained from host's GetExtensions method; nil allowed in tests.
- pkg/config/confighttp: Replace component.Host parameter of ToServer/ToClient by map of extensions obtained from host's GetExtensions method; nil allowed in tests.
- Enhancement: Setting compression_algorithms to an empty list disables automatic decompression, ignoring Content-Encoding.
- Feature: Implement xscraper for Profiles.
- Enhancement: Introduce pdata/pprofile MergeTo method.
Full changelog
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 💡
pdata/pprofile: IntroduceMergeTomethod (#14091)pkg/pdata: Add profile.DurationNano() and profile.SetDurationNano() (#14188)
- Drop field `CommentStrindices` in `Profile` and rename fields (`Sample` → `Samples`, `Line` → `Lines`) plus remove `AggregationTemporality` from `ValueType` as part of OTLP protobuf upgrade to v1.9.0.
- The `otelcol.Factories.Telemetry` field is now required; callers must explicitly set it, removing the former implicit default.
- `cmd/mdatagen`: metadata.yaml gains optional `entities` section for organizing resource attributes with generated AssociateWith methods.
- `exporter/debug`: Sending queue in Debug exporter disabled by default (previously enabled with problematic size=1).
- `pkg/otelcol`: Secure-by-default redaction of configopaque values improved and tested.
Full changelog
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)
- `cmd/mdatagen`: `stability.level` field is now required for metrics.
- `cmd/mdatagen`: Removed `optional` boolean attribute field; replaced with enum `requirement_level` (required, conditionally_required, recommended, opt_in) which defaults to `recommended` if unspecified.
- `pdata/pprofile`: Deprecated `PutAttribute` helper method removed.
- Added FIPS and non-FIPS implementations for allowed TLS curves.
- Set CGO_ENABLED=0 by default in `cmd/builder` with configurable `cgo_enabled` option.
- `pkg/config/configoptional`: Introduced `configoptional.AddEnabledField` feature gate to explicitly disable optional configurations via an `enabled` field.
Full changelog
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)
- Remove deprecated type `TracesConfig` from all components.
- Remove definition of `Sizer` from public API in `pkg/xexporterhelper`.
- Update `service.Settings` to require a `telemetry.Factory`.
- `keep_alives_enabled` option added to ServerConfig for HTTP keep‑alive control
- Unified print-config command with redacted/unredacted modes, JSON output (unstable) and validation
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.138.0
End User Changelog
🛑 Breaking changes 🛑
-
all: Remove deprecated typeTracesConfig(#14036) -
pkg/exporterhelper: Add default values forsending_queue::batchconfiguration. (#13766)
Settingsending_queue::batchto an empty value now results in the same setup as the default batch processor configuration. -
all: Add unified print-config command with mode support (redacted, unredacted), json support (unstable), and validation support. (#11775)
This replaces theprint-initial-configcommand. See theservicepackage README for more details. The original command nameprint-initial-configremains an alias, to be retired with the feature flag.
💡 Enhancements 💡
all: Addkeep_alives_enabledoption to ServerConfig to control HTTP keep-alives for all components that create an HTTP server. (#13783)pkg/otelcol: Avoid unnecessary mutex in collector logs, replace by atomic pointer (#14008)cmd/mdatagen: Add lint/ordering validation for metadata.yaml (#13781)pdata/xpdata: Refactor JSON marshaling and unmarshaling to usepcommon.Valueinstead ofAnyValue. (#13837)pkg/exporterhelper: ExposeMergeCtxin exporterhelper's queue batch settings` (#13742)
🧰 Bug fixes 🧰
all: Fix zstd decoder data corruption due to decoder pooling for all components that create an HTTP server. (#13954)pkg/otelcol: Remove UB when taking internal logs and move them to the final zapcore.Core (#14009)
This can happen because of a race on accessinglogsTaken.pkg/confmap: Fix a potential race condition in confmap by closing the providers first. (#14018)
API Changelog
🛑 Breaking changes 🛑
-
pkg/xexporterhelper: Remove definition of Sizer from public API and ability to configure. (#14001)
Now that Request has both Items/Bytes sizes no need to allow custom sizers. -
pkg/service: Theservice.Settingstype now requires atelemetry.Factoryto be provided (#4970)
🚩 Deprecations 🚩
pdata/pprofile: DeprecatedPutAttributehelper method (#14016, #14041)pdata/pprofile: DeprecatedPutLocationhelper method (#14019)
💡 Enhancements 💡
all: Addkeep_alives_enabledoption to ServerConfig to control HTTP keep-alives for all components that create an HTTP server. (#13783)pkg/pdata: Add pcommon.Map helper to add a key to the map if does not exists (#14023)pdata/pprofile: IntroduceEqualmethod on theKeyValueAndUnittype (#14041)pkg/pdata: AddRemoveIfmethod to primitive slice types (StringSlice, Int64Slice, UInt64Slice, Float64Slice, Int32Slice, ByteSlice) (#14027)pdata/pprofile: IntroduceSetAttributehelper method (#14016, #14041)pdata/pprofile: IntroduceSetLocationhelper method (#14019)pdata/pprofile: IntroduceEqualmethod on theStacktype (#13952)
- service/telemetry.TracesConfig is deprecated; use otelconftelemetry.TracesConfig instead.
- Removed all experimental symbols in pkg/exporterhelper; they have been moved to xexporterhelper.
- Marked configoptional as stable
- Marked configauth module as 1.0
- Marked pdata.useCustomProtoEncoding feature gate as stable
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.137.0
End User Changelog
💡 Enhancements 💡
-
cmd/mdatagen: Improve validation for resource attributeenabledfield in metadata files (#12722)
Resource attributes now require an explicitenabledfield in metadata.yaml files, while regular attributes
are prohibited from having this field. This improves validation and prevents configuration errors. -
all: Changelog entries will now have their component field checked against a list of valid components. (#13924)
This will ensure a more standardized changelog format which makes it easier to parse. -
pkg/pdata: Mark featuregate pdata.useCustomProtoEncoding as stable (#13883)
API Changelog
🛑 Breaking changes 🛑
pkg/exporterhelper: Remove all experimental symbols in exporterhelper (#11143)
They have all been moved to xexporterhelper
🚩 Deprecations 🚩
all: service/telemetry.TracesConfig is deprecated (#13904)
This type alias has been added to otelconftelemetry.TracesConfig,
where the otelconf-based telemetry implementation now lives.
💡 Enhancements 💡
all: Mark configoptional as stable (#13403)all: Mark configauth module as 1.0 (#9476)pkg/pdata: Mark featuregate pdata.useCustomProtoEncoding as stable (#13883)
- Deprecation warning: all experimental symbols in exporterhelper are deprecated and moved to xexporterhelper (#11143)
- Removed deprecated function NewRequestsSizer from exporterhelper (#13803)
- Upgraded OTLP protobuf definitions in pdata/pprofile to version 1.8.0 (#13758, #13825, #13839)
- Removed deprecated ProfilesDictionary method from pdata/pprofile (#13858)
- Added GetOrInsertDefault method to configoptional.Optional
- Stabilized the exporter module
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.136.0
End User Changelog
💡 Enhancements 💡
xpdata: Add Serialization and Deserialization of AnyValue (#12826)debugexporter: add support for batching (#13791)
The default queue size is 1configtls: Add early validation for TLS server configurations to fail fast when certificates are missing instead of failing at runtime. (#13130, #13245)mdatagen: Expose stability level in generated metric documentation (#13748)internal/tools: Add support for modernize in Makefile (#13796)
🧰 Bug fixes 🧰
otelcol: Fix a potential deadlock during collector shutdown. (#13740)otlpexporter: fix the validation of unix socket endpoints (#13826)
API Changelog
🛑 Breaking changes 🛑
exporterhelper: Remove deprecated function NewRequestsSizer (#13803)pdata/pprofile: Upgrade the OTLP protobuf definitions to version 1.8.0 (#13758, #13825, #13839)pdata/pprofile: Remove deprecated ProfilesDictionary method (#13858)
🚩 Deprecations 🚩
exporterhelper: Deprecate all experimental symbols in exporterhelper and move them to xexporterhelper (#11143)
💡 Enhancements 💡
-
configoptional: AddGetOrInsertDefaultmethod toconfigoptional.Optional(#13856)
This method inserts a default or zero value into aNone/DefaultOptionalbeforeGetting its inner value. -
exporter: Stabilize exporter module. (#12978)
This does not stabilize the exporterhelper module or configuration -
pdata: Upgrade the OTLP protobuf definitions to version 1.8.0 (#13758)
- Removed deprecated `pdata/pprofile` method `AddAttribute`.
- Added exporterhelper metrics `exporter_queue_batch_send_size` and `exporter_queue_batch_send_size_bytes`.
- Stabilized the `configmiddleware` module configuration interface.
- Introduced experimental `xpdata.MapBuilder` struct for optimized pcommon.Map construction.
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.135.0
End User Changelog
💡 Enhancements 💡
exporterhelper: Add newexporter_queue_batch_send_sizeandexporter_queue_batch_send_size_bytesmetrics, showing the size of telemetry batches from the exporter. (#12894)
API Changelog
🛑 Breaking changes 🛑
pdata/pprofile: Remove deprecated AddAttribute method (#13764)
💡 Enhancements 💡
configmiddleware: Stabilizeconfigmiddlewaremodule (#13422)
This only stabilizes the configuration interface but does not stabilize the middlewares themselves or the way of implementing them.xpdata: Add experimental MapBuilder struct to optimize pcommon.Map construction (#13617)
- `pdata`: Add custom grpc/encoding that replaces proto and calls into the custom marshal/unmarshal logic in pdata.
- `pdata`: Avoid copying the pcommon.Map when same origin to improve OTTL map function performance.
- `exporterhelper`: Respect `num_consumers` when batching and partitioning are enabled.
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.134.0
End User Changelog
💡 Enhancements 💡
pdata: Add custom grpc/encoding that replaces proto and calls into the custom marshal/unmarshal logic in pdata. (#13631)
This change should not affect other gRPC calls since it fallbacks to the default grpc/proto encoding if requests are not pdata/otlp requests.pdata: Avoid copying the pcommon.Map when same origin (#13731)
This is a very large improvement if using OTTL with map functions since it will avoid a map copy.exporterhelper: Respectnum_consumerswhen batching and partitioning are enabled. (#13607)
🧰 Bug fixes 🧰
pdata: Correctly parse OTLP payloads containing non-packed repeated primitive fields (#13727, #13730)
This bug prevented the Collector from ingesting most Histogram, ExponentialHistogram,
and Profile payloads.
API Changelog
💡 Enhancements 💡
exporterhelper: Split exporterhelper into a separate module (#12985)
- Deprecation: pdata/pprofile Profiles.ProfilesDictionary is deprecated in favor of Profiles.Dictionary
- Feature gate --feature-gates=-pdata.useCustomProtoEncoding can be used to disable the new proto marshaler/unmarshaler if issues arise
- Increase minimum Go version to 1.24 for all components
- Set default transport type of configgrpc to "tcp"
- Add `profiles_endpoint` option to otlphttpexporter for custom profiles data export endpoints
- Experimental local memory pooling support in pdata (enabled via --featuregate=+pdata.useProtoPooling)
- New feature flag receiverhelper.newReceiverMetrics to distinguish internal vs. downstream errors with updated metrics
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.133.0
End User Changelog
🛑 Breaking changes 🛑
all: Increase minimum Go version to 1.24 (#13627)
💡 Enhancements 💡
-
otlphttpexporter: Addprofiles_endpointconfiguration option to allow custom endpoint for profiles data export (#13504)
Theprofiles_endpointconfiguration follows the same pattern astraces_endpoint,metrics_endpoint, andlogs_endpoint.
When specified, profiles data will be sent to the custom URL instead of the default{endpoint}/v1development/profiles. -
pdata: Add support for local memory pooling for data objects. (#13678)
This is still an early experimental (alpha) feature. Do not recommended to be used production. To enable use "--featuregate=+pdata.useProtoPooling" -
pdata: Optimize CopyTo messages to avoid any copy when same source and destination (#13680) -
receiverhelper: New feature flag to make receiverhelper distinguish internal vs. downstream errors using newotelcol_receiver_failed_xandotelcol_receiver_requestsmetrics (#12207, #12802)
This is a breaking change for the semantics of the otelcol_receiver_refused_metric_points, otelcol_receiver_refused_log_records and otelcol_receiver_refused_spans metrics.
These new metrics and semantics are enabled through thereceiverhelper.newReceiverMetricsfeature gate. -
debugexporter: Add support for entity references in debug exporter output (#13324) -
pdata: Fix unnecessary allocation of a new state when adding new values to pcommon.Map (#13634) -
service: Implement refcounting for pipeline data owned memory. (#13631)
This feature is protected by--featuregate=+pdata.useProtoPooling. -
service: Add a debug-level log message when a consumer returns an error. (#13357) -
xpdata: Optimize xpdata/context for persistent queue when only one value for key (#13636) -
otlpreceiver: Log the listening addresses of the receiver, rather than the configured endpoints. (#13654) -
pdata: Use the newly added proto marshaler/unmarshaler for the official proto Marshaler/Unmarshaler (#13637)
If any problems observed with this consider to disable the featuregate--feature-gates=-pdata.useCustomProtoEncoding
configtls: Enable X25519MLKEM768 as per draft-ietf-tls-ecdhe-mlkem (#13670)
🧰 Bug fixes 🧰
exporterhelper: Prevent uncontrolled goroutines in batcher due to a incorrect worker pool behaviour. (#13689)service: Ensure the insecure configuration is accounted for when normalizing the endpoint. (#13691)configoptional: Allow validating nested types (#13579)
configoptional.Optionalnow implementsxconfmap.Validatorbatchprocessor: Fix UB in batch processor when trying to read bytes size after adding request to pipeline (#13698)
This bug only happens id detailed metrics are enabled and also an async (sending queue enabled) exporter that mutates data is configure.
API Changelog
🛑 Breaking changes 🛑
configgrpc: Settcpas the default transport type (#13657)
gRPC is generally used with HTTP/2, so this will simplify usage for most components.
🚩 Deprecations 🚩
pdata/pprofile: Deprecate Profiles.ProfilesDictionary in favor of Profiles.Dictionary. (#13644)
💡 Enhancements 💡
pdata: Add support for local memory pooling for data objects. (#13678)
This is still an early experimental (alpha) feature. Do not recommended to be used production. To enable use "--featuregate=+pdata.useProtoPooling"
🧰 Bug fixes 🧰
configoptional: Allow validating nested types (#13579)
configoptional.Optionalnow implementsxconfmap.Validator
- `componentstatus.NewEvent` now accepts multiple `EventBuilderOption` arguments instead of a single one.
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.132.0
End User Changelog
🛑 Breaking changes 🛑
componentstatus: Change the signature of the componentstatus.NewEvent to accept multiple options. (#13210)
Changes the signature of the component.NewEvent to accept multiple EventBuilderOption,
like the new WithAttributes constructor.
🚩 Deprecations 🚩
-
service: move service.noopTraceProvider feature gate to deprecated stage (#13492)
The functionality of the feature gate is available via configuration with the following telemetry settings:service: telemetry: traces: level: none -
mdatagen: Remove the deletion ofgenerated_component_telemetry_test.go. (#12067)
This file used to be generated by mdatagen. Starting with 0.122.0, the code deletes that file.
It is no longer necessary to delete the file, as code has had time to upgrade to mdatagen and delete the file. -
service: Thetelemetry.disableHighCardinalityMetricsfeature gate is deprecated (#13537)
The feature gate is now deprecated since metric views can be configured.
The feature gate will be removed in v0.134.0.The metric attributes removed by this feature gate are no longer emitted
by the Collector by default, but if needed, you can achieve the same
functionality by configuring the following metric views:service: telemetry: metrics: level: detailed views: - selector: meter_name: "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" stream: attribute_keys: excluded: ["net.sock.peer.addr", "net.sock.peer.port", "net.sock.peer.name"] - selector: meter_name: "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" stream: attribute_keys: excluded: ["net.host.name", "net.host.port"]Note that this requires setting
service::telemetry::metrics::level: detailed.
If you have a strong use case for using views in combination with a different
level, please show your interest in
https://github.com/open-telemetry/opentelemetry-collector/issues/10769.
💡 Enhancements 💡
pdata: Generate Logs/Traces/Metrics/Profiles and p[log|trace|metric|profile]ExportResponse with pdatagen. (#13597)
This change brings consistency on how these structs are written and remove JSON marshaling/unmarshaling hand written logic.confighttp: Add option to configure ForceAttemptHTTP2 to support HTTP/1 specific transport settings. (#13426)pdata: Avoid unnecessary buffer copy when JSON marshal fails. (#13598)cmd/mdatagen: Use a custom host implementation for lifecycle tests (#13589)
Use a custom noop host implementation that implements all non-deprecated, publicly-accessible interfaces implemented by the Collector service.processorhelper: Add processor internal duration metric. (#13231)pdata: Improve RemoveIf for slices to not reference anymore the removed memory (#13522)
🧰 Bug fixes 🧰
-
pdata: Fix null pointer access when copying into a slice with larger cap but smaller len. (#13523) -
confighttp: Fix middleware configuration field name from "middleware" to "middlewares" for consistency with configgrpc (#13444) -
memorylimiterextension, memorylimiterprocessor: Memory limiter extension and processor shutdown don't throw an error if the component was not started first. (#9687)
The components would throw an error if they were shut down before being started.
With this change, they will no longer return an error, conforming to the lifecycle of components expected. -
confighttp: Reuse zstd Reader objects (#11824)
API Changelog
🛑 Breaking changes 🛑
componenttest: RemoveGetFactoryfrom the host returned byNewNopHost(#13577)
This method is no longer part of thecomponent.Hostinterface.
💡 Enhancements 💡
-
exporterhelper: Provide an interfacequeue_batch.Setting.MergeCtxso users can control how context values are preserved or combined (#13320)
By supplying a custom mergeCtx function, users can control how context values are preserved or combined.
The default behavior is to preserve no context values. -
pdata: Generate Logs/Traces/Metrics/Profiles and p[log|trace|metric|profile]ExportResponse with pdatagen. (#13597)
This change brings consistency on how these structs are written and remove JSON marshaling/unmarshaling hand written logic. -
pdata: Avoid unnecessary buffer copy when JSON marshal fails. (#13598) -
pipeline: Mark module as stable (#12831)
- `configgrpc` fields `KeepaliveServerConfig.ServerParameters` and `KeepaliveServerConfig.EnforcementPolicy` now use `configoptional.Optional` types.
- `xexporterhelper.NewProfilesExporter` function has been removed.
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.131.0
End User Changelog
🛑 Breaking changes 🛑
confighttp: Moveconfighttp.framedSnappyfeature gate to beta. (#10584)
💡 Enhancements 💡
-
exporter/debug: Move to alpha stability except profiles (#13487) -
exporterhelper: Enableexporter.PersistRequestContextfeature gate by default. (#13437)
Request context is now preserved by default when using persistent queues.
Note that Auth extensions context is not propagated through the persistent queue. -
pdata: Use pdatagen to generate marshalJSON without using gogo proto jsonpb. (#13450) -
otlpreceiver: Remove usage of gogo proto which uses reflect.Value.MethodByName. Removes one source of disabling DCE. (#12747) -
exporterhelper: Fix metrics split logic to consider metrics description into the size. (#13418) -
service: New pipeline instrumentation now differentiates internal failures from downstream errors (#13234)
With the telemetry.newPipelineTelemetry feature gate enabled, the "received" and "produced"
metrics related to a component now distinguish between two types of errors:- "outcome = failure" indicates that the component returned an internal error;
- "outcome = refused" indicates that the component successfully emitted data, but returned an
error coming from a downstream component processing that data.
-
pdata: Remove usage of text/template from pdata, improves DCE. (#12747) -
architecture: New Tier 3 platform riscv64 allowing the collector to be built and distributed for this platform. (#13462)
🧰 Bug fixes 🧰
exporterhelper: Prevents the exporter for being stuck when telemetry data is bigger than batch.max_size (#12893)mdatagen: Fix import paths for mdatagen component (#13069)otlpreceiver: Error handler correctly fallbacks to content type (#13414)pdata/pprofiles: Fix profiles JSON unmarshal logic for originalPayload. The bytes have to be base64 encoded. (#13483)xpdata: Fix unmarshaling JSON for entities, add e2e tests to avoid this in the future. (#13480)service: Downgrade dependency of prometheus exporter in OTel Go SDK (#13429)
This fixes the bug where collector's internal metrics are emitted with an unexpected suffix in their names when users configure the service::telemetry::metrics::readers with Prometheusservice: Revert Default internal metrics config now enablesotel_scope_labels (#12939, #13344)
Reverting change temporarily due to prometheus exporter downgrade. This unfortunately re-introduces the bug that instrumentation scope attributes cause errors in Prometheus exporter. See http://github.com/open-telemetry/opentelemetry-collector/issues/12939 for details.builder: Remove undocumented handling ofDIST_*environment variables replacements (#13335)
API Changelog
🛑 Breaking changes 🛑
-
configgrpc: Update optional fields to useconfigoptional.Optionalfield for optional values. (#13252, #13364)
Specifically, the following fields have been updated toconfigoptional:KeepaliveServerConfig.ServerParameters(KeepaliveServerParameterstype)KeepaliveServerConfig.EnforcementPolicy(KeepaliveEnforcementPolicytype)
-
xexporterhelper: Remove deprecated NewProfilesExporter function from xexporterhelper package (#13391)
💡 Enhancements 💡
-
consumererror: Add new "Downstream" error marker (#13234)
This new error wrapper type indicates that the error returned by a component's
Consumemethod is not an internal failure of the component, but instead
was passed through from another component further downstream.
This is used internally by the new pipeline instrumentation feature to
determine theoutcomeof a component call. This wrapper is not intended to
be used by components directly. -
pdata/pprofile: IntroduceEqualmethod on theFunctiontype (#13222) -
pdata/pprofile: IntroduceEqualmethod on theLinktype (#13223) -
pdata/pprofile: Add new helper methodSetFunctionto set a new function on a line. (#13222) -
pdata/pprofile: Add new helper methodSetLinkto set a new link on a sample. (#13223) -
pdata/pprofile: Add new helper methodSetStringto set or retrieve the index of a value in the StringTable. (#13225)
Fixed internal metrics emitted with unexpected suffix in names when configuring service telemetry metrics readers with Prometheus.
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.130.1
End User Changelog
🧰 Bug fixes 🧰
service: Fixes bug where internal metrics are emitted with an unexpected suffix in their names when users configureservice::telemetry::metrics::readerswith Prometheus. (#13449)
See more details on https://github.com/open-telemetry/opentelemetry-go/issues/7039
API Changelog
- Removed deprecated `exporter/otlp` batcher config; use queuebatch instead.
- Default internal metrics configuration now enables `otel_scope_` labels (removes previous `without_scope_info: true`).
- Added `Error` type in consumererror for pipeline error communication.
- Introduced experimental xpdata resource-entity reference API.
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.130.0
End User Changelog
❗ Known Issues ❗
-
Due to a bug in the internal telemetry Prometheus exporter, if you are configuring an internal telemetry Prometheus exporter, the collector's internal metrics will be emitted with an unexpected suffix in its name. For example, the metric
otelcol_exporter_sent_spans__spans__totalinstead ofotelcol_exporter_sent_spans_total. The workaround is to manually configurewithout_units: truein your internal telemetry Prometheus exporter configservice: telemetry: metrics: readers: - pull: exporter: prometheus: host: 0.0.0.0 port: 8888 without_units: trueIf you are using the collector's default internal telemetry Prometheus exporter for exporting internal metrics you are unaffected.
This issue has been fixed in v0.130.1. If you are using the Collector builder, please use the builder v0.130.1 to fix this issue.
🛑 Breaking changes 🛑
exporter/otlp: Remove deprecated batcher config from OTLP, use queuebatch (#13339)
💡 Enhancements 💡
exporterhelper: Enable items and bytes sizers for persistent queue (#12881)exporterhelper: Refactor persistent storage size backup to always record it. (#12890)exporterhelper: Add support to configure a different Sizer for the batcher than the queue (#13313)yaml: Replacedsigs.k8s.io/yamlwithgo.yaml.in/yamlfor improved support and long-term maintainability. (#13308)
🧰 Bug fixes 🧰
-
exporterhelper: Fix exporter.PersistRequestContext feature gate (#13342) -
exporterhelper: Preserve all metrics metadata when batch splitting. (#13236)
Previously, when large batches of metrics were processed, the splitting logic inmetric_batch.gocould
cause thenamefield of some metrics to disappear. This fix ensures that all metric fields are
properly preserved whenmetricRequestobjects are split. -
service: Default internal metrics config now enablesotel_scope_labels (#12939, #13344)
By default, the Collector exports its internal metrics using a Prometheus
exporter from the opentelemetry-go repository. With this change, the Collector
no longer sets "without_scope_info" to true in its configuration.This means that all exported metrics will have
otel_scope_name,
otel_scope_schema_url, andotel_scope_versionlabels corresponding to the
instrumentation scope metadata for that metric.This notably prevents an error when multiple metrics are only distinguished
by their instrumentation scopes and end up aliased during export.If this is not desired behavior, a Prometheus exporter can be explicitly
configured with this option enabled.
API Changelog
🛑 Breaking changes 🛑
exporterhelper: Use configoptional for sending_queue::batch field (#13345)configgrpc: Update optional fields to useconfigoptional.Optionalfield for optional values. (#13250, #13252)
Components usingconfiggrpcpackage may need to update config values.confighttp: Use configoptional.Optional in confighttp (#9478)exporterhelper: Remove sizer map in favor of items/bytes sizers. Request based is automatically supported. (#13262)pdata/pprofile: Remove field Profile.StartTime from pdata/pprofile (#13315)
Remove Profile.StartTime from OTel Profiling signal.exporterhelper: Remove deprecated old batcher config (#13003)exporter/otlp: Remove deprecated batcher config from OTLP, use queuebatch (#13339)
🚩 Deprecations 🚩
exporterhelper: Deprecate NewRequestsSizer always supported. (#13262)xexporterhelper: Introduce NewProfiles method and deprecate NewProfilesExporter (#13372)
💡 Enhancements 💡
-
consumererror: AddErrortype (#7047)
This type can contain information about errors that allow components (e.g. exporters)
to communicate error information back up the pipeline. -
pdata: Document that changing pcommon.Map (Remove/removeIf/Put*) invalidates Value references obtained via Get. (#13073) -
cmd/mdatagen: Add support for optional attribute (#12571) -
exporterhelper: Add support to configure a different Sizer for the batcher than the queue (#13313) -
pdata: Add support for the new resource-entity reference API as part of the experimental xpdata package. (#13264)
- Removed exporterhelper sending_queue::blocking options; use sending_queue::block_on_overflow instead.
- Removed deprecated semconv package.
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.129.0
End User Changelog
🛑 Breaking changes 🛑
exporterhelper: Remove deprecated sending_queue::blocking options, use sending_queue::block_on_overflow. (#13211)
💡 Enhancements 💡
-
mdatagen: Taught mdatagen to print thego liststderr output on failures, and to rungo listwhere the metadata file is. (#13205) -
service: Support settingsamplerandlimitsunderservice::telemetry::traces(#13201)
This allows users to enable sampling and set span limits on internal Collector traces using the
OpenTelemetry SDK declarative configuration. -
pdata/pprofile: Add new helper methodsFromLocationIndicesandPutLocationto read and modify the content of locations. (#13150) -
exporterhelper: Preserve request span context and client information in the persistent queue. (#11740, #13220, #13232)
It allows internal collector spans and client information to propagate through the persistent queue used by
the exporters. The same way as it's done for the in-memory queue.
Currently, it is behind the exporter.PersistRequestContext feature gate, which can be enabled by adding
--feature-gates=exporter.PersistRequestContextto the collector command line. An exporter buffer stored by
a previous version of the collector (or by a collector with the feature gate disabled) can be read by a newer
collector with the feature enabled. However, the reverse is not supported: a buffer stored by a newer collector with
the feature enabled cannot be read by an older collector (or by a collector with the feature gate disabled).
🧰 Bug fixes 🧰
pdata: Fix copying of optional fields when the source is unset. (#13268)service: Only allocate one set of internal log sampling counters (#13014)
The case where logs are only exported to stdout was fixed in v0.126.0;
this new fix also covers the case where logs are exported through OTLP.
API Changelog
🛑 Breaking changes 🛑
semconv: Removing deprecated semconv package (#13071)configgrpc,confighttp: Unify return type ofNewDefault*Configfunctions to return a struct instead of a pointer. (#13169)exporterhelper: QueueBatchEncoding interface is changed to support marshaling and unmarshaling of request context. (#13188)
💡 Enhancements 💡
pdata/pprofile: IntroduceEqualmethod on theMappingtype (#13197)configoptional: Make unmarshaling intoNone[T]work the same as unmarshaling into(*T)(nil). (#13168)configoptional: Add a confmap.Marshaler implementation for configoptional.Optional (#13196)pdata/pprofile: IntroduceEqualmethods on theLineandLocationtypes (#13150)pdata/pprofile: Add new helper methodSetMappingto set a new mapping on a location. (#13197)
🧰 Bug fixes 🧰
confmap: Distinguish between empty and nil values when marshalingconfmap.Confstructs. (#13196)
- Removed `exporterhelper.NewProfilesRequestExporter` function from xexporterhelper package
- Removed pointer to field `cookies` in `confighttp.ClientConfig`
- OTLP receiver configuration sections now use `configoptional.Optional`; removed `Unmarshal` method
- Added new `configoptional` module for optional configuration fields
- Introduced `MoveAndAppendTo` methods on generated primitive slices in `pdata`
Full changelog
Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.128.0
End User Changelog
🛑 Breaking changes 🛑
service/telemetry: Mark "telemetry.disableAddressFieldForInternalTelemetry" as stable (#13152)
💡 Enhancements 💡
-
confighttp: Update the HTTP server span naming to use the HTTP method and route pattern instead of the path. (#12468)
The HTTP server span name will now be formatted as<http.request.method> <http.route>.
If a route pattern is not available, it will fall back to<http.request.method>. -
service: Use configured loggers to log errors as soon as it is available (#13081) -
service: Remove stabilized featuregate useOtelWithSDKConfigurationForInternalTelemetry (#13152)
🧰 Bug fixes 🧰
-
telemetry: Add generated resource attributes to the printed log messages. (#13110)
If service.name, service.version, or service.instance.id are not specified in the config, they will be generated automatically.
This change ensures that these attributes are also included in the printed log messages. -
mdatagen: Fix generation when there are no events in the metadata. (#13123) -
confmap: Do not panic on assigning nil maps to non-nil maps (#13117) -
pdata: Fix event_name skipped when unmarshalling LogRecord from JSON (#13127)
API Changelog
🛑 Breaking changes 🛑
exporterhelper: Remove deprecated NewProfilesRequestExporter function from xexporterhelper package (#13157)confighttp: Remove pointer to fieldcookiesin confighttp.ClientConfig (#13116)otlpreceiver: Useconfigoptional.Optionalto define optional configuration sections in the OTLP receiver. RemoveUnmarshalmethod. (#13119)confighttp,configgrpc: RenameClientConfig.TLSSettingandServerConfig.TLSSettingtoClientConfig.TLSandServerConfig.TLS. (#13115)pdata/pprofile: Upgrade the OTLP protobuf definitions to version 1.7.0 (#13075)
Note that the batcher is temporarily a noop.pipeline: Remove deprecated MustNewID[WithName] (#13139)
🚀 New components 🚀
configoptional: Add a new configoptional module to support optional configuration fields. (#12981)
💡 Enhancements 💡
pdata: IntroduceMoveAndAppendTomethods to the generated primitive slices (#13074)pdata: Upgrade the OTLP protobuf definitions to version 1.7.0 (#13075)
🧰 Bug fixes 🧰
-
confmap: Correctly distinguish betweenniland empty map values on theToStringMapmethod (#13161)
This means thatToStringMap()method can now return a nil map if the original value wasnil.
If you were not doing so already, make sure to check fornilbefore writing to the map to avoid panics. -
confighttp: Make theNewDefaultServerConfigfunction return a nil TLS config by default. (#13129)- The previous default was a TLS config with no certificates, which would fail at runtime.