Skip to content

Releases: open-telemetry/opentelemetry-collector-contrib

v0.159.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 21:44
v0.159.0
1120cc0

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

Unmaintained Components

These components are marked as Unmaintained and will eventually be removed from our community distributions. If you depend on these components we need your help to support them.

  • receiver/huaweicloudcesreceiver/
  • receiver/simpleprometheusreceiver/

End User Changelog

🛑 Breaking changes 🛑

  • all: Removes the kafkatopicsobserver extension after being deprecated for 3 months (#48186)
    Use the kafkareceiver with topic regex support instead.

  • extension/observer: Removes the kafka.topics endpoint type along with the kafkatopicsobserver extension (#48186)
    The observer.KafkaTopicType endpoint type and its observer.KafkaTopic details struct are
    removed, as the kafkatopicsobserver was the only observer emitting them. The receivercreator
    no longer accepts type == "kafka.topics" rules or resource attributes for that endpoint type.

  • processor/dynamic_sampling: Reserve the "" prefix in rule names for processor-internal decision labels, and rename the unmatched-drop sentinel to _unmatched (#49311)
    Configs with rule names starting with "
    " are now rejected at validation, so user rule
    names can never collide with the processor-owned sentinel labels on decision metrics
    (_eviction, _root_span_condition). The rule attribute value for traces dropped with
    no matching rule changes from unmatched to _unmatched to follow the same convention.

  • receiver/file_log: ordering_criteria::top_n: 0 now means 'match all files' instead of silently behaving like top_n: 1. (#47444)
    To restore the previous behavior of matching the first file only, set ordering_criteria::top_n: 1.

🚩 Deprecations 🚩

  • exporter/azure_monitor: Rename azuremonitor to azure_monitor (#45339)

  • exporter/signalfx: Remove the logic sending trace correlation. (#50166)
    The trace correlation endpoint is no longer processing requests as the logic has moved
    to be handled by the backend. With this change, the exporter continues to accept spans
    but will no longer send them to the correlation endpoint.

  • receiver/file_log: Deprecate the implicit ordering_criteria.top_n default of 1 when ordering_criteria.sort_by is configured. Enable the filelog.requireExplicitTopN feature gate to require top_n to be set explicitly. (#47444)
    When ordering_criteria.sort_by is configured without top_n, the matcher
    silently defaults top_n to 1, returning only the single highest-priority file
    per poll. With multiple actively-written files this causes severe log
    duplication: the other matching files cycle in and out of the tracker and are
    re-read from offset 0 on rediscovery.

    Enabling the filelog.requireExplicitTopN feature gate makes an unset top_n a
    startup error when sort_by is configured, forcing the choice to be explicit.
    The gate is off by default; it is expected to become the default (and the
    implicit fallback removed) in a future release. Use top_n: 1 to keep the
    previous behavior.

    Independently of the feature gate, top_n: 0 now means "match all files"
    instead of silently behaving like top_n: 1.

  • receiver/sql_query: Rename the 'sqlquery' receiver to 'sql_query'. The old 'sqlquery' type remains available as a deprecated alias. (#45339)

🚀 New components 🚀

  • extension/sd_notify: Introduces the sd_notify extension, which integrates the collector with the sd_notify(3) protocol. (#49607)

💡 Enhancements 💡

  • cmd/opampsupervisor: Add tar.gz archive support and the agent_binary configuration for collector package upgrades. (#49766)

  • exporter/awscloudwatchlogs: Add max_event_payload_bytes config option to opt in to the CloudWatch Logs 1 MiB per-event limit (previously hardcoded to 256 KiB). (#48559)
    The CloudWatch Logs PutLogEvents API began accepting events up to 1 MiB on
    2025-04-02. The exporter previously truncated every event at 256 KiB (the
    pre-2025 service limit) via a hardcoded package constant. The default stays
    at 256 KiB for backwards compatibility; set max_event_payload_bytes: 1048576
    to take advantage of the new ceiling. A new cwlogs.WithMaxEventPayloadBytes
    pusher option exposes the same knob to direct callers of the internal package.

  • exporter/azure_monitor: Allow configuring HTTP status codes that should not be marked as errors in Application Insights. (#47691)
    Adds telemetry_mappings.traces.http.success settings for HTTP success mapping:
    additional_success_status_codes lists status codes treated as Success on both
    server and client HTTP spans, and server_policy: otel treats 4xx responses on
    HTTP server spans as Success, matching the OpenTelemetry HTTP semantic conventions.
    Defaults preserve the existing exporter behaviour.

  • exporter/load_balancing: Promote metrics support to alpha stability (#50086)

  • exporter/opensearch: Add integration test harness against a real OpenSearch instance (#48615)
    Introduces testcontainers-go setup to validate exporter behavior,
    dynamic mappings, and cluster connectivity.

  • exporter/prometheus_remote_write: Add a nested http config block for HTTP client settings. The nested block takes precedence over flat HTTP client settings when set. (#46209)

  • exporter/prometheus_remote_write: Add the exporter ID as an attribute on WAL telemetry metrics to disambiguate multiple PRW exporters sharing a collector. (#49130)

  • exporter/signalfx: Stop excluding container.memory.rss in SignalFx exporter by default. (#50162)

  • extension/aws_iam_db_auth: Change aws_iam_db_auth to alpha (#50118)

  • extension/pebble_tail_storage: Added max_storage_size_mib support to the Pebble tail storage extension to bound local disk usage for pending tail-sampling trace data. (#49592)
    Configuration example:
    extensions:
    pebble_tail_storage:
    directory: /var/lib/otelcol/pebble-tail-storage
    max_storage_size_mib: 10240

  • extension/sumologic: Add optional fleet_id configuration field to assign a collector to a fleet during registration. (#50142)
    When fleet_id is configured, it is sent as fleetId in the collector registration request.
    If the server returns an invalid_fleet_id or fleet_not_found error, registration is
    retried without the fleet ID so the collector can still register successfully.

  • pkg/datadog: Add the datadog.EnableScopeConvention feature gate to control the otel.scope name and version conventions in the Datadog exporter. (#49001)
    When the datadog.EnableScopeConvention feature gate is enabled, spans additionally
    carry the otel.scope.name and otel.scope.version attributes. The deprecated
    otel.library.name and otel.library.version attributes are still emitted with the
    same values for backward compatibility, so existing dashboards and monitors keyed on
    them keep working.

  • pkg/fileconsumer: Move filelog.allowFileDeletion and filelog.windows.caseInsensitive filelog.featuregates to beta (#46635)

  • pkg/ottl: pcommon.Value is now comparable using all comparison operators (==, !=, <, <=, >=, >) in OTTL expressions (#49170)

  • pkg/ottl: The set function will pass nil values directly to the target when the ottl.set.allowNil feature gate is enabled. (#48714)

  • processor/dynamic_sampling: Reduce hot-path overhead with a fast path for the default root-span condition, cheaper decision-cache ordering, precomputed metric attributes, and a precomputed emitted tracestate. (#49311)

  • processor/dynamic_sampling: Document known limitations, the metric label contract (sentinel rule values, trigger values), and refresh the future work list (#49311)

  • processor/dynamic_sampling: Move buffered spans into the output at decision time instead of copying them, halving decision-path allocations. (#49311)

  • processor/dynamic_sampling: Drain pending traces on shutdown, deciding each through the normal rule path instead of silently dropping the buffer (#49311)
    Previously a collector restart, rollout, or config reload discarded every buffered trace
    without a decision (up to trace_timeout worth of spans). Shutdown now decides each pending
    trace with the spans seen so far, forwards the kept ones with a correct ot=th tracestate,
    and reports them on the decision-triggers counter with trigger="shutdown". Traces already
    counted by an earlier trigger are not counted again, and the same double-count guard is
    applied to eviction of a trace in its decision_delay window.

  • processor/dynamic_sampling: Use MoveTo instead of CopyTo when accumulating and forwarding spans, reducing allocations and improving throughput. (#49311)

  • processor/resource_detection: Add feature gates to migrate the elastic_beanstalk detector to the current deployment semantic conventions. (#50130)
    The detector reports the deployment environment as deployment.environment, which is deprecated in
    the semantic conventions, and the deployment ID as service.instance.id. Two alpha feature gates
    migrate them to deployment.environment.name and deployment.id:
    processor.resourcedetection.elasticbeanstalk.EmitV1DeploymentConventions adds the current
    attributes, and processor.resourcedetection.elasticbeanstalk.DontEmitV0DeploymentConventions
    removes the deprecated ones. Enabling only the first reports both sets, so telemetry
    can be migrated before the deprecated attributes are dropped. Enabling only the second is rejected
    at startup. The default output is unchanged.

  • processor/resource_detection: Support global retry config for resource detection processor (#46546)

  • processor/resource_detection: Add Azure...

Read more

v0.158.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 17:06
v0.158.0
821a9d9

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

End User Changelog

🛑 Breaking changes 🛑

  • cmd/opampsupervisor: Remove the reports_package_statuses capability config option. The accepts_packages option now enables both the AcceptsPackages and ReportsPackageStatuses OpAMP capabilities. (#49762)
    Neither capability was functional; the supervisor exits with an error at startup when configured, so no working configuration is affected.

  • processor/drain: Add masking rules for named parameter extraction. Removes the extract_parameters and params_attribute config fields released in v0.157.0. (#48914)
    Adds masking_rules, an ordered list of {name, pattern} regex substitutions applied to a copy
    of the log body before it is fed to the Drain tree. Matched substrings become named mask tokens
    in derived templates (for example <ip>), stabilising the tree on high-cardinality values.
    Each masked position writes a dynamic attribute at
    <parameter_key_prefix>.<mask name> (default prefix log.record.template.parameter), matching
    the OTel semantic-convention pattern used by http.request.header.<key> and
    db.query.parameter.<key>.

    Adds emit_wildcards (default false): when true, Drain's own <*> positions are written to a
    positional string slice attribute at wildcards_attribute (default
    log.record.template.wildcards). Independent of masking_rules, so users can enable it without
    any rules to see raw variable values before deciding what to mask.

    When a mask name matches multiple positions in the same template, first-match wins and the
    losing values are dropped. The otelcol_processor_drain_masks_duplicates counter is incremented
    once per record per duplicated mask name, tagged with a mask attribute for observability.

    Breaking: the positional-only extract_parameters and params_attribute fields released in
    v0.157.0 are removed. Collectors with either field set will fail to start after upgrading.
    To migrate, replace extract_parameters: true with emit_wildcards: true, and rename
    params_attribute to wildcards_attribute. The behaviour is identical; only the field names
    change. Note the default output attribute also renames from log.record.template.params to
    log.record.template.wildcards, so downstream consumers of the old attribute key should either
    update their references or set wildcards_attribute: log.record.template.params to keep the
    old key.

  • processor/dynamic_sampling: Flatten sampler config, rename key_fields to key_attributes, drop initial_sampling_rate. (#49311)
    Sampler fields no longer live under a per-type sub-block (sampler.<type>.<field>);
    they move up one level under sampler: with type acting as the discriminator.
    key_fields is renamed to key_attributes to match OTel attribute vocabulary used
    elsewhere in the processor. The rarely-used initial_sampling_rate on
    ema_throughput is removed; dynsampler-go's default applies. goal_throughput_per_sec
    is now int for both throughput samplers. Fields set for a sampler type that does
    not use them are rejected at config validation.

  • processor/dynamic_sampling: Replace the custom rule condition parser with OTTL expressions and add a match field to control same-span vs any-span semantics. (#49311)
    Rule conditions: are now OTTL boolean expressions evaluated in the ottlspan
    context. Path expressions must be qualified with a context prefix
    (span.attributes["k"], resource.attributes["k"], span.status.code, etc).
    A new per-rule match: field selects any_span (default, each condition
    satisfied by some span) or same_span (some single span satisfies all
    conditions). A new counter,
    otelcol_processor_dynamic_sampling_ottl_eval_errors, is labelled by rule
    and tracks runtime OTTL evaluation errors.

  • receiver/icmpcheckreceiver: Change RTT metric value type from int to double for sub-millisecond precision (#49960)

  • receiver/oracledb: oracle.db.pdb is now a data-point attribute (opt-in) instead of a resource attribute. (#48643)
    oracle.db.pdb has moved from a resource attribute to an opt-in data point attribute.
    Downstream pipelines that grouped, routed, or filtered on oracle.db.pdb at resource scope
    must be updated to read it from data point attributes, and it must be explicitly enabled on
    each metric that should carry it via metrics.<name>.attributes: [oracle.db.pdb]. Existing
    CDB deployments that do not enable the attribute or add the grants needed for per-PDB
    collection keep working unchanged; the receiver falls back to the single-container queries.

  • receiver/postgresql: Collect postgresql.database.locks from each configured database instead of only the default postgres database. (#49206)
    Previously the metric was collected once against the default postgres database, so locks on relations
    belonging to other configured databases were silently dropped, and all data points were emitted on the
    instance-level resource without postgresql.database.name. Lock data points for database-local relations
    are now emitted on the corresponding per-database resource with the postgresql.database.name resource
    attribute. Locks on shared system catalogs (e.g. pg_database) are reported once at the instance level.
    When the receiver.postgresql.useOTelSemconv feature gate is enabled there is a single server-level
    resource, so the data points instead carry a db.namespace attribute to identify the database. Without it
    relations that exist in more than one database (any system catalog, or user tables sharing a name) would
    collapse into a single series. Locks on shared system catalogs carry an empty db.namespace, since they
    are server-scoped rather than database-scoped.
    The lock count now uses COUNT(*) instead of COUNT(pid), so locks held by prepared transactions
    (which have a NULL pid in pg_locks) are counted instead of being reported as zero.
    The metric is disabled by default and has development stability, so no feature gate is provided for this
    behavior change.

🚩 Deprecations 🚩

  • exporter/mezmo: Deprecate the mezmo exporter (#49953)
    Mezmo now supports ingesting OpenTelemetry data directly via OTLP. Use the OTLP/HTTP
    exporter instead. See https://docs.mezmo.com/telemetry-pipelines/otel-collector and
    https://docs.mezmo.com/telemetry-pipelines/open-telemetry-source for migration guidance.

  • processor/alibabaecsdetector: Deprecate per-detector fail_on_missing_metadata in the alibaba_ecs detector config (#46579)
    Use the top-level fail_on_missing_metadata in the processor config instead.
    The field continues to work but will emit a deprecation warning in the logs when set and
    code will be removed later.

  • processor/delta_to_cumulative: Rename the 'deltatocumulative' processor to 'delta_to_cumulative'. The old 'deltatocumulative' type remains available as a deprecated alias. (#45339)

  • processor/delta_to_rate: Rename the 'deltatorate' processor to 'delta_to_rate'. The old 'deltatorate' type remains available as a deprecated alias. (#45339)

  • processor/novadetector: Deprecate per-detector fail_on_missing_metadata in the nova (OpenStack) detector config (#46579)
    Use the top-level fail_on_missing_metadata in the processor config instead.
    The field continues to work but will emit a deprecation warning in the logs when set and
    code will be removed later.

  • processor/resource_detection: Deprecate per-detector fail_on_missing_metadata in the ec2 detector config (#46579)
    Use the top-level fail_on_missing_metadata in the processor config instead.
    The field continues to work but will emit a deprecation warning in the logs when set and
    code will be removed later.

  • processor/tencentcvmdetector: Deprecate per-detector fail_on_missing_metadata in the tencent_cvm detector config (#46579)
    Use the top-level fail_on_missing_metadata in the processor config instead.
    The field continues to work but will emit a deprecation warning in the logs when set and
    code will be removed later.

  • processor/upclouddetector: Deprecate per-detector fail_on_missing_metadata in the upcloud detector config (#46579)
    Use the top-level fail_on_missing_metadata in the processor config instead.
    The field continues to work but will emit a deprecation warning in the logs when set and
    code will be removed later.

  • processor/vultrdetector: Deprecate per-detector fail_on_missing_metadata in the vultr detector config (#46579)
    Use the top-level fail_on_missing_metadata in the processor config instead.
    The field continues to work but will emit a deprecation warning in the logs when set and
    code will be removed later.

🚀 New components 🚀

  • extension/aws_iam_db_auth: Add an extension awsiamdbauthextension that implements dbauth. (#49044)
  • receiver/dns_check: Add initial skeleton of DNS Check receiver (README, config, factory, metadata) with In Development stability. (#49561)

💡 Enhancements 💡

  • exporter/datadog: Add exporter.datadogexporter.AddUnits feature gate that maps OTLP (UCUM) metric units to their Datadog equivalents. (#15280)
  • exporter/elasticsearch: Allow traces, profiles, and synthetics as valid data_stream.type values when overriding via attributes in bodymap mapping mode, in addition to the existing logs and metrics. (#49337)
  • exporter/prometheus_remote_write: Add convert_explicit_histograms_to_nhcb to convert explicit-bucket (classic) histograms into Native Histograms with Custom Buckets (NHCB) on export, with keep_classic_histograms to emit both representations during migration. (#33661)
    When convert_explicit_histograms_to_nhcb is set, ...
Read more

v0.157.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 15:13
89e4355

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

End User Changelog

🛑 Breaking changes 🛑

  • connector/failover: Remove deprecated field retry_gap and max_retries (#49583)

  • connector/routing: Promote the connector.routing.defaultErrorModeIgnore feature gate to beta. The default error_mode is now ignore instead of propagate. (#48418)
    To restore the previous default of propagate, run the collector with the feature gate disabled by passing --feature-gates=-connector.routing.defaultErrorModeIgnore.

  • processor/aws_ecs_attributes: Rename the component identifier from awsecsattributes to aws_ecs_attributes to follow the component naming guidelines. (#44476)
    The processor is still in development, so the old identifier is removed rather than kept as a deprecated alias.

  • processor/filter: Promote the processor.filter.defaultErrorModeIgnore feature gate to stable. The default top-level error_mode is now permanently ignore instead of propagate. (#47232)
    The gate will be removed in v0.159.0.

  • processor/tail_sampling: Fix metric units to comply with the UCUM specification (#49453)

  • processor/transform: Promote the processor.transform.defaultErrorModeIgnore feature gate to stable. The default top-level error_mode is now permanently ignore instead of propagate. (#47231)
    The gate will be removed in v0.159.0.

  • receiver/apache_spark: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/chrony: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/haproxy: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/host_metrics: Make the cpu attribute opt-in for hostmetrics CPU time and utilization metrics. (#49161)
    By default, system.cpu.time and system.cpu.utilization are now aggregated across logical CPUs and no longer include the cpu attribute.
    To restore the previous per-logical-CPU output, configure:

    receivers:
      hostmetrics:
        scrapers:
          cpu:
            metrics:
              system.cpu.time:
                attributes: [cpu, state]
              system.cpu.utilization:
                attributes: [cpu, state]
  • receiver/host_metrics: Enable the system.cpu.logical.count metric by default in the CPU scraper. (#49325)
    To restore the previous behavior, disable the new metric by applying the following config:

    receivers:
      host_metrics:
        scrapers:
          cpu:
            metrics:
              system.cpu.logical.count:
                enabled: false
  • receiver/memcached: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/mongodb: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/nginx: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/nsxt: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/redfish: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/splunk_enterprise: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/sqlserver: Fix metric units to comply with the UCUM specification (#49453)

  • receiver/sqlserver: Change sqlserver.lock.timeout.rate to emit per-type data points (#48925)
    sqlserver.lock.timeout.rate now requires a sqlserver.lock.timeout.type attribute
    (all, nonzero) and emits one data point per type. Users who enable this metric
    will receive two data points per scrape instead of one. The metric stays
    enabled: false and stability: development.

🚩 Deprecations 🚩

  • all: Remove JMX receiver code (#45740)
  • processor/cumulative_to_delta: Rename the 'cumulativetodelta' processor to 'cumulative_to_delta'. The old 'cumulativetodelta' type remains available as a deprecated alias. (#45339)
  • processor/span_pruning: Rename spanpruning processor to span_pruning and add deprecated alias spanpruning (#47590)

🚀 New components 🚀

  • config/configdbauth: Add config for dbauth, so components can use this in the config to support databasee authentication like AWS IAM. (#49044)
  • extension/dbauth: Add extension interface for dbauth. (#49044)

💡 Enhancements 💡

  • cmd/opampsupervisor: Include recent Collector log output when the Supervisor reports that the Collector crashed (#44836, #40173, #21079)
    When a Collector process exits unexpectedly, the Supervisor now can add the relevant
    tail of the Collector logs to the health and remote config failure messages sent
    to the OpAMP server. This helps operators understand why a remote config failed
    without first logging into the host to inspect agent.log. This behavior is
    disabled by default; set agent::collector_crash_log_snippet_kib to a positive
    KiB count, such as 4, up to 1024 (1 MiB) to enable it.

  • cmd/opampsupervisor: Add support for restoring the last working remote configuration when an incoming remote configuration fails to apply (#47192)
    This behavior is controlled under the configuration option agent.automatic_config_rollback.
    When an old remote configuration is restored, the agent will report an "applied" status again
    for this configuraiton.

  • exporter/clickhouse: Updates the metrics tables default schemas (#49438)
    Reduces Primary Key memory usage and colocates metrics by time more effectively

  • exporter/datadog: Add datadog.serializerexporter.UseSyncForwarder feature gate (Alpha, disabled by default) that replaces the async DefaultForwarder with a synchronous forwarder so metric send failures are surfaced to OTel's exporterhelper retry/queue layer. (#49571)
    When enabled via --feature-gates=+datadog.serializerexporter.UseSyncForwarder, the metric serializer
    exporter path gains three improvements over the legacy async forwarder:

    1. Error propagation: Datadog intake errors (5xx → retryable, 4xx → permanent drop) are returned
      from ConsumeMetrics instead of being silently swallowed. otelcol_exporter_send_failed_metric_points
      now accurately reflects failures.

    2. OTel-native retry: Because errors are propagated, the configured retry_on_failure policy is
      respected. Transient 5xx errors are retried by exporterhelper rather than lost.

    3. Queue-overflow visibility: When the OTel sending queue fills up (workers blocked on slow/failed
      intake calls), otelcol_exporter_enqueue_failed_metric_points increments instead of metrics being
      silently dropped inside the DefaultForwarder's internal queue.

    Note: retry_on_failure config now also takes effect on the serializer exporter path (previously it
    was wired as disabled regardless of user config).
    See DataDog/datadog-agent#51333.

  • exporter/elasticsearch: Add retry::retry_on_document_status to configure document-level retry status codes separately from request-level retries. (#48681)

  • exporter/kafka: Add exporter.kafka.useRequestType alpha feature gate that routes all signals through a custom exporterhelper.Request (#48090)
    When the gate is enabled, traces, metrics, logs, and profiles all convert
    pdata into Kafka records at request-creation time and use a custom
    Request for queue/batch sizing. queue_batch.sizer: items then counts
    Kafka records, not OTLP items. The persistent queue (sending_queue.storage)
    is not supported with this gate; configuring both produces an error at
    startup. Default OFF.

  • exporter/opensearch: Add mapping.manage_index_template option for otel-v1 mode that creates the matching composable index templates on startup. (#48585)
    When enabled, the exporter creates the otel-v1-apm-span-index-template and otel-v1-logs-index-template composable index templates idempotently on startup, materializing date_nanos timestamp fields and the typed dynamic-attribute mappings before documents are indexed. If templates with the same names already exist (for example, user-customized variants), they are left in place rather than overwritten. Only valid with mapping.mode: otel-v1; validation rejects the combination with other modes.

  • exporter/signalfx: Translate cpu.num_processors from system.cpu.logical.count. (#49296)
    The exporter no longer derives cpu.num_processors by counting per-core system.cpu.time series.

  • exporter/signalfx: Simplify system.cpu default translations now that hostmetrics CPU metrics are state-aggregated by default. (#49589)
    The default translations no longer aggregate translated CPU metrics across the cpu attribute. If that attribute is explicitly re-enabled on system.cpu.time, translated cpu.* and cpu.utilization datapoints keep it.

  • exporter/signalfx: Export system.cpu.time and system.disk.io by default (#49738)

  • extension/google_cloud_logentry_encoding: Add feature gate to stop emitting deprecated rpc.jsonrpc.error_code and rpc.jsonrpc.error_message attributes (#22095)
    The feature gate extension.encoding.googlecloudlogentryencoding.DontEmitV0RPCConventions
    (disabled by default) allows users to opt out of the deprecated semconv v1.38.0 attributes.
    The new attribute rpc.response.status_code is always emitted regardless of the gate.

  • extension/oidc: Add ignore issuer in config for single provider setup and propagate it to go-oidc. (#46791)

  • pkg/coreinternal: Migrate semantic conventions from v1.19.0 to v1.40.0 (#45294)

  • pkg/experimentalmetricmetadata: Add feature-gated support for emitting entity events using the OpenTelemetry entity events specification log record format. (#49667)

  • pkg/ottl: Add the When OTTL converter for selecting a value based on a lambda condition. (#49356)

  • pkg/ottl: Add the MapKeys OTTL converter for transforming m...

Read more

v0.156.0

Choose a tag to compare

@github-actions github-actions released this 07 Jul 11:37
v0.156.0
41e24cd

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

End User Changelog

🛑 Breaking changes 🛑

  • pkg/fileconsumer: Move feature gate filelog.protobufCheckpointEncoding to beta and keep it enabled by default (#49387)

  • receiver/oracledb: Enhanced Oracle SQL query plan details with runtime execution statistics. (#49329)
    This change requires the collector user to have access to V$SQL_PLAN_STATISTICS_ALL. Existing deployments that only grant access to V$SQL_PLAN
    may experience query plan collection failures until the appropriate privileges are granted.

    SQL query plan details are now retrieved from V$SQL_PLAN_STATISTICS_ALL instead of V$SQL_PLAN. Since V$SQL_PLAN_STATISTICS_ALL is a superset of V$SQL_PLAN,
    this change is backward compatible with respect to the emitted plan detail fields while enabling collection of additional runtime execution statistics,
    including OUTPUT_ROWS, LAST_OUTPUT_ROWS, LAST_ELAPSED_TIME, LAST_CR_BUFFER_GETS, LAST_CU_BUFFER_GETS, STARTS, and LAST_STARTS.

🚩 Deprecations 🚩

  • connector/routing: Deprecate the request context in favor of otelcol.* OTTL paths. (#44762)
    The routing connector request context and request["key"] condition syntax are deprecated in favor of
    otelcol.client.metadata["key"][0] for HTTP/client metadata and otelcol.grpc.metadata["key"][0] for gRPC metadata.
    These paths work in all signal contexts and are documented in the OTelCol OTTL context.
    A warning is logged when the request context is still configured.

  • exporter/datadog: The exporter.datadogexporter.metricremappingdisabled feature gate no longer has any effect when the serializer exporter path is active (the default). Use exporter.datadogexporter.DisableAllMetricRemapping to disable metric remapping. (#49320)
    See DataDog/datadog-agent#51232.

  • receiver/aws_cloudwatch: rename to aws_cloudwatch with deprecated alias awscloudwatch (#45339)

🚀 New components 🚀

  • processor/dynamic_sampling: Add dynamic sampling processor for adaptive trace sampling with W3C TraceState rate encoding. (#48898)

💡 Enhancements 💡

  • cmd/opampsupervisor: Make the OpAMP Supervisor logger encoding configurable so it can emit console (plain-text) logs as well as JSON (#47532)

  • connector/routing: Add OTTL context inference support to routing connector. (#38080)
    The routing connector now supports OTTL context inference, allowing users to write clearer routing conditions using
    context-qualified paths. Instead of relying on implicit context resolution, users can explicitly specify which
    context's attributes they want to access (e.g., resource.attributes["env"] or span.attributes["http.method"]).
    Unqualified paths like attributes["key"] continue to work and default to the resource context for backward compatibility.

  • exporter/alibabacloud_logservice: Add security_token (STS) support alongside AK/SK; preserve ECS role/token-file fallback. (#48624)
    When security_token is provided in the exporter configuration the SDK is
    configured to use static STS credentials via the provider. The existing
    ecs_ram_role and token_file_path behavior remains the higher-priority
    authentication method and is unchanged.

  • exporter/clickhouse: Add experimental support for the profiles signal (#49304)

  • exporter/datadog: Emit otel.datadog_exporter.metrics.running.fargate{task_arn} for AWS ECS Fargate workloads so that each workload has its own metric. (#49042)
    Host-based workloads continue to use otel.datadog_exporter.metrics.running{host} unchanged.
    otel.datadog_exporter.metrics.running will no longer be tagged with task_arn. Fargate workloads will only use otel.datadog_exporter.metrics.running.fargate{task_arn}.

  • exporter/datadog: Fargate workloads now emit a dedicated otel.datadog_exporter.metrics.running.fargate metric tagged with task_arn instead of sharing otel.datadog_exporter.metrics.running with host-based workloads. (#49320)
    Host-based workloads continue to emit otel.datadog_exporter.metrics.running{host} unchanged.
    See DataDog/datadog-agent#52203.

  • exporter/elasticsearch: Support routing from data_stream attributes defined as scope attributes (#49306)

  • extension/azure_auth: Promote the Azure Authenticator extension to beta stability. (#48521)

  • extension/file_storage: Added max_size support to the filestorage extension to cap per-component database growth. (#38620)

  • extension/sigv4auth: Add automatic service detection for CloudWatch OTLP metrics endpoint (monitoring..amazonaws.com) (#48738)

  • pkg/translator/pprof: reduce allocations in sample conversion (#49452)

  • processor/transform: Add exemplar context support to the transform processor, allowing metric_statements to read and modify exemplar fields on metric datapoints. (#49022)

  • receiver/aws_lambda: Add support for AWS configuration overrides for static credentials (#49163)

  • receiver/faro: Emit per-payload counters for ingested Faro logs, measurements, exceptions, and events (#48071)
    Adds otelcol_faro_log_ingested_total, otelcol_faro_measurement_ingested_total,
    otelcol_faro_exception_ingested_total, and otelcol_faro_event_ingested_total. Each
    counter is incremented by the number of entries in the corresponding
    payload section after the request body is parsed.

  • receiver/mongodb: Add Query Sample collection to the MongoDB receiver, emitting a db.server.query_sample log event for each currently executing operation. (#48573)
    Samples are collected via $currentOp, with idle connections and administrative commands
    filtered out. Each event includes obfuscated query text and operation metadata.
    The logs signal is at development stability; attribute names may change until OTel
    db.server.query_sample conventions stabilize. The metrics signal remains at beta.

  • receiver/oracledb: Add service.name and service.namespace opt-in resource attributes and allow overriding any resource attribute via override_value. (#47088)

  • receiver/oracledb: Add workload analysis metrics related to scans, enqueue, LOB, parse, sort, cursor, and session activity (#48808)
    Adds fourteen new opt-in metrics (disabled by default):

    • oracledb.call.count, oracledb.call.recursive.cpu.time
    • oracledb.cursor.cache.hits, oracledb.cursor.cache.size, oracledb.cursor.open
    • oracledb.db.time
    • oracledb.enqueue.operations
    • oracledb.lob.operations
    • oracledb.parse.cpu.time, oracledb.parse.elapsed.time
    • oracledb.scan.count, oracledb.scan.table.rows
    • oracledb.sort.operations, oracledb.sort.rows
      No new SQL queries are issued; the existing v$sysstat scrape already returns
      all required rows, so the receiver adds no additional load on the monitored
      Oracle instance.
  • receiver/oracledb: Add buffer cache and Database Writer (DBWR) metrics (#49061)

  • receiver/oracledb: Add redo log metrics (#49060)

  • receiver/postgresql: Add default service.name and service.namespace resource attributes (#47087)
    Both attributes default to enabled: false. When enabled, service.name
    defaults to unknown_service:postgresql and service.namespace defaults
    to an empty string. Additionally, override_value is enabled for all
    resource attributes, allowing users to set custom values via
    override_value in the collector configuration.

  • receiver/postgresql: Adds blocking session and lock attributes to db.server.query_sample events for PostgreSQL blocking session detection. Blocking attributes are always emitted (empty string / 0 when not blocked). (#49028)
    New attributes under postgresql.blocking.*: postgresql.blocking.pids, postgresql.blocking.start_time,
    postgresql.blocking.wait_duration, postgresql.blocking.lock.mode, postgresql.blocking.lock.type,
    postgresql.blocking.lock.relation, postgresql.blocking.transaction.start_time.
    postgresql.blocking.pids contains the full array of blocking PIDs from pg_blocking_pids() (e.g. {5121,5122}).
    postgresql.blocking.start_time uses pg_locks.waitstart (PostgreSQL 14+) to record when the lock wait began. waitstart is stable for the full duration of the wait — it is set once when the lock wait starts and is not affected by blockers joining or leaving.
    postgresql.blocking.transaction.start_time provides a UTC timestamp (RFC3339) from xact_start representing when the transaction started, predating the lock contention itself.
    Idle-in-transaction blocker sessions (holding locks without an active request) are captured via pg_blocking_pids subquery in the WHERE clause.
    All blocking attributes are always present on every db.server.query_sample event; empty string / 0 values indicate no active blocking.
    Requires PostgreSQL 14 or later.

  • receiver/prometheus: Promote receiver.prometheusreceiver.IgnoreScopeInfoMetric feature gate to beta. (#47312)
    The otel_scope_info metric is now ignored for scope attribute extraction by default.
    To temporarily restore the previous behavior, disable the feature gate with --feature-gates=-receiver.prometheusreceiver.IgnoreScopeInfoMetric.

  • receiver/sqlserver: Add access methods and buffer pool metrics (#49182)
    Adds the following metrics, all disabled by default:

    • sqlserver.access.scan.rate
    • sqlserver.extent.operation.rate
    • sqlserver.ghost_record.skipped.rate
    • sqlserver.page.allocation.rate
    • sqlserver.page.compression.rate
    • sqlserver.page.read_ahead.rate
    • sqlserver.scan_point.revalidation.rate
      ...
Read more

v0.155.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 13:02
v0.155.0
aaf5045

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

Unmaintained Components

These components are marked as Unmaintained and will eventually be removed from our community distributions. If you depend on these components we need your help to support them.

  • receiver/huaweicloudces

End User Changelog

🛑 Breaking changes 🛑

  • all: Move cmd/schemagen to opentelemetry-collector as go.opentelemetry.io/collector/cmd/schemagen. (#14543)
    The schemagen CLI now lives in the opentelemetry-collector repository. Existing make schemagen and
    make generate-schemas targets continue to work — they now invoke the tool via
    go run go.opentelemetry.io/collector/cmd/schemagen@latest. Override the new SCHEMAGEN_PKG variable
    to pin a specific release. Downstream users that previously imported
    github.com/open-telemetry/opentelemetry-collector-contrib/cmd/schemagen must update their import path
    to go.opentelemetry.io/collector/cmd/schemagen.

  • exporter/signalfx: Stop calculating per-core cpu.* metrics disabled by default. (#49247)
    The default transformations still create aggregate CPU metrics. However, per-core cpu.* metrics which are disabled by default aren't produced by the default transformations anymore.
    To emit equivalent per-core CPU metrics, copy and aggregate system.cpu.time with the transform processor. For example, to emit per-core cpu.idle metrics:

    receivers:
      hostmetrics:
        scrapers:
          cpu:
            metrics:
              system.cpu.time:
                enabled: true
                attributes: [cpu, state]
    processors:
      transform/cpu_idle_per_core:
        error_mode: ignore
        metric_statements:
          - context: metric
            statements:
              - copy_metric(name="cpu.idle") where metric.name == "system.cpu.time"
          - context: datapoint
            statements:
              - set(datapoint.value_double, 0.0) where metric.name == "cpu.idle" and datapoint.attributes["state"] != "idle"
          - context: metric
            statements:
              - aggregate_on_attributes("sum", ["cpu"]) where metric.name == "cpu.idle"
              - scale_metric(100.0) where metric.name == "cpu.idle"
          - context: datapoint
            statements:
              - set(datapoint.value_int, Int(datapoint.value_double)) where metric.name == "cpu.idle"
    service:
      pipelines:
        metrics:
          receivers: [hostmetrics]
          processors: [transform/cpu_idle_per_core]
          exporters: [signalfx]
  • exporter/signalfx: Stop calculating cpu.utilization_per_core disabled by default. (#49243)
    The exporter still creates the aggregate cpu.utilization metric by default. However, cpu.utilization_per_core which is disabled by default isn't produced by the default transformations anymore.
    To emit an equivalent cpu.utilization_per_core metric, enable system.cpu.utilization in the host_metrics receiver, then rename and aggregate it with the transform processor:

    receivers:
      hostmetrics:
        scrapers:
          cpu:
            metrics:
              system.cpu.utilization:
                enabled: true
                attributes: [cpu, state]
    processors:
      transform/cpu_utilization_per_core:
        error_mode: ignore
        metric_statements:
          - context: metric
            statements:
              - set(metric.name, "cpu.utilization_per_core") where metric.name == "system.cpu.utilization"
          - context: datapoint
            statements:
              - set(datapoint.value_double, 0.0) where metric.name == "cpu.utilization_per_core" and datapoint.attributes["state"] == "idle"
          - context: metric
            statements:
              - aggregate_on_attributes("sum", ["cpu"]) where metric.name == "cpu.utilization_per_core"
    service:
      pipelines:
        metrics:
          receivers: [hostmetrics]
          processors: [transform/cpu_utilization_per_core]
          exporters: [signalfx]
  • pkg/fileconsumer: Remove stable gate filelog.decompressFingerprint (#48980)

  • processor/k8s_attributes: Remove deprecated gate k8sattr.labelsAnnotationsSingular.allow (#48977)

  • processor/tail_sampling: Remove stable gate processor.tailsamplingprocessor.disableinvertdecisions (#48976)

  • receiver/datadog: Enhance Datadog logs support (#49102)
    Logs are now translated to the OpenTelemetry data model instead of being emitted as flat string
    attributes: the record timestamp/observed timestamp are set (converting Datadog epoch-milliseconds
    to nanoseconds), status maps to the severity number/text, hostname/service and known ddtags
    are promoted to resource attributes, and dd.trace_id/dd.span_id populate TraceID/SpanID for
    trace correlation (reconstructing full 128-bit trace ids from _dd.p.tid the same way spans do).
    A new logs::decode_json_message option (enabled by default) expands JSON-encoded log messages
    forwarded by the Datadog Agent, lifting their reserved fields and attributes into the log record.

  • receiver/datadog: Enable the receiver.datadogreceiver.Enable128BitTraceID feature gate by default (#49103)
    The gate is promoted from alpha to beta (on by default), so spans reconstruct full 128-bit trace ids
    from _dd.p.tid and emit OpenTelemetry-native trace ids that correlate with other OpenTelemetry
    services. Disable the gate to fall back to 64-bit (zero-padded) trace ids.

  • receiver/mongodb: Minimum supported MongoDB version is now 4.4. (#49248)
    MongoDB 4.0 reached end-of-life in April 2022 and is no longer supported by the Go MongoDB driver v2.7.0+,
    which raised the minimum required wire protocol version. Users still on MongoDB 4.0 must upgrade to at
    least MongoDB 4.4 before upgrading to this version of the receiver.

  • receiver/oracledb: Set db.namespace to database name and add oracle.db.service attribute on query sample and top query events. (#48996)
    On db.server.query_sample and db.server.top_query events, db.namespace
    now reports the database name instead of the Oracle service
    name. The service name moves to the new oracle.db.service attribute.

🚩 Deprecations 🚩

  • connector/service_graph: Deprecate the legacy servicegraph connector latency metric names and millisecond latency unit feature gates, and mark the virtual node feature gate as stable. (#49215)
  • receiver/flink_metrics: Rename receiver type from flinkmetrics to flink_metrics (#45339)
  • receiver/splunk_enterprise: Rename receiver type from splunkenterprise to splunk_enterprise (#45339)

🚀 New components 🚀

  • processor/cardinality_guardian: Promote the cardinalityguardian processor to alpha stability and include it in the contrib distribution. (#47368)
  • receiver/active_directory_inv: Add Windows Active Directory Inventory receiver for collecting inventory data from Active Directory. (#48733)

💡 Enhancements 💡

  • cmd/opampsupervisor: Allow Supervisor to configure its managed OpAMP extension config to include Collector resource attributes (#48536)

  • connector/routing: Add connector.routing.defaultErrorModeIgnore feature gate to change default error_mode from propagate to ignore (#48418)

  • exporter/awsxray: Migrate http.status_code (v1.25.0) semantic convention to http.response.status_code (v1.40.0) (#45058)

  • exporter/awsxray: Migrate container.image.tag (v1.21.0) semantic convention to container.image.tags (v1.40.0) (#45057)

  • exporter/azure_blob: Add support for gzip and zstd compression to the Azure Blob Storage exporter. The compression config option is now supported and the appropriate file extension is added to blob names. (#45338)
    This mirrors the compression support added to the Google Cloud Storage exporter in commit 6fd0eb6. Compression is applied to the marshaled data before upload (including append blocks). Tests and documentation updated.

  • exporter/elasticsearch: Extract span events as separate ECS log documents in ECS mapping mode (#49181)
    In ECS mapping mode, exception span events are routed to logs-apm.error-* and all other
    span events to logs-apm.app.<service>-*, with OTel exception attributes mapped to
    their correct nested ECS paths (error.exception.type, error.exception.message,
    error.stack_trace).

  • exporter/file: Add feature gate for native file-level compression in file exporter (#44077)
    A new alpha feature gate exporter.file.nativeCompression enables native file-level zstd compression.
    When enabled, the exporter produces standard .zst files that can be decompressed with zstd -d,
    unlike the legacy per-message compression format which requires custom tooling.

  • exporter/google_cloud_storage: Add universe_domain config option to support Sovereign Google Cloud regions. Setting this field passes option.WithUniverseDomain to the underlying Google API client. (#48924)

  • exporter/google_cloud_storage: Add resource_attrs_to_gcs to partition objects by a resource attribute value. (#49136)
    When resource_attrs_to_gcs.prefix is set, the value of the given resource attribute
    (read from the first resource of each batch) is inserted as a partition path segment
    between bucket.partition.prefix and the time-based bucket.partition.format, mirroring
    the awss3exporter resource_attrs_to_s3 behavior.

  • exporter/googlecloudpubsub: Add universe_domain config option to support Sovereign Google Cloud regions. Setting this field passes option.WithUniverseDomain to the underlying Google API client. (#48924)

  • `ex...

Read more

v0.154.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 16:45
v0.154.0
853eda0

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

End User Changelog

🛑 Breaking changes 🛑

  • all: Removes the Google SecOps exporter, as it is no longer being donated. (#46148)
    Removes the incomplete and non-functional Google SecOps exporter.
    It should not have been configured by users, so no real world breakage is expected.

  • connector/span_metrics: Validate calls_dimensions and histogram.dimensions at startup (#48097)
    Duplicate dimension names in calls_dimensions or histogram.dimensions previously passed silently; they now fail validation at startup, matching the behaviour of the top-level dimensions setting.

  • exporter/prometheus: Promote the exporter.prometheusexporter.DisableAddMetricSuffixes feature gate to beta. (#48930)
    The deprecated add_metric_suffixes setting is now ignored by default. To preserve the previous no-suffix behavior, set translation_strategy: UnderscoreEscapingWithoutSuffixes.

  • receiver/vcenter: Set resourcePoolMemoryUsageAttribute feature gate to beta. (#47552)

🚩 Deprecations 🚩

  • exporter/prometheus_remote_write: Rename to prometheus_remote_write with deprecated alias prometheusremotewrite (#45339)

  • exporter/signalfx: Traces have been deprecated for the exporter (#48748)
    Trace correlation functionality no longer requires the signalfx exporter to be included in trace pipelines.
    Sending traces may now be sent solely via OTLP to enable trace correlation. All trace functionality and configuration
    will be removed from this exporter in December 2026.

  • processor/resource_detection: The k8snode detector is deprecated; use k8s_api instead. (#48597)
    Both names work and produce identical output. When switching to k8s_api, also rename your config section from k8snode: to k8s_api:; keeping the old key under the new detector name will silently apply defaults instead.

  • receiver/apache_spark: Rename apachespark receiver to apache_spark with deprecated alias apachespark (#45339)

  • receiver/envoy_als: Rename envoyals receiver to envoy_als with deprecated alias envoyals (#45339)

  • receiver/kafka: Deprecate group_rebalance_strategy in favor of group_rebalance_strategies (#48658)
    Use group_rebalance_strategies to configure one or more ordered protocols. The singular field remains supported for backward compatibility but logs a deprecation warning on startup.
    group_rebalance_strategy and group_rebalance_strategies are mutually exclusive; setting both fails validation.

  • receiver/otlp_json_file: rename to otlp_json_file with deprecated alias otlpjsonfile (#45339)

  • receiver/webhook_event: Rename webhookevent receiver to webhook_event with deprecated alias webhookevent (#45339)

  • receiver/windows_service: Rename receiver type from windowsservice to windows_service (#45339)

🚀 New components 🚀

  • processor/awsecsattributes: Add the initial skeleton for the AWS ECS attributes processor, which will enrich telemetry with AWS ECS metadata. (#44476)

💡 Enhancements 💡

  • cmd/opampsupervisor: Allow starting the Collector with a startup fallback config until successfully connected to the OpAMP backend (#44368)
    When there's no previous configuration state persisted in disk, the Supervisor now
    starts with a startup fallback configuration until it can successfully connect
    to the OpAMP backend. At this moment the regular configuration (indicated by
    agent::config_files) is restored.
    If a previous configuration state is persisted, it will be used to start the Collector.

  • cmd/schemagen: Add -r flag to resolve external $ref entries inline, replacing references with the actual type definitions from the referenced packages. (#48735)
    When -r is passed, schemagen recursively resolves cross-package $refs and inlines the
    referenced type definitions. References that cannot be resolved are dropped with a warning.

  • cmd/schemagen: Add factoryMaps override to generate schemas for config fields populated via factory dispatch maps. (#48815)
    Some components tag a config field mapstructure:"-" and populate it at runtime by dispatching
    against a package-level factory map (e.g. hostmetricsreceiver's scrapers field). The schemagen
    parser previously skipped these fields entirely.

    A new factoryMaps option in .schemagen.yaml componentOverrides instructs schemagen to
    AST-walk the named factory var, enumerate all registered entries, and synthesize a typed object
    property whose keys are the discriminator strings. Three factory var shapes are supported:
    call expressions (key resolved from internal/metadata), composite literals with inline
    component.MustNewType("key") keys, and composite literals with qualified pkg.ConstName keys.

    Wired up for receiver/hostmetricsreceiver (11 scraper keys), receiver/ciscoosreceiver
    (2 scraper keys), and processor/geoipprocessor (1 provider key).

  • connector/span_metrics: Support for glob expressions in the dimensions field of the spanmetrics connector config (#48097)
    It is now possible to specify attributes to add as dimensions to metrics using glob expressions, in addition to exact string matching

  • exporter/azuremonitor: Add tag_mappings config to override the resource-attribute precedence used to populate Application Insights envelope tags (#47657)
    The optional tag_mappings: block accepts an ordered list of sources per tag.
    Sources containing a . are treated as resource attribute keys; sources
    without a . are treated as string-literal terminal defaults. The first
    non-empty value wins.

    Supported keys: cloud_role_instance (default [service.instance.id])
    and application_version (default [service.version]). Defaults preserve
    the historical hardcoded behavior; zero-config users see no change.

    Example for Azure Container Apps:
    tag_mappings:
    cloud_role_instance: [host.name, service.instance.id]

    Marked alpha; the schema may evolve.

  • exporter/load_balancing: Add service, resource, and attributes routing key support for logs (#40223)
    Logs can now be routed using service (default, routes by service.name), resource (routes by
    full resource identity), or attributes (routes by configurable attribute values including
    log.severity and log.body pseudo attributes). This enables stateful downstream processing like
    log reduction, throttling, and tail-based sampling.

  • exporter/opensearch: Add otel-v1 mapping mode that produces documents conforming to Data Prepper's OTel v1 index schemas, enabling interoperability with OpenSearch Observability dashboards. (#48585)
    Default index names match upstream Data Prepper conventions: otel-v1-apm-span for traces and otel-v1-logs for logs. Custom traces_index / logs_index overrides still apply, and dataset / namespace are not required when this mode is active.

  • exporter/signalfx: Handle entity events as property updates sent to the PUT endpoint instead of PATCH. (#48469)

  • extension/aws_logs_encoding: Add support for decoding VPC Flow Logs in Parquet format (#38861)

  • extension/google_cloud_logentry_encoding: Migrate semantic conventions from v1.38.0 to v1.40.0 (#47547)

  • extension/pebble_tail_storage: Promote pebble_tail_storage extension to alpha stability (#47916)

  • extension/pebble_tail_storage: Drop DB on start (#48853)
    On startup, instead of returning an error if DB exists, drop the DB.

  • pkg/coreinternal: Migrate semantic convention from v1.20.0 to v1.40.0 (#45295)

  • pkg/coreinternal: Migrate db.system (v1.28.0) semantic convention to db.system.name (v1.40.0) (#45299)

  • pkg/ottl: Substring function now supports UTF-8 safe slicing (#48436)
    New optional parameter utf8_safe (default: false). Set to true to adjust slice
    boundaries so multi-byte UTF-8 characters are never cut in the middle; the result
    may then be shorter than length bytes. Default preserves the existing byte-level
    slicing behavior.

  • pkg/ottl: Add ottlexemplar context exposing per-exemplar fields (time, filtered_attributes, double_value, int_value, trace_id, span_id) for use in OTTL statements. (#47490)

  • pkg/stanza: Add a none protocol option to the syslog parser that passes the message through without parsing its contents, for non-conforming syslog data. A leading PRI header is decoded when present, and RFC 6587 octet counting is supported. (#44795)

  • pkg/zipkin: Migrate semantic conventions from v1.25.0 to v1.40.0 (#45089)

  • processor/cumulativetodelta: Add internal telemetry for converted and dropped datapoints, and for tracked streams. (#48246)
    Three new metrics are emitted by the processor, all disabled by default (opt-in via the collector's service.telemetry.metrics configuration):

    • otelcol_cumulativetodelta_datapoints: number of datapoints converted from cumulative to delta temporality (with a metric_type attribute: sum, histogram, or exponential_histogram).
    • otelcol_cumulativetodelta_datapoints_dropped: number of datapoints dropped instead of converted, with the same metric_type attribute and a reason attribute (reset, initial, bucket_mismatch).
    • otelcol_cumulativetodelta_streams_tracked: number of metric streams currently tracked in memory.

    Reset detections also emit a Debug-level log line including the metric name, type, and datapoint attributes — logs absorb the per-stream cardinality that would be prohibitive on a metric while still letting operators identify which stream is wrapping/restarting.

  • processor/gen_ai_normalizer: Add the custom source for user-defined GenAI attribute renames and value foldings. (#48677)

  • processor/gen_ai_normalizer: Promote `gen_ai_no...

Read more

v0.153.0

Choose a tag to compare

@github-actions github-actions released this 26 May 03:12
v0.153.0
42f9491

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

End User Changelog

🛑 Breaking changes 🛑

  • exporter/clickhouse: Remove deprecated clickhouse.json feature gate. Users should set json: true in the exporter config directly. (#47888)

  • extension/aws_logs_encoding: Remove deprecated format values and the vpc_flow_log config field. (#42901)
    The deprecated format values vpc_flow_log, elb_access_log, s3_access_log, cloudtrail_log,
    waf_log, and cloudwatch_logs_subscription_filter are no longer supported. Use vpcflow,
    elbaccess, s3access, cloudtrail, waf, and cloudwatch respectively. The deprecated
    vpc_flow_log config field has been removed; use vpcflow instead.

  • pkg/ottl: Return errors when OTTL datapoint context setters are used on an incompatible data point type (#48384)
    For example, set(explicit_bounds, [1.0]) against a NumberDataPoint now returns an error
    rather than silently no-opping. Statements that were previously failing silently due to data
    point type mismatches will now surface as errors.

    Affected paths and the data point types they support:

    • value_double, value_int: NumberDataPoint
    • explicit_bounds, bucket_counts: HistogramDataPoint
    • scale, zero_count, positive, positive.offset, positive.bucket_counts,
      negative, negative.offset, negative.bucket_counts: ExponentialHistogramDataPoint
    • quantile_values: SummaryDataPoint
    • exemplars: NumberDataPoint, HistogramDataPoint, ExponentialHistogramDataPoint
    • count, sum: HistogramDataPoint, ExponentialHistogramDataPoint, SummaryDataPoint
  • processor/filter: Promote processor.filter.defaultErrorModeIgnore feature gate to beta. (#47232)
    The default error_mode of the filter processor is now ignore instead of propagate. To restore the previous behavior, disable the feature gate with --feature-gates=-processor.filter.defaultErrorModeIgnore.

  • processor/transform: Move the processor.transform.defaultErrorModeIgnore feature gate to beta. The default top-level error_mode is now ignore instead of propagate. (#48415)
    To revert to the previous default, disable the gate with --feature-gates=-processor.transform.defaultErrorModeIgnore.

  • receiver/http_check: Fix timing metrics (httpcheck.dns.lookup.duration, httpcheck.client.connection.duration, httpcheck.tls.handshake.duration, httpcheck.client.request.duration, httpcheck.response.duration) always reporting 0 on fast networks where phase durations are sub-millisecond. Metrics now report values in nanoseconds instead of milliseconds. (#47257)
    Integer division truncated sub-millisecond durations to 0. Metrics now use nanoseconds as the unit, so a 500µs duration is reported as 500,000 rather than 0.

  • receiver/jaeger: Remove stable gate receiver.jaeger.DisableRemoteSampling (#48616)

  • receiver/pprof: Restructure config under remote, file, self, and server sections, and add HTTP push ingestion at POST /v1/pprof. (#48276)
    The top-level fields endpoint, include, collection_interval, initial_delay,
    block_profile_fraction, and mutex_profile_fraction are now nested under the
    corresponding remote, file, or self subsection. Multiple modes can be enabled
    on a single receiver instance, each with its own collection interval. A new
    server section enables push-mode ingestion of pprof data over HTTP.

🚩 Deprecations 🚩

  • connector/metrics_as_logs: Rename component type from metricsaslogs to metrics_as_logs to follow snake_case naming convention. The old name is kept as a deprecated alias. (#48016)

  • exporter/load_balancing: Rename the loadbalancing exporter to load_balancing. The old loadbalancing type remains available as a deprecated alias. (#45339)

  • pkg/kafka/configkafka: Deprecate Kafka client config fields that became no-ops after the migration to franz-go. (#48260)

    • resolve_canonical_bootstrap_servers_only: franz-go has no direct equivalent
      to the associated Sarama config.
    • auth.sasl.version: franz-go negotiates the SASL handshake version
      automatically.

    Both fields are still accepted in configuration for backwards compatibility,
    but have no effect at runtime. They will be removed in a future release.

  • processor/k8s_attributes: Deprecate deployment_name_from_replicaset and default deployment name extraction to the ReplicaSet name heuristic. (#48447)

  • processor/resource_detection: Rename to resource_detection with deprecated alias resourcedetection (#48525)

🚀 New components 🚀

  • processor/gen_ai_normalizer: Add a processor that normalizes GenAI telemetry attributes from OpenInference and OpenLLMetry to the official OTel GenAI Semantic Conventions. (#46069)

💡 Enhancements 💡

  • cmd/opampsupervisor: Adds support for authenticator extensions in the supervisor when connecting to the upstream OpAMP server. (#47690)
    The Supervisor now supports the Bearer Token Authenticator Extension, Basic Auth Authenticator Extension, and OAuth2 Client Credentials Authenticator Extension. See the readme for more details.

  • cmd/opampsupervisor: Adds a framework for the supervisor to utilize extensions from the collector ecosystem (#47690)

  • cmd/opampsupervisor: Initial PR implementing package upgrades. Contains skeleton code that is unused. (#47298)

  • connector/count: Support OTTL path context names in conditions. (#48316)
    Conditions for spans, span events, metrics, data points, logs, and profiles can now use
    context-prefixed paths (e.g. span.attributes["env"], resource.attributes["host"],
    metric.name). Existing un-prefixed paths continue to work; they are interpreted in
    the context of the enclosing block. It is recommend to update your configuration to the new syntax
    to avoid breaking changes in the future.

  • connector/signal_to_metrics: Support OTTL context path prefixes in conditions and value expressions. (#48357)
    OTTL strings in conditions, value, count, and keys_expression fields may now use context path
    prefixes (e.g. span.attributes["foo"], datapoint.value_int, log.body, profile.duration_unix_nano).
    Unprefixed paths continue to work; it is highly recommend to use the new syntax to avoid breaking changes in the future.

  • connector/span_metrics: Add an opt-in series_expiration setting to expire stale spanmetrics series without changing existing metrics_expiration behavior. (#44187)

  • connector/sum: Support OTTL path-context names (e.g. span.attributes["foo"], resource.attributes["bar"], metric.name) in the conditions field. (#48329)
    Un-prefixed paths continue to work for now. If you are using un-prefixed paths, the updated statements will be printed on startup. It is highly recommended to switch to the new syntax to avoid breaking changes in the future.

  • exporter/alertmanager: adds support for sending logs to Alertmanager. (#48099)

  • exporter/elasticsearch: Implement experimental _noindex mapping hint to suppress indexing of individual signals. (#48310)
    This is an experimental feature and may change or be removed in future releases.
    When a span, span event, log record, or metric data point carries the
    _noindex value in its elasticsearch.mapping.hints attribute, the
    exporter skips emitting the bulk index operation for that document.

  • exporter/google_cloud_storage: Add retry and sending queue configuration options (#48045)
    Introduces retry_on_failure and sending_queue support via exporterhelper. Also ensures that non-retryable GCS SDK errors correctly return permanent errors to halt the sending queue, preventing infinite retries. Includes documentation on the interaction between GCS SDK retries and exporter helper retries.

  • exporter/honeycomb_marker: Support OTTL path-context names (e.g. log.body == "x", resource.attributes["service.name"] == "y") in markers[].rules.log_conditions. (#48325)
    Un-prefixed paths continue to work for now. If you are using un-prefixed paths, the updated statements will be printed on startup. It is highly recommended to switch to the new syntax to avoid breaking changes in the future.

  • exporter/kafka: Add health reporting to kafka exporter. (#47293)

  • exporter/kafka: Add per-signal message_key_from_metadata_key to derive the Kafka record key from client metadata. (#29433)
    Each signal (logs, metrics, traces, profiles) now accepts a message_key_from_metadata_key
    field that names a client metadata key whose value is used as the Kafka record key. This is mutually
    exclusive with the existing partition_* flags for the same signal. If the metadata key is absent
    or empty the record key is left nil.

  • exporter/load_balancing: Add owner_account option to AWS Cloud Map resolver for cross-account namespace discovery (#47895)
    The owner_account field allows the AWS Cloud Map resolver to discover instances
    in namespaces shared from other AWS accounts using AWS RAM. This maps directly to
    the OwnerAccount parameter in the AWS Cloud Map DiscoverInstances API call.

  • exporter/sumologic: Modify the sumologic exporter's default batching configuration (#47820)

  • extension/aws_logs_encoding: Add cloudwatch.streams for the cloudwatch format to route subscription-filter events to different inner encoding extensions based on logGroup/logStream patterns. (#46458)
    Each stream accepts a name, an encoding (component ID of the inner extension), optional
    log_group_pattern / log_stream_pattern matchers, and an optional payload mode (message
    or envelope). Known names (vpcflow, cloudtrail, lambda, waf, rds, eks, apigateway) carry
    default patterns and payload modes reflecting AWS ...

Read more

v0.152.0

Choose a tag to compare

@github-actions github-actions released this 11 May 13:38
v0.152.0
77b71af

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

Unmaintained Components

These components are marked as Unmaintained and will eventually be removed from our community distributions. If you depend on these components we need your help to support them.

  • receiver/huaweicloudces
  • exporter/alibabacloudlogservice

End User Changelog

🛑 Breaking changes 🛑

  • connector/span_metrics: Promote connector.spanmetrics.includeCollectorInstanceID feature gate to beta. (#40400)
    Adds a collector.instance.id attribute to all metrics emitted by the spanmetrics connector.
  • pkg/coreinternal: Promote internal.coreinternal.goldendataset.DontEmitV0NetworkConventions and internal.coreinternal.goldendataset.EmitV1NetworkConventions feature gates to Beta (#46680)
    Both feature gates should be promoted together as per RFC.
  • pkg/coreinternal: Promote internal.coreinternal.goldendataset.DontEmitV0RPCConventions and internal.coreinternal.goldendataset.EmitV1RPCConventions feature gates to Beta (#46680)
  • processor/tail_sampling: Stabilize disableinvertdecisions feature gate. (#47650)
  • receiver/kafka_metrics: Promote the receiver.kafkametricsreceiver.UseFranzGo feature gate to stable (#41480)
    The franz-go client is now the only implementation; the gate is now permanently enabled and will be removed in v0.154.0.
    The Sarama-based implementation has been removed.

🚩 Deprecations 🚩

  • connector/otlp_json: Rename component type from otlpjson to otlp_json to follow snake_case naming convention. The old name is kept as a deprecated alias. (#48019)
  • connector/round_robin: Rename component type from roundrobin to round_robin to follow snake_case naming convention. The old name is kept as a deprecated alias. (#48021)
  • connector/slow_sql: Rename component type from slowsql to slow_sql to follow snake_case naming convention. The old name is kept as a deprecated alias. (#48020)
  • exporter/bmc_helix: Rename exporter type from bmchelix to bmc_helix (#45339)
  • extension/kafkatopics_observer: Deprecate the kafkatopicsobserver extension in favor of using kafkareceiver directly (#48186)
  • processor/metrics_transform: Rename processor type from metricstransform to metrics_transform (#45339)
  • receiver/aws_lambda: Rename awslambda receiver to use lower_snake_case name aws_lambda. (#45339)
  • receiver/cloud_foundry: Rename receiver type from cloudfoundry to cloud_foundry (#45339)
  • receiver/google_cloud_spanner: Rename receiver type from googlecloudspanner to google_cloud_spanner (#45339)
  • receiver/kafka_metrics: Rename kafkametrics receiver to kafka_metrics with deprecated alias kafkametrics (#45339)
  • receiver/kubelet_stats: Rename receiver type from kubeletstats to kubelet_stats (#45339)
  • receiver/tcp_check: Rename tcpcheck receiver to tcp_check with deprecated alias tcpcheck (#45339)

🚀 New components 🚀

  • extension/mcp: Add new MCP server extension component. (#48072)
  • processor/cardinality_guardian: Add cardinalityguardianprocessor. (#47368)
  • processor/genainormalizer: Add a processor that normalizes GenAI telemetry attributes from OpenInference and OpenLLMetry to the official OTel GenAI Semantic Conventions. (#46069)

💡 Enhancements 💡

  • all: Support building with AIX (#47010)

  • cmd/opampsupervisor: Add support for declarative telemetry.resource configuration while preserving legacy inline resource attributes (#45116)
    cmd/opampsupervisor now accepts typed telemetry resource configuration,
    including declarative resource attributes and detectors, and validates
    unsupported mixed or deprecated forms.
    Example:
    telemetry:
    resource:
    attributes:
    - name: service.name
    value: opamp-supervisor

  • exporter/datadog: Add Kubernetes host alias provider to datadog exporter. (#47199)
    In Kubernetes environments, the Datadog exporter now automatically adds nodeName-clusterName as a
    host alias in the host metadata payload. Both the node name and cluster name must be discoverable for the alias to
    be added; the cluster name is resolved from cloud provider metadata (Azure, EC2, or GCP).

  • exporter/elasticsearch: Add ability to set filter_path in Elasticsearch exporter via the bulk_response_filter_path option. (#47204)

  • exporter/file: Allow usage of append mode with zstd compression (#44382)

  • exporter/kafka: Allow record_headers to accept multiple headers with the same key. (#48092)

  • exporter/loadbalancing: Add stable attribute routing key encoding for traces and metrics in the loadbalancing exporter (#46094, #46095)
    Routing keys now encode attributes as name=value| segments, including explicit markers for missing attributes.
    Non-string attribute values are deterministically stringified and used consistently across traces and metrics.

  • exporter/opensearch: specify an ingest pipeline to be used before writing documents (#47227)
    The pipeline option allows to specify an existing ingest pipeline that should process incoming documents.
    If the ingest pipeline does not exist, ingestion will fail.

  • extension/aws_logs_encoding: Populate ECS fields from VPC Flow Logs as log record attributes (#38861)
    Previously, VPC flow log fields prefixed with ecs- were skipped with a warning.
    They are now mapped to aws.ecs.* attributes on the emitted log record.

  • extension/bearertokenauth: Update token file parsing to ignore everything after the first whitespace, allowing for inline comments. (#46100)

  • extension/cgroup_runtime: Expose refresh_interval for GOMEMLIMIT to support dynamic memory limits. (#46768)

  • extension/docker_observer: Add include_all_containers option to emit a port-less endpoint for every running container, including those with no exposed ports. (#48252)
    When enabled, the observer emits a container endpoint with no port
    information for every running container, alongside any per-port endpoints.
    This allows receiver_creator rules of type == "container" to attach
    receivers to every container regardless of whether it exposes ports.
    Defaults to false for backwards compatibility.

  • extension/kafkatopics_observer: Switch to the franz-go client. (#48169)
    This is another step towards consolidating on franz-go for all Kafka components.
    We have already switched the receiver and exporter, and they are working well.

  • extension/mcp: Register available tools with MCP server. (#48103)

  • extension/pebble_tail_storage: Add initial implementation of the Pebble tail storage extension. (#47916)

  • pkg/faro: Emit k6_testRunId in the log body when meta.k6.testRunId is present in the Faro payload. (#47935)
    Surfaces the k6 test run identifier that the Faro Web SDK already
    forwards from window.k6.testRunId, alongside the existing
    k6_isK6Browser key. The reverse (logs -> Faro) translator extracts
    it back into Meta.K6.TestRunID for round-trip parity.

  • pkg/pdatatest: Introduce pmetrictest.ValidateMetrics to strictly validate duplicate datapoint identities. (#48106)

  • processor/attributes: Added support for default values in the attributes processor. (#45352)
    This enhancement allows users to specify default values for attributes in the attributes processor.
    If the primary value source (e.g., environment variable, attribute, or context value) is not available,
    the default value will be used. This ensures that the pipeline doesn't fail due to missing configuration.

  • processor/drain: Add drain processor to k8s distribution. (#47235)

  • processor/k8s_attributes: Improve deployment name extraction heuristic when deployment_name_from_replicaset is enabled (#44831)
    When deployment_name_from_replicaset is true and the ReplicaSet informer is not used for deployment names only,
    the processor derives k8s.deployment.name using the pod-template-hash label and ReplicaSet naming rules.
    When a ReplicaSet informer is running (for example for k8s.deployment.uid), API-backed metadata takes precedence,
    independent of the deployment_name_from_replicaset setting.

  • processor/k8s_attributes: Add watch_sync_period config option to configure informer cache resync period. (#48111)
    The watch_sync_period config option defaults to 5m to match the previously hardcoded behavior.

  • processor/k8s_attributes: Use PartialObjectMetadata for non-Pod informers (#47389)
    Switch Namespace, Node, Deployment, StatefulSet, DaemonSet, and Job informers
    from full typed objects to PartialObjectMetadata via the metadata client.
    These resources only need labels, annotations, UID, name, and owner references—all available
    in object metadata—so fetching full spec/status is unnecessary overhead.

    Pods continue using full objects since they require spec/status
    fields (pod IP, node name, containers, host network).

  • processor/resource: Added support for default values in the resource processor. (#45352)
    This enhancement allows users to specify default values for attributes in the resource processor.
    If the primary value source (e.g., environment variable, attribute, or context value) is not available,
    the default value will be used. This ensures that the pipeline doesn't fail due to missing configuration.

  • processor/schema: Add internal metrics for schema translation skip rate and cache hit/miss (#47638)
    Five new metrics are emitted via the collector's internal telemetry:

    • otelcol_processor_schema_logs.skipped
    • otelcol_processor_schema_metrics.sk...
Read more

v0.151.0

Choose a tag to compare

@github-actions github-actions released this 28 Apr 22:17
v0.151.0
25a1fd0

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

End User Changelog

🛑 Breaking changes 🛑

  • all: Removed DNS lookup processor skeleton. (#47874)

  • connector/datadog: Remove stable feature gate connector.datadogconnector.NativeIngest (#47580)

  • exporter/datadog: Remove stable feature gates exporter.datadogexporter.UseLogsAgentExporter and exporter.datadogexporter.metricexportnativeclient (#47583)

  • exporter/signalfx: Default api_url and ingest_url values derived from realm now use *.observability.splunkcloud.com instead of *.signalfx.com. (#47670)
    Explicit api_url and ingest_url settings are unchanged. Update network allowlists if they targeted only *.signalfx.com.

  • exporter/splunk_hec: Remove deprecated batcher config field. Use sending_queue::batch instead. (#47737)

  • extension/jaegerremotesampling: Remove replaceThriftWithProto feature gate. (#47553)

  • pkg/translator/prometheus: Removes pkg.translator.prometheus.NormalizeName feature gate which has been stable for some time. (#47597)

  • pkg/zipkin: Promote "pkg.translator.zipkin.DontEmitV0NetworkConventions" and "pkg.translator.zipkin.EmitV1NetworkConventions" feature gates to Beta. (#46682)
    This changes the default behavior to emit the new semantic convention attributes instead of the old deprecated ones.
    The Zipkin translator will now use network.local.address (replacing net.host.ip), network.peer.address (replacing net.peer.ip),
    and service.peer.name (replacing peer.service) by default when emitting spans.

  • processor/k8s_attributes: Disable otelcol.k8s.pod.association metric until pod_identifier attribute is properly calculated (#47669)

  • receiver/jaeger: Stabilize DisableRemoteSampling feature gate which has been in beta for over 2 years. (#47599)

  • receiver/prometheus: Remove receiver.prometheusreceiver.EnableNativeHistograms, receiver.prometheusreceiver.RemoveStartTimeAdjustment and receiver.prometheusreceiver.UseCreatedMetric feature gates. (#40606)

  • receiver/prometheus: Removes the feature gate receiver.prometheusreceiver.RemoveLegacyResourceAttributes which has been stable for some time. (#47598)

🚩 Deprecations 🚩

  • connector/service_graph: Rename component type from servicegraph to service_graph to follow snake_case naming convention. The old name is kept as a deprecated alias. (#47971)
  • connector/span_metrics: Rename component type from spanmetrics to span_metrics to follow snake_case naming convention. The old name is kept as a deprecated alias. (#47963)
  • exporter/honeycomb_marker: Rename exporter type from honeycombmarker to honeycomb_marker (#45339)
  • exporter/prometheusremotewrite: add_metric_suffixes is deprecated. Use translation_strategy: UnderscoreEscapingWithoutSuffixes if you are setting this to false. (#33661)
  • extension/aws_logs_encoding: Deprecates transparent gzip decompression in aws_logs_encoding and clarifies that callers must decompress payloads before invoking the streaming decoder. (#46463)
  • processor/log_dedup: Rename processor type from logdedup to log_dedup (#45339)
  • receiver/file_stats: Rename filestats receiver to file_stats with deprecated alias filestats (#45339)
  • receiver/fluent_forward: Rename receiver type from fluentforward to fluent_forward (#45339)
  • receiver/host_metrics: Rename hostmetrics receiver to host_metrics and add deprecated alias hostmetrics (#45449)
  • receiver/k8s_objects: Rename k8sobjects receiver to k8s_objects and add deprecated alias k8sobjects. (#47440)
  • receiver/ssh_check: Rename sshcheck receiver to ssh_check with deprecated alias sshcheck (#45339)

🚀 New components 🚀

  • extension/pebble_tail_storage: First PR for new Pebble tail storage extension (#47916)

  • processor/drain: Add drain processor that applies the Drain log clustering algorithm to annotate log records with a derived template string. (#47235)
    The processor sets log.record.template (e.g. "user <*> logged in from <*>") on each log record.
    Downstream processors such as the filter processor can act on this attribute to, for example, drop
    entire classes of noisy logs by template string.

    Key features:

    • Configurable Drain parse tree parameters (depth, similarity threshold, max clusters with LRU eviction)
    • Optional seeding via known template strings or example log lines for stable templates across restarts
    • passthrough warmup mode (default) and buffer warmup mode that holds records until the tree has stabilized
    • Internal telemetry metrics: active cluster count gauge, annotated and unannotated record counters
  • receiver/azure_functions: Initial implementation of the Azure Functions receiver to ingest logs from Azure Functions triggered by Event Hub. (#43507)

💡 Enhancements 💡

  • cmd/telemetrygen: Add new --timeout flag to set timeout for telemetrygen calls (#47203)

  • exporter/awss3: Add support for retry_on_failure (#47592)

  • exporter/azure_blob: Add sending_queue and timeout support (#47654)
    The azureblobexporter now supports sending_queue (with persistent storage, batching, and consumer configuration) and timeout configuration, matching the awss3exporter pattern.

  • exporter/clickhouse: Update the default logs table schema with an improved ORDER BY, materialized k8s/deployment attribute columns, and automatic ClickHouse 26.2+ full text search index selection. (#47720)
    The logs table DDL now uses ORDER BY (toStartOfFiveMinutes(Timestamp), ServiceName, Timestamp) and includes a set of
    materialized __otel_materialized_* columns for common k8s/deployment resource attributes.
    When connecting to ClickHouse 26.2+, the exporter creates TYPE text() indexes for full text search on attributes and body;
    on older versions it falls back to bloom_filter / tokenbf_v1 indexes. Existing tables are not modified
    (CREATE TABLE IF NOT EXISTS), and the INSERT path remains compatible with both the old and new schemas.

  • exporter/datadog: Include service.instance.id in OTLP resource attribute to Datadog metric tag mapping so it is sent as a metric tag by default. (#47936)
    service.instance.id is required to enable OTel traffic metrics on Datadog Fleet Automation.
    This change adds it to coreMapping so it is emitted as a Datadog metric tag when converting OTLP resource attributes.

  • exporter/elasticsearch: Refactor profiles attribute handling (#47801)
    The Profiles signal changed the handling of attributes and moved resource attributes from Sample
    to ResourceProfiles. Refactor attribute handling in elasticsearch exporter to reflect this change.

  • exporter/prometheusremotewrite: Add support for translation_strategy, which supports UnderscoreEscapingWithSuffixes, UnderscoreEscapingWithoutSuffixes, NoUTF8EscapingWithSuffixes, and NoTranslation. (#33661)

  • exporter/prometheusremotewrite: Add support for exemplar labels when using PRW 2.0 (#33661)

  • exporter/signalfx: Add support for PersistentVolume and PersistentVolumeClaim entity property updates. (#47829)
    Handle k8s.persistentvolume and k8s.persistentvolumeclaim entities in both the
    metadata update and entity events paths. Label prefix stripping is skipped for
    these entities to preserve full property key names.

  • exporter/signalfx: APM correlation now recognizes deployment.environment.name in addition to the deprecated deployment.environment attribute (#47862)

  • extension/aws_logs_encoding: Migrate CloudTrail log semconv RPC attributes from v1.38.0 to v1.40.0 via feature gates (#47549)

  • extension/aws_logs_encoding: Added auto-detection support for AWS Transit Gateway flow logs (#46229)
    The VPC flow log unmarshaler now automatically detects and handles Transit Gateway (TGW) flow logs from S3.
    Detection is based on the presence of the "resource-type" field in log file headers.
    TGW-specific fields (tgw-src-vpc-id, tgw-dst-vpc-id, etc.) are now supported and mapped to appropriate attributes.
    No configuration changes required - auto-detection works with default vpcflow format settings.

  • extension/azure_encoding: Add encoding.format scope attribute for metrics based on Azure resource provider (#47537)

  • extension/azure_encoding: Migrate semantic conventions to v1.40.0 (#47543)

  • extension/health_check: Enable keep-alives for the health check extension's HTTP and gRPC servers. (#45837)

  • pkg/coreinternal: Migrate semantic conventions to v1.40.0 (#47548)

  • pkg/faro: Translate new Faro payload fields Meta.Device, Meta.OS, App.InstallationID, and Exception.Fatal. (#47708)

  • pkg/ottl: Enhanced ParseSimplifiedXML by limiting the maximum XML nesting depth. (#47851)

  • pkg/ottl: Enhanced ConvertTextToElementsXML function by limiting the maximum XML nesting depth. (#47873)

  • pkg/ottl: Enhanced XML parsing by limiting the maximum XML nesting depth. (#47766)

  • pkg/ottl: Added debug-level logging when functions truncate or discard attributes (#9730)
    Added logging to the truncate_all and limit functions for each record that had attributes truncated or discarded, as per the OpenTelemetry specification on attribute limits

  • pkg/stanza: Timestamp operator - Add support for multiple timezone parsing (#47594)

  • pkg/zipkin: Migrate semantic conventions to v1.40.0 (#47545)

  • processor/drain: Promote Drain Processor from development to alpha stability and add to contrib distribution. (#47235)

  • processor/k8s_attributes: Allow k8sattributes processors to be shared between pipelines (#36234)
    When the processor.k8sattributes.ShareProcessorBetweenPipelines feature flag is enabled, k8sattributes processors
    using the same configuration are shared between pipelines. This reduces the local cache size and the number of
    c...

Read more

v0.150.0

Choose a tag to compare

@github-actions github-actions released this 13 Apr 13:20
v0.150.0
5358b47

The OpenTelemetry Collector Contrib contains everything in the opentelemetry-collector release, be sure to check the release notes there as well.

Unmaintained Components

These components are marked as Unmaintained and will eventually be removed from our community distributions. If you depend on these components we need your help to support them.

End User Changelog

🛑 Breaking changes 🛑

  • pkg/ottl: Return errors when OTTL context accessors receive values of the wrong type (part 2) (#40198)
    Setters in OTTL contexts now validate that values are of the expected type and return
    descriptive errors when type mismatches occur. This is the continuation of work done in
    #43505, addressing remaining contexts: datapoint, profile, profilesample, resource, span,
    and spanevent.

    Changes include:

    • Slice setters (explicit_bounds, bucket_counts, positive.bucket_counts, negative.bucket_counts)
      now use SetCommonTypedSliceValues/SetCommonIntSliceValues for better type handling.
    • SetMap now returns an error for invalid value types instead of silently ignoring them.

    Note: Users may see new errors from OTTL statements that were previously silently failing
    due to type mismatches. These errors indicate pre-existing issues in OTTL configurations that
    were not being applied as expected.

  • processor/resourcedetection: Remove feature gate processor.resourcedetection.propagateerrors (#45853)

  • processor/transform: Remove the processor.transform.ConvertBetweenSumAndGaugeMetricContext feature gate. (#47358)
    This feature gate has been stable for over a year and is no longer used in any code paths.

  • receiver/k8s_cluster: Kubernetes resource labels in entity events are now prefixed per OTel semantic conventions. (#47491)
    Labels on Kubernetes resources emitted as entity event attributes are now prefixed with
    k8s.<resource>.label. to align with OTel semantic conventions (e.g. k8s.pod.label.<key>,
    k8s.node.label.<key>, k8s.deployment.label.<key>, etc.).
    Previously, label keys were emitted verbatim without any prefix.
    Users consuming entity event attributes by label key will need to update their configurations.

  • receiver/kubeletstats: Disable deprecated resource attributes by default (#47184)
    The following resource attributes are deprecated and will now be disabled by default:
    aws.volume.id, fs.type, gce.pd.name, glusterfs.endpoints.name, glusterfs.path, and partition.
    All of these attributes will be removed in a future release.

🚩 Deprecations 🚩

  • receiver/http_check: Rename httpcheck receiver to http_check with deprecated alias httpcheck (#45339)
  • receiver/named_pipe: Rename namedpipe receiver to named_pipe with deprecated alias namedpipe. (#45339)
  • receiver/tcp_log: Rename tcplog receiver to tcp_log with deprecated alias tcplog (#45339)
  • receiver/tls_check: Rename tlscheck receiver to tls_check with deprecated alias tlscheck (#45339)
  • receiver/udp_log: Rename udplog receiver to udp_log with deprecated alias udplog (#45339)
  • receiver/windows_event_log: Rename windowseventlog receiver to windows_event_log with deprecated alias windowseventlog (#45339)

🚀 New components 🚀

  • exporter/google_secops: Add Google SecOps exporter for sending logs to the Google SecOps (Chronicle) Ingestion APIs. (#46148)
  • processor/spanpruning: Add span pruning processor for aggregating repetitive leaf spans in trace data. (#45654)
  • receiver/osquery: Implement osquery query scraping (#30375)

💡 Enhancements 💡

  • exporter/datadog: Promote exporter.datadogexporter.DisableAllMetricRemapping feature gate to beta. (#47212)

    • All metrics remappings are now handled by the Datadog backend and this should be a transparent change. If you run into any issues, please disable the feature gate by passing --feature-gates=-exporter.datadogexporter.DisableAllMetricRemapping and reach out to Datadog support (https://www.datadoghq.com/support/).
  • exporter/elasticsearch: Add suppress_conflict_errors config to optionally silence document level 409 version conflict logs (#47248)

  • exporter/kafka: Add record_headers configuration option to set static headers on outgoing records (#47193)

  • exporter/kafka: Add support for partitioning kafka records (#46931)
    Add support for RoundRobin and LeastBackup partitioning strategies, as well as custom partitioners
    provided by RecordPartitionerExtension implementations. Users can implement their own partitioning logic
    and plug it into the kafka exporter via the RecordPartitionerExtension interface.

  • exporter/prometheus: Exemplar support for exponential histograms in Prometheus exporter (#47159)

  • exporter/prometheus: prevent panic on histogram with empty BucketCounts. (#47351)
    Guard BucketCounts access with a length check in convertDoubleHistogram to avoid index-out-of-range panic when a histogram has explicit bounds but no corresponding bucket counts.

  • exporter/signalfx: Add dimension_client::strip_k8s_label_prefix option to strip k8s.<resource>.label. prefix from dimension property updates. (#47491)
    The k8s cluster receiver now emits Kubernetes resource labels in entity events with the
    k8s.<resource>.label. prefix per OTel semantic conventions (e.g. k8s.pod.label.app).
    When strip_k8s_label_prefix: true (the default), the SignalFx exporter strips this prefix
    when forwarding labels as dimension properties, preserving the existing SignalFx behavior (e.g. app).
    Set strip_k8s_label_prefix: false to disable stripping and receive the full prefixed keys.

  • exporter/sumologic: Modify default retry settings to prevent dropping data on transient backend unavailability (#47503)

  • extension/datadog: Add gateway_service and gateway_destination config fields to support gateway topology view in Fleet Automation. (#47471)
    Gateway collectors set gateway_service to the k8s Service fronting them.
    Agent/daemonset collectors set gateway_destination to the k8s Service they forward telemetry to.
    Both fields are optional and omitted from the metadata payload when empty.

  • extension/health_check: Migrate extension.healthcheck.useComponentStatus feature gate registration from manual code to metadata.yaml for mdatagen code generation (#46116)

  • extension/sumologic: Adding support to sumologic extension for auto discovery of services in windows (#47349)

  • pkg/ottl: Add Coalesce converter that returns the first non-nil value from a list of arguments. (#46847)
    The Coalesce converter accepts a list of values and returns the first one that is not nil.
    This simplifies common patterns where a canonical attribute must be resolved from multiple possible sources.
    Example: set(attributes["user"], Coalesce([attributes["user.id"], attributes["enduser.id"], "unknown"]))

  • pkg/stanza: Optimizing the performance of Windows Event log unmarshalling when raw = true (#47164)

  • pkg/stanza: Add new scrape model for Windows event logs using an event-driven subscription instead of polling (#47091)

  • pkg/stanza: Add on_truncate option to fileconsumer to control behavior when a file's stored offset exceeds its current size. (#43693)

  • processor/filter: Add feature gate processor.filter.defaultErrorModeIgnore to change default error_mode to ignore (#47232)

  • processor/interval: Flush remaining buffered metrics on shutdown to prevent data loss during restarts and rollouts. (#47238)
    Previously, the interval processor would silently drop any metrics accumulated
    in its buffer when receiving a shutdown signal. Now it flushes the buffer to
    the next consumer before exiting, consistent with the batch processor behavior.

  • processor/lookup: Add DNS lookup source and LRU caching (#46114)
    Adds a DNS source that performs reverse DNS lookups (PTR records) to resolve IP addresses to hostnames.
    Implements a full LRU cache with size-based eviction, TTL expiration, and negative caching.
    The DNS source has caching enabled by default.

  • processor/spanpruning: Add full implementation of the span pruning processor. (#45654)

  • processor/tail_sampling: Add gated tail storage extension support to tailsampling processor via new tail_storage config (#45250)
    Introduces a new tail storage interface with in-memory default behavior and allows extension-backed storage when
    the processor.tailsamplingprocessor.tailstorageextension feature gate is enabled.

  • processor/transform: Add feature gate processor.transform.defaultErrorModeIgnore to change default error_mode to ignore (#47231)

  • processor/transform: Add support for semantic conventions 1.38.0, 1.39.0, and 1.40.0 in the set_semconv_span_name function. (#45911)
    The set_semconv_span_name function now recognizes semantic conventions 1.38.0, 1.39.0, and 1.40.0, allowing span names to be determined using the latest rules. Support for the rpc.system.name attribute (introduced in 1.39.0) has been added so span names can reflect the new RPC system conventions. Backward compatibility is preserved: the rpc.system attribute remains supported.

  • receiver/active_directory_ds: Enables dynamic metric reaggregation in the Active Directory Domain Services receiver. This does not break existing configuration files. (#46346)

  • receiver/apachespark: Enable the re-aggregation feature for the apachespark receiver (#46349)

  • receiver/awss3: add `tag_object_after_inge...

Read more