Skip to content

Releases: open-telemetry/opentelemetry-collector

v1.70.0/v0.164.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 14:54
v0.164.0
f532e15

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.164.0

End User Changelog

💡 Enhancements 💡

  • cmd/mdatagen: Add support for supported_platforms in component metadata, allowing generated component tests to target explicitly supported platforms (#13319)

🧰 Bug fixes 🧰

  • cmd/mdatagen: Fix the generated dataPointKey function triggering gosec G115 (uint64 to int64 conversion) in components that use mdatagen. (#16176)
    The generated hash values are unchanged.

  • exporter/otlp_http: Report the URL the request was actually sent to in HTTP status error messages when a middleware rewrites the request URL. (#14673)
    Middleware RoundTrippers that clone the request before rewriting its URL left
    the configured placeholder URL in 4xx/5xx error messages. The exporter now
    reads the destination from the response instead.

  • pkg/otelcol: Redact non-empty literal defaults in unexpanded env provider references such as ${env:NAME:-literal} in the raw config reported by the OpAMP extension when reports_raw_config is enabled (#16141)
    Empty defaults such as ${env:NAME:-} stay visible. Other provider schemes are unchanged.

API Changelog

💡 Enhancements 💡

  • pkg/xpdata: Add xhash.WithUint64 to hash a uint64 value without converting it to int64. (#16176)
    It produces the same hash as xhash.WithValue(pcommon.NewValueInt(int64(v))).

🧰 Bug fixes 🧰

  • pkg/exporterhelper: Expose PartitionConfig and NewDefaultPartitionConfig so that users can modify it. (#16197)

v1.69.0/v0.163.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 02:03
v0.163.0
5177a6a

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.163.0

End User Changelog

💡 Enhancements 💡

  • cmd/builder: Add dist.resource.detection.detectors to the builder config, letting distributions opt into a smaller set of resourcedetectionprocessor detectors via generated go build tags. (#16075)
  • cmd/mdatagen: Generate exporter queue/batch sender defaults from an opt-in sending_queue field in metadata.yaml. See the batching migration RFC. (#15963)
    Declaring sending_queue is opt-in; an exporter that omits it is unaffected until it explicitly opts in one at a time during Phase 2 of the migration. Set MDATAGEN_SENDING_QUEUE_OPT_OUT=true to generate the standard default for every undeclared exporter while auditing a whole repository.
  • pkg/pprofile: Implement Profiles development-version metadata in the OTLP receiver and exporters. (#16147, #16009)
    The receiver rejects malformed, repeated, or unsupported versions before decoding.
    OTLP exporters send the version associated with their compiled-in Profiles schema.
    The version is not configurable, and existing clients without metadata identify
    the initial development version.

🧰 Bug fixes 🧰

  • cmd/mdatagen: Replace the O(n) scan in generated recordDataPoint with an O(1) hash lookup, fixing an O(n²) cost per scrape when many data points land on one resource. (#15912)

  • cmd/mdatagen: When both migration gates are enabled, only the latest metric with its v1 attributes is emitted (legacy attributes are no longer included). (#15979)

  • pkg/exporterhelper: Fix sending queue deadlocks when blocked offers are cancelled with block_on_overflow enabled. (#15700)

  • pkg/exporterhelper: Drop only the oversized profile when splitting a profiles batch, instead of discarding every profile queued behind it (#16087)
    Same fix as

  • pkg/exporterhelper: Drop only the oversized span when splitting a traces batch, instead of discarding every span queued behind it (#16087)
    Same fix as

  • pkg/pprofile: Use the profiles dictionary for resource and scope attribute strings sent over OTLP/gRPC. (#15861)
    The OTLP/gRPC profiles client now interns attribute strings before transmission, matching the OTLP/HTTP path. The server resolves the references before exposing pdata to consumers.

  • pkg/xpdata: Fix xhash producing the same hash for different maps by length-prefixing keys, strings and bytes. (#16048)
    All hash values produced by xhash change.

API Changelog

💡 Enhancements 💡

  • pkg/component: Document compatibility guidelines for adding fields to public structs in the component interface RFC. (#16069)
  • pkg/pprofile: Implement Profiles development-version metadata in the OTLP receiver and exporters. (#16147, #16009)
    The receiver rejects malformed, repeated, or unsupported versions before decoding.
    OTLP exporters send the version associated with their compiled-in Profiles schema.
    The version is not configurable, and existing clients without metadata identify
    the initial development version.

🧰 Bug fixes 🧰

  • pkg/otelcol: Redact config opaque MapList values in unexpanded configuration snapshots (#15980)

v1.68.0/v0.162.0

Choose a tag to compare

@dmathieu dmathieu released this 28 Sep 14:09
v0.162.0
62cdad2

End-user changelog

🛑 Breaking changes 🛑

  • cmd/mdatagen: Generated processor lifecycle tests now assert that the processor propagates the incoming context unchanged to the next consumer by default. (#15994)
    Disable with skip_context_propagation: true

  • processor/queue_batch: Rename queuebatch processor to queue_batch processor. (#14396)

💡 Enhancements 💡

  • extension/memory_limiter: Add otelcol_memorylimiter_refused_requests metric to record network request refusals in extension mode. (#15561)

  • pkg/confighttp: Enable keepalive configuration by default. (#16026)
    Introduces the feature gate pkg.confighttp.PrioritizeNewKeepalive. When disabled, this flag
    restores the old behaviour of removing the keepalive configuration in favour
    of the deprecated fields IdleConnTimeout, MaxIdleConns, MaxIdleConnsPerHost,
    DisableKeepAlives when the flag is disabled.

  • pkg/exporterhelper: Make the partition idle timeout configurable via batch::partition::idle_timeout and raise the default to 90s. (#15894)

  • pkg/exporterhelper: Make the multi-batcher partition LRU cache size configurable and export cache size metrics. (#14526)
    Adds sending_queue::batch::partition::cache_size (default 10000) to cap the
    number of active partition batchers. The value
    must be positive. Current size and configured capacity are exported as
    otelcol_exporter_queue_batch_partition_cache_size
    and otelcol_exporter_queue_batch_partition_cache_capacity.

  • pkg/pprofile: Speed up profiles dictionary merging during exporter-queue batching by replacing the linear-scan dedup in switchDictionary with an indexed lookup, reducing per-merge cost from O(N*L^2) to O(N+L). (#15544)
    No behavior change: merged dictionary contents and remapped indices are identical to before.

  • pkg/receiverhelper: Stop allocating a span link that is always discarded when a long-lived-context receiver starts an operation without a parent span context. (#15998)
    Receivers created with LongLivedCtx: true no longer build a trace.Link when the
    long-lived context carries no valid span context. The SDK already discarded such a link,
    so behaviour is unchanged. This removes 3 of 7 allocations per receive operation.

  • pkg/xpdata: Reduce the time xhash.MapHash takes for maps with many entries. (#15990)

🧰 Bug fixes 🧰

  • exporter/debug: Support known sync error handling on AIX (#15924)
    Enable the debug exporter to handle known synchronous errors on AIX.

  • pkg/exporterhelper: Drop only the oversized item when splitting a batch, instead of discarding every item queued behind it (#15936)
    Applied to logs only for now

  • pkg/exporterhelper: Add exporter and data_type attributes to exporter/enqueue spans. (#16022)

  • receiver/otlp: Error handler preserves the HTTP status code when the request Content-Type is not one a Status can be encoded in (#15995)
    Extends the fix in #13414, which handled a missing Content-Type. A Content-Type that was
    present but unsupported, or malformed, still fell through to
    500 {"code": 13, "message": "failed to marshal error message"}, reporting client errors
    such as 401 from a server auth extension or 400 from an unsupported Content-Encoding as
    server faults.

v1.67.0/v0.161.0

🛑 Breaking changes 🛑

  • pkg/pprofile: Remove deprecated AggregationTemporality, Duration, SetDuration (#15855)
  • pkg/scraperhelper/controller: Remove deprecated AddScraper func (#15934)
  • pkg/service: Remove deprecated ZapOptions (#15935)
  • pkg/xconfmap: Remove deprecated WithForceUnmarshaler func (#15932)

💡 Enhancements 💡

  • pkg/pdata: avoid allocations in WriteInt64 and WriteUint64 (#15629)

🧰 Bug fixes 🧰

  • cmd/schemagen: Accept components written without a configuration body in the generated Collector configuration schema (#15728)

  • pkg/confmap: Fix bug where an escaped URI appearing before a valid URI prevented the subsequent URI from being expanded. (#15867)
    URI scanning now continues after an escaped URI while preserving the escaped expression as literal text.

  • pkg/featuregate: Reject feature gate IDs with an empty dot-separated segment (leading, trailing, or consecutive dots), e.g. .foo, foo., foo..bar. (#15676)

  • pkg/pprofile: Stop erasing inline attribute keys when key_strindex is unset, and clear key_strindex once it is resolved. (#15793)

  • pkg/pprofile: Reference resource and scope attribute strings via the ProfilesDictionary string table when marshaling and unmarshaling OTLP profiles export requests. (#15792)

  • pkg/scraperhelper: Fix shutdown being delayed by extra scrapes when a scrape runs longer than the collection interval (#15736)
    If a scrape was still running when the next tick fired, the pending tick and the shutdown
    signal could both be ready when it finished and the controller chose between them at random.

API changelog

💡 Enhancements 💡

  • cmd/mdatagen: Allow config metadata authors to choose configoptional.Some or configoptional.Default for generated optional fields (#15977)
    Set go_struct.optional_mode: default to generate an optional object configuration
    section with a fallback default while keeping it absent until configured. Omitting
    optional_mode preserves the existing configoptional.Some behavior.

  • pkg/config/configgrpc: Migrate core types of common settings for a gRPC client to schema-based configuration generated by mdatagen. (#15967)

  • pkg/exporterhelper: Add NewDefaultBatchConfig to build a BatchConfig with default values, including the partition cache_size and idle_timeout defaults. (#14526, #15894)

  • pkg/exporterhelper: Make the partition idle timeout configurable via batch::partition::idle_timeout and raise the default to 90s. (#15894)

  • pkg/exporterhelper: Make the multi-batcher partition LRU cache size configurable and export cache size metrics. (#14526)
    Adds sending_queue::batch::partition::cache_size (default 10000) to cap the
    number of active partition batchers. The value
    must be positive. Current size and configured capacity are exported as
    otelcol_exporter_queue_batch_partition_cache_size
    and otelcol_exporter_queue_batch_partition_cache_capacity.

  • pkg/xpdata: Move pdata hash APIs from the contrib repo (#15914)

🧰 Bug fixes 🧰

  • cmd/schemagen: Fix RefResolver mutating shared, cached type definitions with per-occurrence annotations, which caused generated schemas to have incorrect (and run-to-run nondeterministic) description/x-optional/x-pointer values whenever multiple fields referenced the same type. (#15984)
  • pkg/pdata: Fix pcommon.Value.CopyTo to deep-copy ValueTypeBytes values instead of sharing the backing array (#15621)
    The bytes oneof field in CopyAnyValue was assigned directly, so the copy and source shared the same []byte.
    This also affected Map.CopyTo and Slice.CopyTo, which delegate to CopyAnyValue.

v1.67.0/v0.161.0

Choose a tag to compare

@codeboten codeboten released this 14 Sep 22:49
v0.161.0
0bf928a

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.161.0

End User Changelog

🛑 Breaking changes 🛑

  • pkg/pprofile: Remove deprecated AggregationTemporality, Duration, SetDuration (#15855)
  • pkg/scraperhelper/controller: Remove deprecated AddScraper func (#15934)
  • pkg/service: Remove deprecated ZapOptions (#15935)
  • pkg/xconfmap: Remove deprecated WithForceUnmarshaler func (#15932)

💡 Enhancements 💡

  • pkg/pdata: avoid allocations in WriteInt64 and WriteUint64 (#15629)

🧰 Bug fixes 🧰

  • cmd/schemagen: Accept components written without a configuration body in the generated Collector configuration schema (#15728)

  • pkg/confmap: Fix bug where an escaped URI appearing before a valid URI prevented the subsequent URI from being expanded. (#15867)
    URI scanning now continues after an escaped URI while preserving the escaped expression as literal text.

  • pkg/featuregate: Reject feature gate IDs with an empty dot-separated segment (leading, trailing, or consecutive dots), e.g. .foo, foo., foo..bar. (#15676)

  • pkg/pprofile: Stop erasing inline attribute keys when key_strindex is unset, and clear key_strindex once it is resolved. (#15793)

  • pkg/pprofile: Reference resource and scope attribute strings via the ProfilesDictionary string table when marshaling and unmarshaling OTLP profiles export requests. (#15792)

  • pkg/scraperhelper: Fix shutdown being delayed by extra scrapes when a scrape runs longer than the collection interval (#15736)
    If a scrape was still running when the next tick fired, the pending tick and the shutdown
    signal could both be ready when it finished and the controller chose between them at random.

API Changelog

🛑 Breaking changes 🛑

  • cmd/mdatagen: remove deprecated func DefaultMetricsBuilderConfig (#15854)

  • pkg/service: Remove the deprecated extensioncapabilities.ConfigWatcher interface, Extensions.NotifyConfig, and service.Settings.CollectorConf. (#15399)
    These were deprecated in v0.155.0. Use ConfigSnapshotWatcher, NotifyConfigSnapshot, and
    Settings.ConfigSnapshot instead.

  • pkg/service: Remove deprecated config option LoggingOptions (#15919)

💡 Enhancements 💡

  • pkg/config/confignet: Migrate network core types to schema-based configuration generated by mdatagen. (#15706)

🧰 Bug fixes 🧰

  • pkg/configoptional: Properly marshal and unmarshal encoding.TextMarshaler/encoding.TextUnmarshaler types (#15636)
  • pkg/featuregate: Reject feature gate IDs with an empty dot-separated segment (leading, trailing, or consecutive dots), e.g. .foo, foo., foo..bar. (#15676)

v1.66.0/v0.160.0

Choose a tag to compare

@dmitryax dmitryax released this 02 Sep 14:38
v0.160.0
cd3455c

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.160.0

End User Changelog

🚩 Deprecations 🚩

  • pkg/confighttp: Deprecate flat keepalive fields in client and server config in favor of the new keepalive section. (#14020)
    The following client configuration fields are deprecated in favor of the keepalive section:
    • idle_conn_timeout -> keepalive::idle_conn_timeout
    • max_idle_conns -> keepalive::max_idle_conns
    • max_idle_conns_per_host -> keepalive::max_idle_conns_per_host
    • disable_keep_alives: true -> keepalive::enabled: false
      The following server configuration fields are deprecated in favor of the keepalive section:
    • idle_timeout -> keepalive::idle_timeout
    • keep_alives_enabled: false -> keepalive::enabled: false
      Deprecated fields set in the configuration keep working exactly as before and produce a
      deprecation warning when the client or server is created. Setting deprecated fields together
      with the new keepalive section is an error.
      Code migrating off the deprecated fields can use the new NewDefaultKeepaliveClientConfig
      and NewDefaultKeepaliveServerConfig functions to build a keepalive section with the
      default values.

💡 Enhancements 💡

  • all: Bump go version in all go.mod to 1.26.0, drop support on 1.25.0 (#15799)

  • all: Declare windows/amd64 tier 1 and windows/arm64 tier 2 support (#15786)

  • pkg/confmap: Remove dead isStringyStructure helper (unused since (#12793)
    This is an internal, unexported code path with no user-facing behavior change.

  • pkg/exporterhelper: Cache the request size per sizer type so byte-sized batching no longer recomputes the serialized proto size of the whole accumulated batch on every consumed request. (#12636)
    With sizer: bytes, the batcher's MinSize check called BytesSize(), which
    ignored the cached size and re-walked the entire batch's protobuf on every
    consumed request, making accumulation O(n^2) in the number of merged requests.
    The size is now cached separately for the bytes and items dimensions and
    maintained incrementally during merge/split, so the check is O(1). A single
    untyped cache could not be reused safely because the batcher and the queue may
    ask for different sizer types on the same request.

  • processor/memory_limiter: Only report memory limiter component health status when the health state changes. (#15751)

🧰 Bug fixes 🧰

  • cmd/mdatagen: Allow underscores in feature gate IDs for compatibility with component names with underscores (#15592)

  • pkg/pprofile: add bounds checks to FromLocationIndices and switchDictionary (#15697)
    FromLocationIndices now returns an error instead of panicking on an out-of-range or
    negative location index, mirroring FromAttributeIndices.
    The index checks used when merging profiles now also reject negative indices. These
    were previously reachable with a negative index decoded from an OTLP payload, which
    panicked the collector via Profiles.MergeTo.

  • pkg/service: Route OpenTelemetry SDK-internal errors (e.g. failed metric/log/trace exports) through the collector's configured logger instead of the OTel SDK's default global error handler, which always printed to stderr via log.Print regardless of the configured log encoding. (#12378)

API Changelog

🛑 Breaking changes 🛑

  • pkg/service: telemetry.Factory.CreateResource and telemetry.CreateResourceFunc now return (pcommon.Resource, string, error) instead of (pcommon.Resource, error) to expose the resource's schema URL. (#15129)
    The telemetry.Factory interface is experimental and cannot be implemented
    externally (it has an unexported method). Callers using
    telemetry.WithCreateResource must update the function signature to return
    a third string value for the schema URL.

🚩 Deprecations 🚩

  • pkg/confighttp: Deprecate flat keepalive fields in client and server config in favor of the new keepalive section. (#14020)
    The following client configuration fields are deprecated in favor of the keepalive section:
    • idle_conn_timeout -> keepalive::idle_conn_timeout
    • max_idle_conns -> keepalive::max_idle_conns
    • max_idle_conns_per_host -> keepalive::max_idle_conns_per_host
    • disable_keep_alives: true -> keepalive::enabled: false
      The following server configuration fields are deprecated in favor of the keepalive section:
    • idle_timeout -> keepalive::idle_timeout
    • keep_alives_enabled: false -> keepalive::enabled: false
      Deprecated fields set in the configuration keep working exactly as before and produce a
      deprecation warning when the client or server is created. Setting deprecated fields together
      with the new keepalive section is an error.
      Code migrating off the deprecated fields can use the new NewDefaultKeepaliveClientConfig
      and NewDefaultKeepaliveServerConfig functions to build a keepalive section with the
      default values.

💡 Enhancements 💡

  • pkg/component: Add ResourceSchemaURL field to component.TelemetrySettings to expose the collector resource's schema URL to components. (#15129)
  • pkg/exporterhelper: Migrate TimeoutConfig to schema-based configuration generated by mdatagen. (#15505)

🧰 Bug fixes 🧰

  • pkg/pprofile: add bounds checks to FromLocationIndices and switchDictionary (#15697)
    FromLocationIndices now returns an error instead of panicking on an out-of-range or
    negative location index, mirroring FromAttributeIndices.
    The index checks used when merging profiles now also reject negative indices. These
    were previously reachable with a negative index decoded from an OTLP payload, which
    panicked the collector via Profiles.MergeTo.

v1.65.0/v0.159.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 17:37
v0.159.0
69c0873

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.159.0

End User Changelog

💡 Enhancements 💡

  • pkg/exporterhelper: Add the pkg.exporterhelper.queueBatchEnabled feature gate (#14038, #13582, #12022)
    When enabled, the batch settings returned by NewDefaultQueueConfig() have
    batch::enabled true. See migration RFC.

🧰 Bug fixes 🧰

  • pkg/exporterhelper: Record otelcol_exporter_queue_batch_send_size and otelcol_exporter_queue_batch_send_size_bytes after batching, and add otelcol_exporter_enqueue_size and otelcol_exporter_enqueue_size_bytes for enqueue-time sizes. (#14674)
    Previously the batch send size histograms were recorded at enqueue time (Offer), so they
    measured incoming request sizes rather than the post-batching request handed to the
    downstream sender. Those histograms are now recorded in the obs report sender.
    The previous enqueue-time measurements are preserved under the new
    otelcol_exporter_enqueue_size and otelcol_exporter_enqueue_size_bytes metrics for
    queue sizing. Users with the exporter batcher enabled will observe different values for
    otelcol_exporter_queue_batch_send_size*.
    otelcol_exporter_queue_batch_send_size and otelcol_exporter_queue_batch_send_size_bytes
    are now only recorded when sending_queue::batch is configured; they will not appear at all
    for exporters that do not enable batching.

  • pkg/scraperhelper: Use {record} instead of {datapoint} as the unit of the log record and profile record scraper metrics (#15730)
    Affects otelcol_scraper_scraped_log_records, otelcol_scraper_errored_log_records,
    otelcol_scraper_scraped_profile_records and otelcol_scraper_errored_profile_records.

API Changelog

🛑 Breaking changes 🛑

  • extension/zpages: Make confighttp.ServerConfig a named field of Config instead of an embedded one. (#15308)
  • pkg/confighttp: Make configauth.Config a named field of AuthConfig instead of an embedded one. (#15308)

💡 Enhancements 💡

  • pkg/config/configretry: Migrate BackOffConfig to schema-based configuration generated by mdatagen. (#15502)
  • pkg/config/configtls: Migrate TLS core types to schema-based configuration generated by mdatagen. (#15693)

v1.64.0/v0.158.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 13:44
v0.158.0
0378e9a

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.158.0

End User Changelog

🚀 New components 🚀

  • processor/queuebatch: New queuebatchprocessor to replace the legacy batchprocessor. (#15047, #13582, #12022, #11308, #8272, #6046)
    New implementation is based exporterhelper, uses same configuration as sending_queue.

💡 Enhancements 💡

  • cmd/mdatagen: Add first-class extended type aliases (int64, duration, opaque_string, id, opaque_map, etc.) to config schemas in metadata.yaml (#15513)
    Authors can now write type: int64, type: duration, type: opaque_string, type: id, or
    type: opaque_map directly as a property type in the config: section of metadata.yaml.
    Each alias expands to the correct JSON Schema representation and Go type automatically.
    Existing uses of standard JSON Schema types, format:, and x-customType: remain supported
    without migration.

  • extension/memory_limiter: Promote the memory limiter extension to beta stability. (#14533)

🧰 Bug fixes 🧰

  • cmd/mdatagen: Removes the extra line in the documentation.md around description (#15664)

  • cmd/mdatagen: Auto-enable v1 metrics when legacy metric is enabled and v1 feature gate is on (#15650)
    When the v1 feature gate is enabled and a legacy metric is enabled, the corresponding
    v1 metric is now programmatically enabled so users don't need to add the v1 metric
    to their config.

  • cmd/mdatagen: Fix incorrect collision warning for versioned metrics with different emitted names (#15648)
    Same name collision detection (type/attribute checks) was being used for versioned metrics
    with different names. This caused the legacy metric to be disabled which was incorrect and also
    a warning msg was being incorrectly logged that stated the metrics had the same name when in
    fact they had different names.

  • cmd/mdatagen: Versioned metrics don't handle renamed attributes with same type (#15595)
    Versioned metrics need to support emitting legacy and latest attributes when the metric name is the same but the
    attributes names differ. This was not working when the attributes name changed but the type remained the same.
    Here we add support to versioned metrics with renamed attributes where those attributes have the same type.

  • exporter/debug: Fix profile sample attribute formatting for non-string values (#15647)
    Previously, non-string values produced malformed output such as %!s(int64=42).
    Profile sample attributes now use the debug exporter's typed attribute format, such as Int(42).
    This will also change strings from hello-world to Str(hello-world).

  • pkg/config/configtls: Fix goroutine and file descriptor leak when client_ca_file_reload is enabled (#9221)
    Every call to ServerConfig.LoadTLSConfig with client_ca_file_reload enabled started a
    file watcher goroutine that could never be stopped, since the reloader was not reachable
    from the returned *tls.Config. The client CA file is now checked for changes while TLS
    handshakes are served, at most once per second, matching how reload_interval already
    reloads the server certificate. No background goroutine is started, so nothing is left
    behind when a server is torn down and recreated.

API Changelog

🛑 Breaking changes 🛑

  • pkg/xconfmap: Remove Validator and Validate (#15613)
    Use the equivalent symbols in confmap instead.

💡 Enhancements 💡

  • cmd/mdatagen: Add first-class extended type aliases (int64, duration, opaque_string, id, opaque_map, etc.) to config schemas in metadata.yaml (#15513)
    Authors can now write type: int64, type: duration, type: opaque_string, type: id, or
    type: opaque_map directly as a property type in the config: section of metadata.yaml.
    Each alias expands to the correct JSON Schema representation and Go type automatically.
    Existing uses of standard JSON Schema types, format:, and x-customType: remain supported
    without migration.

  • pkg/config/configgrpc: Mark configgrpc as stable (#9477)

v1.63.0/v0.157.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 12:38
4908404

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.157.0

End User Changelog

🛑 Breaking changes 🛑

  • pkg/exporterhelper: Replace histogram bucket boundaries for otelcol_exporter_queue_batch_send_size_bytes and otelcol_processor_batch_batch_send_size_bytes with a power-of-2 byte-scale set spanning 128 B to 16 MiB. (#15535)
    The previous boundaries included many small sub-kilobyte buckets that were not useful for byte-scale
    payloads, and otelcol_exporter_queue_batch_send_size_bytes topped out at 6000 bytes so nearly all
    observations fell into the +Inf overflow bucket. The new boundaries are powers of two from 128 B
    to 16777216 (16 MiB), giving a meaningful distribution for real batch payload sizes (including small
    timeout-flushed batches) and keeping the two
    metrics directly comparable on the same dashboards. Dashboards or alerts that hard-code specific le
    values for these histograms will need to be updated.

  • processor/batch: Replace histogram bucket boundaries for otelcol_processor_batch_batch_send_size_bytes with a power-of-2 byte-scale set spanning 128 B to 16 MiB. (#15535)
    The previous boundaries included many small sub-kilobyte buckets that were not useful for byte-scale
    payloads. The new boundaries are powers of two from 128 B to 16777216 (16 MiB), giving a meaningful
    distribution for real batch payload sizes (including small timeout-flushed batches) and keeping the
    metric directly comparable with
    otelcol_exporter_queue_batch_send_size_bytes on the same dashboards. Dashboards or alerts that
    hard-code specific le values for this histogram will need to be updated.

💡 Enhancements 💡

  • all: Bootstrap config.schema.yaml for core components (debug/otlp/otlphttp exporters, otlp receiver, batch/memory_limiter processors, memory_limiter/zpages extensions). Implements Phase 1 of the component configuration schema roadmap RFC. (#14543)
    Schemas are generated using the schemagen tool from opentelemetry-collector-contrib and hand-tuned to capture
    validation rules and references to shared library schemas (confighttp, configgrpc, configretry, exporterhelper,
    etc.). A .schemagen.yaml settings file and a generate-schemas Makefile target are added so the schemas can
    be regenerated reproducibly.

  • pkg/service: Apply experimental service::telemetry::resource::detection/development resource detection to the Collector's internal telemetry resource. (#14311)
    This follows the OpenTelemetry configuration schema by treating
    service::telemetry::resource::detection/development::detectors as detector selection.
    Currently supported detector entries are container, host, process, and service.
    See the OpenTelemetry Configuration Go support table and search for
    ExperimentalResourceDetector for current detector support:
    https://github.com/open-telemetry/opentelemetry-configuration/blob/main/language-support-status.md#go

    Example:

    service:
      telemetry:
        resource:
          attributes:
            - name: foo
              value: bar
          detection/development:
            detectors:
              - host: {}
  • pkg/service: Add service.partialReload feature gate (Alpha) and service.partialReloadReceivers feature gate (Beta) that together restart only receivers on config reload when non-receiver config sections are unchanged, avoiding unnecessary disruption to processors, exporters, and extensions. Enable with --feature-gates=service.partialReload. (#5966)

🧰 Bug fixes 🧰

  • exporter/debug: Fix the scope index printed by the normal verbosity marshaler; each scope was labelled with its parent resource's index instead of its own position (#15541)
    Affected all four signals (logs, traces, metrics, profiles) — e.g. the second scope under a resource printed #0 instead of #1.

  • pkg/config/configgrpc: Fix WaitForReady option not being applied to gRPC client connections. (#15615)

  • pkg/featuregate: Fix panic when a --feature-gates value contains an empty comma-separated element (e.g. --feature-gates=alpha,) (#15536)
    An empty identifier now produces a returned error instead of an index-out-of-range panic during flag parsing.

  • pkg/service: Fix collector startup panic when a resource detector emits a slice-valued attribute (e.g. the process detector's process.command_args) (#15571)
    createResource passed the OTel SDK attribute value straight into pcommon.Value.FromRaw, which
    only accepts []any for slices, so any string, int, float, or bool slice resource attribute produced
    an <Invalid value type> error and aborted service.New. Slice-typed attributes are now converted
    element-wise.

  • pkg/service: Record status events reported by extensions (#15557)

API Changelog

🛑 Breaking changes 🛑

  • pkg/config/configgrpc: Remove the BalancerName function (#9477)
    Use the DefaultBalancerName constant instead.

🚩 Deprecations 🚩

  • pkg/xconfmap: Deprecate WithForceUnmarshaler option. (#15614)
    Use confmap.WithForceUnmarshaler instead.

🚀 New components 🚀

  • pkg/config/configstorage: Add a new configstorage module to support storage configuration fields. (#5832)

💡 Enhancements 💡

  • pkg/confmap: Add WithForceUnmarshaler option. (#15614)
    This option allows forcing the top-level Unmarshal method even if the Conf is
    already a parameter from an Unmarshal method. See the Godoc for more details.

v1.62.0/v0.156.0

Choose a tag to compare

@github-actions github-actions released this 07 Jul 07:29
v0.156.0
0a6056f

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.156.0

End User Changelog

💡 Enhancements 💡

  • cmd/mdatagen: Add support for defining stability levels for resource attributes (#15312)
  • cmd/mdatagen: Add semantic convention reference to resource attributes (#15313)
  • processor/memory_limiter: Adding health events for the memorylimiter (#14700)
    Publish health event from memorylimiter using componentstatus.ReportStatus

🧰 Bug fixes 🧰

  • cmd/mdatagen: Removes the extra line in the documentation.md between extended description and table (#15458)

  • exporter/otlp_http: Treat errors parsing successful (2xx) HTTP response bodies as permanent errors to prevent retrying already-accepted data. (#15386)
    When a server returns a 2xx status but the response body exceeds the 64kB read limit,
    the body is truncated and proto unmarshaling fails. Previously this was treated as a
    retryable error, causing duplicate data to be exported. Now it is marked as a permanent
    error so the retry logic will not re-send data that was already accepted by the server.

  • pkg/config/configretry: Always validate BackOffConfig fields regardless of the Enabled flag. (#15437)

  • pkg/service: Ensure receivers always start after all other components (#15495)
    There was previously a race condition where multiple receivers using a shared internal implementation,
    such as the OTLP receiver, could start sending telemetry into a pipeline before all its components had fully started.

  • processor/memory_limiter: Fix degenerate collector performance when exporter has problems causing permanent CPU-burning GC loop (#4981)
    Forced GC runs now use exponential backoff when deemed ineffective
    (still above soft limit and less than 5% reclaimed) to avoid preventing
    recovery by overloading CPU with excessive GC runs. The cap on the
    backoff interval is exposed via max_gc_interval_when_soft_limited and
    max_gc_interval_when_hard_limited (both default 30s); set either to
    0 to disable backoff on that path.

  • provider/env: Fix empty env var default resolving to nil instead of empty string (#14587)
    When using ${env:VAR:-} with an unset variable, the empty default now correctly
    resolves to an empty string instead of nil.

API Changelog

🛑 Breaking changes 🛑

  • pkg/pprofile: add bounds checks to FromAttributeIndices (#15517)

💡 Enhancements 💡

  • cmd/mdatagen: Add field_name field to go_struct config in metadata.yaml to allow customizing the Go struct field name for generated config properties. (#15486)
  • cmd/mdatagen: Handle enum validators in generated config structs (#14805)
    Supported validators include enum.
  • cmd/mdatagen: Generate named Go types for primitive exported config schemas. (#15487)
    Primitive exported configs for string, integer, number, and boolean schemas now produce distinct exported types while default values and validation remain on referencing fields.

🧰 Bug fixes 🧰

  • pkg/pprofile: fix wrong error sentinel in SetString (#15511)

v1.61.0/v0.155.0

Choose a tag to compare

@github-actions github-actions released this 23 Jun 16:56
v0.155.0
41da2fb

Images and binaries here: https://github.com/open-telemetry/opentelemetry-collector-releases/releases/tag/v0.155.0

End User Changelog

🛑 Breaking changes 🛑

  • pkg/confighttp: Remove stabilized gate confighttp.framedSnappy (#15420)
  • pkg/configoptional: Remove stabilized gate configoptional.AddEnabledField. (#15421)
  • pkg/confmap: Remove stabilized featuregate confmap.newExpandedValueSanitizer (#15418)
  • pkg/exporterhelper: Remove stable gate exporter.PersistRequestContext. (#15424)
  • pkg/otelcol: Remove stable gate otelcol.printInitialConfig (#15425)
  • pkg/service: Remove stable featuregate telemetry.UseLocalHostAsDefaultMetricsAddress (#15419)
  • pkg/xpdata: Remove stable gate pdata.enableRefCounting. (#15426)
  • processor/memory_limiter: Rename deprecated memory limiter metrics to include the memory_limiter prefix (e.g. otelcol_processor_memory_limiter_*) to clarify they are specific to this processor. (#11203)

🚀 New components 🚀

  • cmd/schemagen: Move the schemagen CLI from opentelemetry-collector-contrib to this repository as cmd/schemagen. (#14543)
    The tool's source is identical to the upstream contrib version
    (github.com/open-telemetry/opentelemetry-collector-contrib/cmd/schemagen) except for the module path and
    the test fixtures' namespace, which now reflect the collector module
    (go.opentelemetry.io/collector/cmd/schemagen). A contrib-only integration test that pointed at three
    contrib components is removed; contrib's existing make generate-schemas + git-diff CI continues to
    exercise the FactoryMaps feature against real-world components.

💡 Enhancements 💡

  • cmd/mdatagen: Add support for versioned metrics (#15309)
    Allows metadata to specify versioned metrics for migrating to new semantic conventions.
    There are two scenarios catered for when the metric name stays the same during migration.
    When a metric name stays the same but its type differs, just the latest metric is
    emitted with the new type.
    When a metric name stays the same but its attributes differ, the latest version
    is emitted with combined attributes during the migration period.

  • cmd/schemagen: Add overlayFile support to deep-merge hand-curated schema fragments into generated schemas. (#14543)
    Components can declare an overlayFile in .schemagen.yaml pointing to a YAML file
    whose keys are recursively merged into the auto-generated schema after generation.
    This allows injecting descriptions, constraints, or additional properties that cannot
    be derived from Go types.
    Originally added to the contrib copy of cmd/schemagen in
    open-telemetry/opentelemetry-collector-contrib#48917 and brought over with the tool
    in this move.

  • cmd/schemagen: Add -p flag to specify a custom Go package pattern for the config struct. (#14543)
    The new -p flag lets callers override the default . package pattern with an arbitrary
    Go package selector (e.g. a sub-package whose Config type schemagen should walk).
    Originally added to the contrib copy of cmd/schemagen in
    open-telemetry/opentelemetry-collector-contrib#48966 and brought over with the tool
    in this move.

🧰 Bug fixes 🧰

  • cmd/mdatagen: Fix an issue when the last feature gate is removed, stale files are left. (#15423)
  • cmd/mdatagen: Fix known acronyms at the end of generated Go identifiers to be all-caps, same as in any other position (#15438)
  • cmd/schemagen: Fix mode detection when using -p to target a package outside the current directory. (#15453)
    A new -m component|package flag is available as a manual override when auto-detection is not possible.

API Changelog

🛑 Breaking changes 🛑

  • cmd/mdatagen: Remove the reaggregation_enabled metadata setting and always generate per-metric reaggregation config. (#15305)
    Legacy metadata files that still contain reaggregation_enabled are accepted, but the value is ignored.

🚩 Deprecations 🚩

  • pkg/service: Deprecate service.Settings.CollectorConf and extensioncapabilities.ConfigWatcher in favor of service.Settings.ConfigSnapshot and extensioncapabilities.ConfigSnapshotWatcher, which provide effective and unexpanded configuration representations. (#15432)

💡 Enhancements 💡

  • pkg/config/configmiddleware: Migrated middleware config to schema based (#15440)
  • pkg/pdata: Add DisallowUnknownFields option to JSONUnmarshaler in plog, ptrace, pmetric, pprofile, and xpdata to error on JSON fields not defined by the OTLP schema. (#15279)
    When DisallowUnknownFields is false (the default), unknown fields are silently ignored, matching the previous behavior.
    Warning: enabling this option breaks forwards compatibility with future evolutions of the OTLP format, as fields added to the format in newer versions will be rejected as unknown.

🧰 Bug fixes 🧰

  • cmd/mdatagen: Fix known acronyms at the end of generated Go identifiers to be all-caps, same as in any other position (#15438)