Skip to content

Release history

opentelemetry-collector releases

OpenTelemetry Collector

All releases

29 shown

Review required
v0.153.0 Breaking risk
Breaking upgrade Auth

Feature-gate stabilization + reaggregation default + memory fix

Review required
v0.152.1 Mixed
Auth RBAC Dependencies

xconfmap deprecation + metrics + bug fixes

v0.152.0 New feature
Notable features
  • 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: Add otelcol_exporter_in_flight_requests metric 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-format Content-Encoding: snappy requests. (#15262)

  • pkg/confighttp: Recover from panics in decompression libraries, return HTTP 400 instead of 500. (#13228)

  • pkg/confighttp: Enforce max_request_body_size on Content-Encoding: snappy requests 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") behind LoggerV2.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.AsString no longer HTML-escapes <, >, and & inside ValueTypeMap and ValueTypeSlice values, matching the behavior already used for ValueTypeStr. (#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: Deprecate xconfmap.Validator and confmap.Validate in favor of confmap.Validator and confmap.Validate. (#15142)

💡 Enhancements 💡

  • cmd/mdatagen: Add go_struct.ignore_default flag to suppress default value generation for individual config fields. (#15156)
    Setting go_struct.ignore_default: true on a config field causes mdatagen to omit that field's default
    from the generated createDefaultConfig function, emitting nil for pointer fields
    and configoptional.None for optional fields.

  • pkg/confmap: Add the confmap.Validator interface and confmap.Validate function for configuration validation. (#15142)
    Config structs should generally implement the interface to provide validation
    of their fields. The confmap.Validate function 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.AsString no longer HTML-escapes <, >, and & inside ValueTypeMap and ValueTypeSlice values, matching the behavior already used for ValueTypeStr. (#14662)
v0.151.0 Breaking risk
⚠ Upgrade required
  • Deprecation: `cmd/mdatagen.DefaultMetricsBuilderConfig` is deprecated; use `NewDefaultMetricsBuilderConfig`.
  • `pkg/confignet`: Added support for Windows Named Pipe (npipe) transport.
Breaking changes
  • 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`.
Notable features
  • 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, the replace statements 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 added dist::use_absolute_replace_paths to 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)
    The service::telemetry::resource configuration 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-host
    

    The legacy inline attribute map format is still supported for backward compatibility:

    service:
      telemetry:
        resource:
          service.name: my-collector
          host.name: collector-host
    

    Note: resource.detectors is accepted for forward compatibility but is not yet applied by the collector.

  • exporter/otlp_grpc: Added the server.address and url.path attributes to metrics generated by the otlp exporter. (#14998)

  • exporter/otlp_http: Added the server.address and url.path attributes to metrics generated by the otlp_http exporter. (#14998)

  • pkg/config/configgrpc: Add UserAgent field to ClientConfig to 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 dedicated UserAgent field has been added to ClientConfig which, 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 the otelcol components command (#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.Protocols is now a named field instead of an anonymous embedded field. (#15178)
    Access to cfg.GRPC and cfg.HTTP must be updated to cfg.Protocols.GRPC and cfg.Protocols.HTTP.

🚩 Deprecations 🚩

  • cmd/mdatagen: The DefaultMetricsBuilderConfig function is deprecated. Use NewDefaultMetricsBuilderConfig instead. (#15165)
    The generated DefaultMetricsBuilderConfig function has been renamed to NewDefaultMetricsBuilderConfig
    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 via override_value_enabled flag (#15109)
    Components can opt in by setting override_value_enabled: true in their metadata.yaml.
    When enabled, per-attribute config types are generated with typed override_value fields
    that let users override resource attribute values in the collector configuration.
    Components without the flag continue to use the shared ResourceAttributeConfig type.

  • 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 include minLength, maxLength and pattern.

  • pkg/config/configgrpc: Add a DefaultBalancerName constant for the name of the default load balancer (#15139)
    This replaces the BalancerName function.

  • 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 the WithAttrs option to allow custom attributes on exporter metrics (#14998)

🧰 Bug fixes 🧰

  • cmd/mdatagen: Fix a bug in mdatagen where the allOf field 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.

v0.150.0 Breaking risk
Notable features
  • 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 the ToVersion feature flag attribute to be set for the Stable and Deprecated stages. (#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)
v0.149.0 Breaking risk
Breaking changes
  • 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.
Notable features
  • 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: Remove service_name, service_instance_id, and service_version as constant labels on every internal metric datapoint. These attributes are already present in target_info and 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)
    with service_name, service_instance_id, and service_version labels to match the old OpenCensus behavior.
    These attributes are now only present in the target_info metric, 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_info joins 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 so extra_attributes are 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.
v0.148.0 Breaking risk
⚠ Upgrade required
  • 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.
Breaking changes
  • 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).
Notable features
  • `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 following metric_relabel_configs to your scrape
    config in prometheus receiver:
    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
    
    See https://github.com/open-telemetry/opentelemetry-collector/issues/14814 for details and updates.

🛑 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 .exe to 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.Error returned by http.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>Config for each metric when reaggregation_enabled: true (#14689)
    Metrics with aggregatable attributes get AggregationStrategy and EnabledAttributes []<MetricName>AttributeKey
    fields; others get Enabled only. 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 using reaggregation_enabled: true will need to update references to MetricConfig.

  • 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 from config section 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 from config section 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: Add NewEntity constructor, Entity.CopyToResource, and EntityAttributeMap.All to pdata/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 $ref to 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)

v0.147.0 Breaking risk
Breaking changes
  • 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.
Notable features
  • `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: Add metadata_keys configuration to sending_queue.batch.partition to partition batches by client metadata (#14139)
    The metadata_keys configuration option is now available in the sending_queue.batch.partition section 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 using exporterhelper.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 like system.disk.io_time now 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 copy SchemaUrl metadata from resource and scope containers during partial batch splits. (#12279, #14620)

API Changelog

💡 Enhancements 💡

  • pkg/exporterhelper: Add metadata_keys configuration to sending_queue.batch.partition to partition batches by client metadata (#14139)
    The metadata_keys configuration option is now available in the sending_queue.batch.partition section 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 using exporterhelper.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.
v0.146.1 Maintenance

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.

v0.146.0 Breaking risk
⚠ Upgrade required
  • `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.
Breaking changes
  • Increase minimum Go runtime version to 1.25 for all components.
  • Flatten the metric stability field in cmd/mdatagen to match the weaver schema.
Notable features
  • 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)
    The otelcol_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) and error.permanent (indicates if error is permanent/non-retryable).
    The error.type attribute 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 experimental init subcommand (#14530)
    The new init subcommand 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 optional relationships field to entity schema in metadata.yaml (#14284)

  • exporter/debug: Add output_paths configuration option to control output destination when use_internal_logger is false. (#10472)
    When use_internal_logger is set to false, the debug exporter now supports configuring the output destination via the output_paths option.
    This allows users to send debug exporter output to stdout, stderr, or a file path.
    The default value is ["stdout"] to maintain backward compatibility.

  • pkg/confmap: Add experimental ToStringMapRaw function to decode confmap.Conf into a string map without losing internal types (#14480)
    This method exposes the internal structure of a confmap.Conf which 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 the otelcol components command (#14492)
  • pkg/otelcol: Order providers and converters in alphabetical order in the components subcommand. (#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 the deprecated field.

🚩 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.
v0.145.0 Bug fix
Notable features
  • `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: Fix Unmarshal methods not being called when config is wrapped inside Optional (#14500)
    This bug notably manifested in the fact that the sending_queue::batch::sizer config for exporters
    stopped defaulting to sending_queue::sizer, which sometimes caused the wrong units to be used
    when configuring sending_queue::batch::min_size and max_size.

    As part of the fix, xconfmap exposes a new xconfmap.WithForceUnmarshaler option, to be used in the Unmarshal methods
    of wrapper types like configoptional.Optional to make sure the Unmarshal method of the inner type is called.

    The default behavior remains that calling conf.Unmarshal on the confmap.Conf passed as argument to an Unmarshal
    method will skip any top-level Unmarshal methods 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: Fix Unmarshal methods not being called when config is wrapped inside Optional (#14500)
    This bug notably manifested in the fact that the sending_queue::batch::sizer config for exporters
    stopped defaulting to sending_queue::sizer, which sometimes caused the wrong units to be used
    when configuring sending_queue::batch::min_size and max_size.

    As part of the fix, xconfmap exposes a new xconfmap.WithForceUnmarshaler option, to be used in the Unmarshal methods
    of wrapper types like configoptional.Optional to make sure the Unmarshal method of the inner type is called.

    The default behavior remains that calling conf.Unmarshal on the confmap.Conf passed as argument to an Unmarshal
    method will skip any top-level Unmarshal methods to avoid infinite recursion in standard use cases.

v0.144.0 Breaking risk
⚠ Upgrade required
  • 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.
Breaking changes
  • 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").
Notable features
  • 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 deprecated telemetry.disableHighCardinalityMetrics feature gate. (#14373)
  • pkg/service: Remove deprecated service.noopTracerProvider feature gate. (#14374)

🚩 Deprecations 🚩

  • exporter/otlp_grpc: Rename otlp exporter to otlp_grpc exporter and add deprecated alias otlp. (#14403)
  • exporter/otlp_http: Rename otlphttp exporter to otlp_http exporter and add deprecated alias otlphttp. (#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 optional display_name and description fields to metadata.yaml for human-readable component names (#14114)
    The display_name field allows components to specify a human-readable name in metadata.yaml.
    When provided, this name is used as the title in generated README files.
    The description field 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: Replace ServerConfig.Endpoint with NetAddr 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 the AddScraper method. (#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 the WithDeprecatedTypeAlias option.

    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 via xextension module (#14208)
    Extensions can now register deprecated type aliases using the experimental xextension.WithDeprecatedTypeAlias option.

    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: Introduce AddMetricsScraper to be more explicit than AddScraper. (#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)
v0.143.0 Breaking risk
Breaking changes
  • pkg/xprocessor factory methods now require pointer receivers
Notable features
  • 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)
v0.142.0 Breaking risk
⚠ Upgrade required
  • 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.
Breaking changes
  • `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.
Notable features
  • `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: Rename Entity.IDAttributes() to Entity.IdentifyingAttributes() and Entity.DescriptionAttributes() to Entity.DescriptiveAttributes() to align with OpenTelemetry specification terminology for attributes. (#14275)
  • pkg/exporterhelper: Use configoptional.Optional for the exporterhelper.QueueBatchConfig (#14155)
    It's recommended to change the field type in your component configuration to be configoptional.Optional[exporterhelper.QueueBatchConfig] to keep the enabled subfield. 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.
v0.141.0 Breaking risk
⚠ Upgrade required
  • Deprecation: pkg/pdata functions profile.Duration() and profile.SetDuration() are deprecated; use DurationNano() and SetDurationNano().
Breaking changes
  • 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.
Notable features
  • 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: Setting compression_algorithms to 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: Replace component.Host parameter of ToServer/ToClientConn by map of extensions (#13640)
    Components must now pass the map obtained from the host's GetExtensions method
    instead of the host itself.

    Nil may be used in tests where no middleware or authentication extensions are used.

  • pkg/config/confighttp: Replace component.Host parameter of ToServer/ToClient by map of extensions (#13640)
    Components must now pass the map obtained from the host's GetExtensions method
    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: Introduce MergeTo method (#14091)
  • pkg/pdata: Add profile.DurationNano() and profile.SetDurationNano() (#14188)
v0.140.0 Breaking risk
Breaking changes
  • 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.
Notable features
  • `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.yaml now supports an optional entities section to organize resource attributes into logical entities with identity and description attributes (#14051)
    When entities are defined, mdatagen generates AssociateWith{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: Mark configoptional.AddEnabledField as 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 CommentStrindices in Profile.
    • Rename Sample to Samples in Profile.
    • Rename Line to Lines in Location.
    • Remove AggregationTemporality field in ValueType.

    See https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v1.9.0

  • pkg/otelcol: The otelcol.Factories.Telemetry field 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)
v0.139.0 Breaking risk
Breaking changes
  • `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.
Notable features
  • 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: Replace optional field with requirement_level field for attributes in metadata schema (#13913)
    The optional boolean field for attributes has been replaced with a requirement_level field that accepts enum values: required, conditionally_required, recommended, or opt_in.

    • required: attribute is always included and cannot be excluded
    • conditionally_required: attribute is included by default when certain conditions are met (replaces optional: true)
    • recommended: attribute is included by default but can be disabled via configuration (replaces optional: false)
    • opt_in: attribute is not included unless explicitly enabled in user config
      When requirement_level is not specified, it defaults to recommended.
  • pdata/pprofile: Remove deprecated PutAttribute helper method (#14082)

  • pdata/pprofile: Remove deprecated PutLocation helper method (#14082)

💡 Enhancements 💡

  • all: Add FIPS and non-FIPS implementations for allowed TLS curves (#13990)
  • cmd/builder: Set CGO_ENABLED=0 by default, add the cgo_enabled configuration 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 new configoptional.AddEnabledField feature gate that allows users to explicitly disable a configoptional.Optional through a new enabled field. (#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 of configgrpc.ClientConfig.Headers, confighttp.ClientConfig.Headers, and confighttp.ServerConfig.ResponseHeaders (#13930)
    configopaque.MapList is a new alternative to map[string]configopaque.String which can unmarshal
    both maps and lists of name/value pairs.

    For example, if headers is a field of type configopaque.MapList,
    then the following YAML configs will unmarshal to the same thing:

    headers:
      "foo": "bar"
    
    headers:
    - name: "foo"
      value: "bar"
    
  • pdata/pprofile: Update SetFunction to return the function's ID rather than update the Line (#14016, #14032)

  • pdata/pprofile: Update SetLink to return the link's ID rather than update the Sample (#14016, #14031)

  • pdata/pprofile: Update SetMapping to 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: Introduce SetStack method (#14007)
  • pdata/xpdata: Add high-level Entity API for managing entities attached to resources (#14042)
    Introduces Entity, EntitySlice, and EntityAttributeMap types 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)
v0.138.0 Breaking risk
Breaking changes
  • 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`.
Notable features
  • `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 type TracesConfig (#14036)

  • pkg/exporterhelper: Add default values for sending_queue::batch configuration. (#13766)
    Setting sending_queue::batch to 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 the print-initial-config command. See the service package README for more details. The original command name print-initial-config remains an alias, to be retired with the feature flag.

💡 Enhancements 💡

  • all: Add keep_alives_enabled option 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 use pcommon.Value instead of AnyValue. (#13837)
  • pkg/exporterhelper: Expose MergeCtx in 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 accessing logsTaken.
  • 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: The service.Settings type now requires a telemetry.Factory to be provided (#4970)

🚩 Deprecations 🚩

  • pdata/pprofile: Deprecated PutAttribute helper method (#14016, #14041)
  • pdata/pprofile: Deprecated PutLocation helper method (#14019)

💡 Enhancements 💡

  • all: Add keep_alives_enabled option 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: Introduce Equal method on the KeyValueAndUnit type (#14041)
  • pkg/pdata: Add RemoveIf method to primitive slice types (StringSlice, Int64Slice, UInt64Slice, Float64Slice, Int32Slice, ByteSlice) (#14027)
  • pdata/pprofile: Introduce SetAttribute helper method (#14016, #14041)
  • pdata/pprofile: Introduce SetLocation helper method (#14019)
  • pdata/pprofile: Introduce Equal method on the Stack type (#13952)
v0.137.0 Breaking risk
⚠ Upgrade required
  • service/telemetry.TracesConfig is deprecated; use otelconftelemetry.TracesConfig instead.
Breaking changes
  • Removed all experimental symbols in pkg/exporterhelper; they have been moved to xexporterhelper.
Notable features
  • 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 attribute enabled field in metadata files (#12722)
    Resource attributes now require an explicit enabled field 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)
v0.136.0 Breaking risk
⚠ Upgrade required
  • Deprecation warning: all experimental symbols in exporterhelper are deprecated and moved to xexporterhelper (#11143)
Breaking changes
  • 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)
Notable features
  • 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 1
  • configtls: 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: Add GetOrInsertDefault method to configoptional.Optional (#13856)
    This method inserts a default or zero value into a None/Default Optional before Getting 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)

v0.135.0 Breaking risk
Breaking changes
  • Removed deprecated `pdata/pprofile` method `AddAttribute`.
Notable features
  • 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 new exporter_queue_batch_send_size and exporter_queue_batch_send_size_bytes metrics, showing the size of telemetry batches from the exporter. (#12894)

API Changelog

🛑 Breaking changes 🛑

  • pdata/pprofile: Remove deprecated AddAttribute method (#13764)

💡 Enhancements 💡

  • configmiddleware: Stabilize configmiddleware module (#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)
v0.134.0 Bug fix
Notable features
  • `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: Respect num_consumers when 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)
v0.133.0 Breaking risk
⚠ Upgrade required
  • 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
Breaking changes
  • Increase minimum Go version to 1.24 for all components
  • Set default transport type of configgrpc to "tcp"
Notable features
  • 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: Add profiles_endpoint configuration option to allow custom endpoint for profiles data export (#13504)
    The profiles_endpoint configuration follows the same pattern as traces_endpoint, metrics_endpoint, and logs_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 new otelcol_receiver_failed_x and otelcol_receiver_requests metrics (#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 the receiverhelper.newReceiverMetrics feature 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.Optional now implements xconfmap.Validator
  • batchprocessor: 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: Set tcp as 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.Optional now implements xconfmap.Validator
v0.132.0 Breaking risk
Breaking changes
  • `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 of generated_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: The telemetry.disableHighCardinalityMetrics feature 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: Remove GetFactory from the host returned by NewNopHost (#13577)
    This method is no longer part of the component.Host interface.

💡 Enhancements 💡

  • exporterhelper: Provide an interface queue_batch.Setting.MergeCtx so 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)

v0.131.0 Breaking risk
Breaking changes
  • `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: Move confighttp.framedSnappy feature gate to beta. (#10584)

💡 Enhancements 💡

  • exporter/debug: Move to alpha stability except profiles (#13487)

  • exporterhelper: Enable exporter.PersistRequestContext feature 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 Prometheus
  • service: Revert Default internal metrics config now enables otel_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 of DIST_* environment variables replacements (#13335)

API Changelog

🛑 Breaking changes 🛑

  • configgrpc: Update optional fields to use configoptional.Optional field for optional values. (#13252, #13364)
    Specifically, the following fields have been updated to configoptional:

    • KeepaliveServerConfig.ServerParameters (KeepaliveServerParameters type)
    • KeepaliveServerConfig.EnforcementPolicy (KeepaliveEnforcementPolicy type)
  • 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
    Consume method 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 the outcome of a component call. This wrapper is not intended to
    be used by components directly.

  • pdata/pprofile: Introduce Equal method on the Function type (#13222)

  • pdata/pprofile: Introduce Equal method on the Link type (#13223)

  • pdata/pprofile: Add new helper method SetFunction to set a new function on a line. (#13222)

  • pdata/pprofile: Add new helper method SetLink to set a new link on a sample. (#13223)

  • pdata/pprofile: Add new helper method SetString to set or retrieve the index of a value in the StringTable. (#13225)

v0.130.1 Bug fix

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 configure service::telemetry::metrics::readers with Prometheus. (#13449)
    See more details on https://github.com/open-telemetry/opentelemetry-go/issues/7039

API Changelog

v0.130.0 Breaking risk
Breaking changes
  • Removed deprecated `exporter/otlp` batcher config; use queuebatch instead.
  • Default internal metrics configuration now enables `otel_scope_` labels (removes previous `without_scope_info: true`).
Notable features
  • 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__total instead of otelcol_exporter_sent_spans_total. The workaround is to manually configure without_units: true in your internal telemetry Prometheus exporter config

    service:
      telemetry:
        metrics:
          readers:
            - pull:
                exporter:
                  prometheus:
                    host: 0.0.0.0
                    port: 8888
                    without_units: true
    

    If 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: Replaced sigs.k8s.io/yaml with go.yaml.in/yaml for 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 in metric_batch.go could
    cause the name field of some metrics to disappear. This fix ensures that all metric fields are
    properly preserved when metricRequest objects are split.

  • service: Default internal metrics config now enables otel_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, and otel_scope_version labels 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 use configoptional.Optional field for optional values. (#13250, #13252)
    Components using configgrpc package 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: Add Error type (#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)

v0.129.0 Breaking risk
Breaking changes
  • 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 the go list stderr output on failures, and to run go list where the metadata file is. (#13205)

  • service: Support setting sampler and limits under service::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 methods FromLocationIndices and PutLocation to 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.PersistRequestContext to 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 of NewDefault*Config functions 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: Introduce Equal method on the Mapping type (#13197)
  • configoptional: Make unmarshaling into None[T] work the same as unmarshaling into (*T)(nil). (#13168)
  • configoptional: Add a confmap.Marshaler implementation for configoptional.Optional (#13196)
  • pdata/pprofile: Introduce Equal methods on the Line and Location types (#13150)
  • pdata/pprofile: Add new helper method SetMapping to set a new mapping on a location. (#13197)

🧰 Bug fixes 🧰

  • confmap: Distinguish between empty and nil values when marshaling confmap.Conf structs. (#13196)
v0.128.0 Breaking risk
Breaking changes
  • 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
Notable features
  • 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 field cookies in confighttp.ClientConfig (#13116)
  • otlpreceiver: Use configoptional.Optional to define optional configuration sections in the OTLP receiver. Remove Unmarshal method. (#13119)
  • confighttp,configgrpc: Rename ClientConfig.TLSSetting and ServerConfig.TLSSetting to ClientConfig.TLS and ServerConfig.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: Introduce MoveAndAppendTo methods to the generated primitive slices (#13074)
  • pdata: Upgrade the OTLP protobuf definitions to version 1.7.0 (#13075)

🧰 Bug fixes 🧰

  • confmap: Correctly distinguish between nil and empty map values on the ToStringMap method (#13161)
    This means that ToStringMap() method can now return a nil map if the original value was nil.
    If you were not doing so already, make sure to check for nil before writing to the map to avoid panics.

  • confighttp: Make the NewDefaultServerConfig function return a nil TLS config by default. (#13129)

    • The previous default was a TLS config with no certificates, which would fail at runtime.

Beta — feedback welcome: [email protected]