Releases: open-telemetry/opentelemetry-collector-contrib
Release list
v0.159.0
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 thekafkareceiverwith topic regex support instead. -
extension/observer: Removes thekafka.topicsendpoint type along with the kafkatopicsobserver extension (#48186)
Theobserver.KafkaTopicTypeendpoint type and itsobserver.KafkaTopicdetails struct are
removed, as the kafkatopicsobserver was the only observer emitting them. The receivercreator
no longer acceptstype == "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). Theruleattribute value for traces dropped with
no matching rule changes fromunmatchedto_unmatchedto follow the same convention. -
receiver/file_log:ordering_criteria::top_n: 0now means 'match all files' instead of silently behaving liketop_n: 1. (#47444)
To restore the previous behavior of matching the first file only, setordering_criteria::top_n: 1.
🚩 Deprecations 🚩
-
exporter/azure_monitor: Renameazuremonitortoazure_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 implicitordering_criteria.top_ndefault of 1 whenordering_criteria.sort_byis configured. Enable thefilelog.requireExplicitTopNfeature gate to requiretop_nto be set explicitly. (#47444)
Whenordering_criteria.sort_byis configured withouttop_n, the matcher
silently defaultstop_nto 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.requireExplicitTopNfeature gate makes an unsettop_na
startup error whensort_byis 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. Usetop_n: 1to keep the
previous behavior.Independently of the feature gate,
top_n: 0now means "match all files"
instead of silently behaving liketop_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 thesd_notifyextension, 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; setmax_event_payload_bytes: 1048576
to take advantage of the new ceiling. A newcwlogs.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)
Addstelemetry_mappings.traces.http.successsettings for HTTP success mapping:
additional_success_status_codeslists status codes treated as Success on both
server and client HTTP spans, andserver_policy: oteltreats 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 nestedhttpconfig 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 excludingcontainer.memory.rssin SignalFx exporter by default. (#50162) -
extension/aws_iam_db_auth: Changeaws_iam_db_authto alpha (#50118) -
extension/pebble_tail_storage: Addedmax_storage_size_mibsupport 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 optionalfleet_idconfiguration 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 thedatadog.EnableScopeConventionfeature gate to control theotel.scopename and version conventions in the Datadog exporter. (#49001)
When thedatadog.EnableScopeConventionfeature gate is enabled, spans additionally
carry theotel.scope.nameandotel.scope.versionattributes. The deprecated
otel.library.nameandotel.library.versionattributes 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.Valueis now comparable using all comparison operators (==, !=, <, <=, >=, >) in OTTL expressions (#49170) -
pkg/ottl: Thesetfunction will passnilvalues directly to the target when theottl.set.allowNilfeature 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: UseMoveToinstead ofCopyTowhen accumulating and forwarding spans, reducing allocations and improving throughput. (#49311) -
processor/resource_detection: Add feature gates to migrate theelastic_beanstalkdetector to the current deployment semantic conventions. (#50130)
The detector reports the deployment environment asdeployment.environment, which is deprecated in
the semantic conventions, and the deployment ID asservice.instance.id. Two alpha feature gates
migrate them todeployment.environment.nameanddeployment.id:
processor.resourcedetection.elasticbeanstalk.EmitV1DeploymentConventionsadds the current
attributes, andprocessor.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...
v0.158.0
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 thereports_package_statusescapability config option. Theaccepts_packagesoption 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 theextract_parametersandparams_attributeconfig fields released in v0.157.0. (#48914)
Addsmasking_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 prefixlog.record.template.parameter), matching
the OTel semantic-convention pattern used byhttp.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 atwildcards_attribute(default
log.record.template.wildcards). Independent ofmasking_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. Theotelcol_processor_drain_masks_duplicatescounter is incremented
once per record per duplicated mask name, tagged with amaskattribute for observability.Breaking: the positional-only
extract_parametersandparams_attributefields released in
v0.157.0 are removed. Collectors with either field set will fail to start after upgrading.
To migrate, replaceextract_parameters: truewithemit_wildcards: true, and rename
params_attributetowildcards_attribute. The behaviour is identical; only the field names
change. Note the default output attribute also renames fromlog.record.template.paramsto
log.record.template.wildcards, so downstream consumers of the old attribute key should either
update their references or setwildcards_attribute: log.record.template.paramsto keep the
old key. -
processor/dynamic_sampling: Flatten sampler config, renamekey_fieldstokey_attributes, dropinitial_sampling_rate. (#49311)
Sampler fields no longer live under a per-type sub-block (sampler.<type>.<field>);
they move up one level undersampler:withtypeacting as the discriminator.
key_fieldsis renamed tokey_attributesto match OTel attribute vocabulary used
elsewhere in the processor. The rarely-usedinitial_sampling_rateon
ema_throughputis removed; dynsampler-go's default applies.goal_throughput_per_sec
is nowintfor 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 amatchfield to control same-span vs any-span semantics. (#49311)
Ruleconditions: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-rulematch:field selectsany_span(default, each condition
satisfied by some span) orsame_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.pdbis now a data-point attribute (opt-in) instead of a resource attribute. (#48643)
oracle.db.pdbhas moved from a resource attribute to an opt-in data point attribute.
Downstream pipelines that grouped, routed, or filtered onoracle.db.pdbat 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 viametrics.<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: Collectpostgresql.database.locksfrom each configured database instead of only the defaultpostgresdatabase. (#49206)
Previously the metric was collected once against the defaultpostgresdatabase, so locks on relations
belonging to other configured databases were silently dropped, and all data points were emitted on the
instance-level resource withoutpostgresql.database.name. Lock data points for database-local relations
are now emitted on the corresponding per-database resource with thepostgresql.database.nameresource
attribute. Locks on shared system catalogs (e.g.pg_database) are reported once at the instance level.
When thereceiver.postgresql.useOTelSemconvfeature gate is enabled there is a single server-level
resource, so the data points instead carry adb.namespaceattribute 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 emptydb.namespace, since they
are server-scoped rather than database-scoped.
The lock count now usesCOUNT(*)instead ofCOUNT(pid), so locks held by prepared transactions
(which have a NULLpidinpg_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-detectorfail_on_missing_metadatain thealibaba_ecsdetector config (#46579)
Use the top-levelfail_on_missing_metadatain 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-detectorfail_on_missing_metadatain thenova(OpenStack) detector config (#46579)
Use the top-levelfail_on_missing_metadatain 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-detectorfail_on_missing_metadatain theec2detector config (#46579)
Use the top-levelfail_on_missing_metadatain 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-detectorfail_on_missing_metadatain thetencent_cvmdetector config (#46579)
Use the top-levelfail_on_missing_metadatain 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-detectorfail_on_missing_metadatain theupclouddetector config (#46579)
Use the top-levelfail_on_missing_metadatain 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-detectorfail_on_missing_metadatain thevultrdetector config (#46579)
Use the top-levelfail_on_missing_metadatain 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 implementsdbauth. (#49044)receiver/dns_check: Add initial skeleton of DNS Check receiver (README, config, factory, metadata) with In Development stability. (#49561)
💡 Enhancements 💡
exporter/datadog: Addexporter.datadogexporter.AddUnitsfeature gate that maps OTLP (UCUM) metric units to their Datadog equivalents. (#15280)exporter/elasticsearch: Allowtraces,profiles, andsyntheticsas validdata_stream.typevalues when overriding via attributes inbodymapmapping mode, in addition to the existinglogsandmetrics. (#49337)exporter/prometheus_remote_write: Addconvert_explicit_histograms_to_nhcbto convert explicit-bucket (classic) histograms into Native Histograms with Custom Buckets (NHCB) on export, withkeep_classic_histogramsto emit both representations during migration. (#33661)
Whenconvert_explicit_histograms_to_nhcbis set, ...
v0.157.0
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 fieldretry_gapandmax_retries(#49583) -
connector/routing: Promote theconnector.routing.defaultErrorModeIgnorefeature gate to beta. The defaulterror_modeis nowignoreinstead ofpropagate. (#48418)
To restore the previous default ofpropagate, run the collector with the feature gate disabled by passing--feature-gates=-connector.routing.defaultErrorModeIgnore. -
processor/aws_ecs_attributes: Rename the component identifier fromawsecsattributestoaws_ecs_attributesto 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 theprocessor.filter.defaultErrorModeIgnorefeature gate to stable. The default top-levelerror_modeis now permanentlyignoreinstead ofpropagate. (#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 theprocessor.transform.defaultErrorModeIgnorefeature gate to stable. The default top-levelerror_modeis now permanentlyignoreinstead ofpropagate. (#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 thecpuattribute opt-in for hostmetrics CPU time and utilization metrics. (#49161)
By default,system.cpu.timeandsystem.cpu.utilizationare now aggregated across logical CPUs and no longer include thecpuattribute.
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 thesystem.cpu.logical.countmetric 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: Changesqlserver.lock.timeout.rateto emit per-type data points (#48925)
sqlserver.lock.timeout.ratenow requires asqlserver.lock.timeout.typeattribute
(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: falseandstability: 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: Renamespanpruningprocessor tospan_pruningand add deprecated aliasspanpruning(#47590)
🚀 New components 🚀
config/configdbauth: Add config fordbauth, so components can use this in the config to support databasee authentication like AWS IAM. (#49044)extension/dbauth: Add extension interface fordbauth. (#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 inspectagent.log. This behavior is
disabled by default; setagent::collector_crash_log_snippet_kibto a positive
KiB count, such as4, up to1024(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 optionagent.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: Adddatadog.serializerexporter.UseSyncForwarderfeature gate (Alpha, disabled by default) that replaces the async DefaultForwarder with a synchronous forwarder so metric send failures are surfaced to OTel'sexporterhelperretry/queue layer. (#49571)
When enabled via--feature-gates=+datadog.serializerexporter.UseSyncForwarder, the metric serializer
exporter path gains three improvements over the legacy async forwarder:-
Error propagation: Datadog intake errors (5xx → retryable, 4xx → permanent drop) are returned
fromConsumeMetricsinstead of being silently swallowed.otelcol_exporter_send_failed_metric_points
now accurately reflects failures. -
OTel-native retry: Because errors are propagated, the configured
retry_on_failurepolicy is
respected. Transient 5xx errors are retried byexporterhelperrather than lost. -
Queue-overflow visibility: When the OTel sending queue fills up (workers blocked on slow/failed
intake calls),otelcol_exporter_enqueue_failed_metric_pointsincrements instead of metrics being
silently dropped inside the DefaultForwarder's internal queue.
Note:
retry_on_failureconfig 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: Addretry::retry_on_document_statusto configure document-level retry status codes separately from request-level retries. (#48681) -
exporter/kafka: Addexporter.kafka.useRequestTypealpha 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: itemsthen 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: Addmapping.manage_index_templateoption forotel-v1mode that creates the matching composable index templates on startup. (#48585)
When enabled, the exporter creates theotel-v1-apm-span-index-templateandotel-v1-logs-index-templatecomposable index templates idempotently on startup, materializingdate_nanostimestamp 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 withmapping.mode: otel-v1; validation rejects the combination with other modes. -
exporter/signalfx: Translatecpu.num_processorsfromsystem.cpu.logical.count. (#49296)
The exporter no longer derivescpu.num_processorsby counting per-coresystem.cpu.timeseries. -
exporter/signalfx: Simplifysystem.cpudefault translations now that hostmetrics CPU metrics are state-aggregated by default. (#49589)
The default translations no longer aggregate translated CPU metrics across thecpuattribute. If that attribute is explicitly re-enabled onsystem.cpu.time, translatedcpu.*andcpu.utilizationdatapoints keep it. -
exporter/signalfx: Exportsystem.cpu.timeandsystem.disk.ioby 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 theWhenOTTL converter for selecting a value based on a lambda condition. (#49356) -
pkg/ottl: Add theMapKeysOTTL converter for transforming m...
v0.156.0
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 therequestcontext in favor ofotelcol.*OTTL paths. (#44762)
The routing connectorrequestcontext andrequest["key"]condition syntax are deprecated in favor of
otelcol.client.metadata["key"][0]for HTTP/client metadata andotelcol.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 therequestcontext is still configured. -
exporter/datadog: Theexporter.datadogexporter.metricremappingdisabledfeature gate no longer has any effect when the serializer exporter path is active (the default). Useexporter.datadogexporter.DisableAllMetricRemappingto disable metric remapping. (#49320)
See DataDog/datadog-agent#51232. -
receiver/aws_cloudwatch: rename toaws_cloudwatchwith deprecated aliasawscloudwatch(#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"]orspan.attributes["http.method"]).
Unqualified paths likeattributes["key"]continue to work and default to the resource context for backward compatibility. -
exporter/alibabacloud_logservice: Addsecurity_token(STS) support alongside AK/SK; preserve ECS role/token-file fallback. (#48624)
Whensecurity_tokenis provided in the exporter configuration the SDK is
configured to use static STS credentials via the provider. The existing
ecs_ram_roleandtoken_file_pathbehavior remains the higher-priority
authentication method and is unchanged. -
exporter/clickhouse: Add experimental support for the profiles signal (#49304) -
exporter/datadog: Emitotel.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 useotel.datadog_exporter.metrics.running{host}unchanged.
otel.datadog_exporter.metrics.runningwill no longer be tagged withtask_arn. Fargate workloads will only useotel.datadog_exporter.metrics.running.fargate{task_arn}. -
exporter/datadog: Fargate workloads now emit a dedicatedotel.datadog_exporter.metrics.running.fargatemetric tagged withtask_arninstead of sharingotel.datadog_exporter.metrics.runningwith host-based workloads. (#49320)
Host-based workloads continue to emitotel.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: Addedmax_sizesupport 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: Addexemplarcontext support to the transform processor, allowingmetric_statementsto 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)
Addsotelcol_faro_log_ingested_total,otelcol_faro_measurement_ingested_total,
otelcol_faro_exception_ingested_total, andotelcol_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 adb.server.query_samplelog 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.
Thelogssignal is atdevelopmentstability; attribute names may change until OTel
db.server.query_sampleconventions stabilize. Themetricssignal remains atbeta. -
receiver/oracledb: Addservice.nameandservice.namespaceopt-in resource attributes and allow overriding any resource attribute viaoverride_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.timeoracledb.cursor.cache.hits,oracledb.cursor.cache.size,oracledb.cursor.openoracledb.db.timeoracledb.enqueue.operationsoracledb.lob.operationsoracledb.parse.cpu.time,oracledb.parse.elapsed.timeoracledb.scan.count,oracledb.scan.table.rowsoracledb.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 todb.server.query_sampleevents 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: Promotereceiver.prometheusreceiver.IgnoreScopeInfoMetricfeature gate to beta. (#47312)
Theotel_scope_infometric 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.ratesqlserver.extent.operation.ratesqlserver.ghost_record.skipped.ratesqlserver.page.allocation.ratesqlserver.page.compression.ratesqlserver.page.read_ahead.ratesqlserver.scan_point.revalidation.rate
...
v0.155.0
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: Movecmd/schemagento opentelemetry-collector asgo.opentelemetry.io/collector/cmd/schemagen. (#14543)
TheschemagenCLI now lives in the opentelemetry-collector repository. Existingmake schemagenand
make generate-schemastargets continue to work — they now invoke the tool via
go run go.opentelemetry.io/collector/cmd/schemagen@latest. Override the newSCHEMAGEN_PKGvariable
to pin a specific release. Downstream users that previously imported
github.com/open-telemetry/opentelemetry-collector-contrib/cmd/schemagenmust update their import path
togo.opentelemetry.io/collector/cmd/schemagen. -
exporter/signalfx: Stop calculating per-corecpu.*metrics disabled by default. (#49247)
The default transformations still create aggregate CPU metrics. However, per-corecpu.*metrics which are disabled by default aren't produced by the default transformations anymore.
To emit equivalent per-core CPU metrics, copy and aggregatesystem.cpu.timewith the transform processor. For example, to emit per-corecpu.idlemetrics: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 calculatingcpu.utilization_per_coredisabled by default. (#49243)
The exporter still creates the aggregatecpu.utilizationmetric by default. However,cpu.utilization_per_corewhich is disabled by default isn't produced by the default transformations anymore.
To emit an equivalentcpu.utilization_per_coremetric, enablesystem.cpu.utilizationin thehost_metricsreceiver, 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),statusmaps to the severity number/text,hostname/serviceand knownddtags
are promoted to resource attributes, anddd.trace_id/dd.span_idpopulateTraceID/SpanIDfor
trace correlation (reconstructing full 128-bit trace ids from_dd.p.tidthe same way spans do).
A newlogs::decode_json_messageoption (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 thereceiver.datadogreceiver.Enable128BitTraceIDfeature 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.tidand 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: Setdb.namespaceto database name and addoracle.db.serviceattribute on query sample and top query events. (#48996)
Ondb.server.query_sampleanddb.server.top_queryevents,db.namespace
now reports the database name instead of the Oracle service
name. The service name moves to the neworacle.db.serviceattribute.
🚩 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 fromflinkmetricstoflink_metrics(#45339)receiver/splunk_enterprise: Rename receiver type fromsplunkenterprisetosplunk_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: Addconnector.routing.defaultErrorModeIgnorefeature gate to change defaulterror_modefrompropagatetoignore(#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 forgzipandzstdcompression to the Azure Blob Storage exporter. Thecompressionconfig 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 tologs-apm.error-*and all other
span events tologs-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 gateexporter.file.nativeCompressionenables native file-level zstd compression.
When enabled, the exporter produces standard.zstfiles that can be decompressed withzstd -d,
unlike the legacy per-message compression format which requires custom tooling. -
exporter/google_cloud_storage: Adduniverse_domainconfig option to support Sovereign Google Cloud regions. Setting this field passesoption.WithUniverseDomainto the underlying Google API client. (#48924) -
exporter/google_cloud_storage: Addresource_attrs_to_gcsto partition objects by a resource attribute value. (#49136)
Whenresource_attrs_to_gcs.prefixis set, the value of the given resource attribute
(read from the first resource of each batch) is inserted as a partition path segment
betweenbucket.partition.prefixand the time-basedbucket.partition.format, mirroring
theawss3exporterresource_attrs_to_s3behavior. -
exporter/googlecloudpubsub: Adduniverse_domainconfig option to support Sovereign Google Cloud regions. Setting this field passesoption.WithUniverseDomainto the underlying Google API client. (#48924) -
`ex...
v0.154.0
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: Validatecalls_dimensionsandhistogram.dimensionsat startup (#48097)
Duplicate dimension names incalls_dimensionsorhistogram.dimensionspreviously passed silently; they now fail validation at startup, matching the behaviour of the top-leveldimensionssetting. -
exporter/prometheus: Promote theexporter.prometheusexporter.DisableAddMetricSuffixesfeature gate to beta. (#48930)
The deprecatedadd_metric_suffixessetting is now ignored by default. To preserve the previous no-suffix behavior, settranslation_strategy: UnderscoreEscapingWithoutSuffixes. -
receiver/vcenter: Set resourcePoolMemoryUsageAttribute feature gate to beta. (#47552)
🚩 Deprecations 🚩
-
exporter/prometheus_remote_write: Rename toprometheus_remote_writewith deprecated aliasprometheusremotewrite(#45339) -
exporter/signalfx: Traces have been deprecated for the exporter (#48748)
Trace correlation functionality no longer requires thesignalfxexporter 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: Thek8snodedetector is deprecated; usek8s_apiinstead. (#48597)
Both names work and produce identical output. When switching tok8s_api, also rename your config section fromk8snode:tok8s_api:; keeping the old key under the new detector name will silently apply defaults instead. -
receiver/apache_spark: Renameapachesparkreceiver toapache_sparkwith deprecated aliasapachespark(#45339) -
receiver/envoy_als: Renameenvoyalsreceiver toenvoy_alswith deprecated aliasenvoyals(#45339) -
receiver/kafka: Deprecategroup_rebalance_strategyin favor ofgroup_rebalance_strategies(#48658)
Usegroup_rebalance_strategiesto configure one or more ordered protocols. The singular field remains supported for backward compatibility but logs a deprecation warning on startup.
group_rebalance_strategyandgroup_rebalance_strategiesare mutually exclusive; setting both fails validation. -
receiver/otlp_json_file: rename tootlp_json_filewith deprecated aliasotlpjsonfile(#45339) -
receiver/webhook_event: Renamewebhookeventreceiver towebhook_eventwith deprecated aliaswebhookevent(#45339) -
receiver/windows_service: Rename receiver type fromwindowsservicetowindows_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-rflag to resolve external$refentries inline, replacing references with the actual type definitions from the referenced packages. (#48735)
When-ris 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: AddfactoryMapsoverride to generate schemas for config fields populated via factory dispatch maps. (#48815)
Some components tag a config fieldmapstructure:"-"and populate it at runtime by dispatching
against a package-level factory map (e.g.hostmetricsreceiver'sscrapersfield). The schemagen
parser previously skipped these fields entirely.A new
factoryMapsoption in.schemagen.yamlcomponentOverridesinstructs 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 frominternal/metadata), composite literals with inline
component.MustNewType("key")keys, and composite literals with qualifiedpkg.ConstNamekeys.Wired up for
receiver/hostmetricsreceiver(11 scraper keys),receiver/ciscoosreceiver
(2 scraper keys), andprocessor/geoipprocessor(1 provider key). -
connector/span_metrics: Support for glob expressions in thedimensionsfield 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: Addtag_mappingsconfig to override the resource-attribute precedence used to populate Application Insights envelope tags (#47657)
The optionaltag_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])
andapplication_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 usingservice(default, routes by service.name),resource(routes by
full resource identity), orattributes(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: Addotel-v1mapping 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-spanfor traces andotel-v1-logsfor logs. Customtraces_index/logs_indexoverrides still apply, anddataset/namespaceare 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: Promotepebble_tail_storageextension 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:Substringfunction now supports UTF-8 safe slicing (#48436)
New optional parameterutf8_safe(default:false). Set totrueto adjust slice
boundaries so multi-byte UTF-8 characters are never cut in the middle; the result
may then be shorter thanlengthbytes. Default preserves the existing byte-level
slicing behavior. -
pkg/ottl: Addottlexemplarcontext exposing per-exemplar fields (time,filtered_attributes,double_value,int_value,trace_id,span_id) for use in OTTL statements. (#47490) -
pkg/stanza: Add anoneprotocol 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'sservice.telemetry.metricsconfiguration):otelcol_cumulativetodelta_datapoints: number of datapoints converted from cumulative to delta temporality (with ametric_typeattribute:sum,histogram, orexponential_histogram).otelcol_cumulativetodelta_datapoints_dropped: number of datapoints dropped instead of converted, with the samemetric_typeattribute and areasonattribute (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 thecustomsource for user-defined GenAI attribute renames and value foldings. (#48677) -
processor/gen_ai_normalizer: Promote `gen_ai_no...
v0.153.0
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 deprecatedclickhouse.jsonfeature gate. Users should setjson: truein the exporter config directly. (#47888) -
extension/aws_logs_encoding: Remove deprecated format values and thevpc_flow_logconfig field. (#42901)
The deprecated format valuesvpc_flow_log,elb_access_log,s3_access_log,cloudtrail_log,
waf_log, andcloudwatch_logs_subscription_filterare no longer supported. Usevpcflow,
elbaccess,s3access,cloudtrail,waf, andcloudwatchrespectively. The deprecated
vpc_flow_logconfig field has been removed; usevpcflowinstead. -
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 aNumberDataPointnow 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: NumberDataPointexplicit_bounds,bucket_counts: HistogramDataPointscale,zero_count,positive,positive.offset,positive.bucket_counts,
negative,negative.offset,negative.bucket_counts: ExponentialHistogramDataPointquantile_values: SummaryDataPointexemplars: NumberDataPoint, HistogramDataPoint, ExponentialHistogramDataPointcount,sum: HistogramDataPoint, ExponentialHistogramDataPoint, SummaryDataPoint
-
processor/filter: Promoteprocessor.filter.defaultErrorModeIgnorefeature gate to beta. (#47232)
The defaulterror_modeof the filter processor is nowignoreinstead ofpropagate. To restore the previous behavior, disable the feature gate with--feature-gates=-processor.filter.defaultErrorModeIgnore. -
processor/transform: Move theprocessor.transform.defaultErrorModeIgnorefeature gate to beta. The default top-levelerror_modeis nowignoreinstead ofpropagate. (#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 underremote,file,self, andserversections, and add HTTP push ingestion atPOST /v1/pprof. (#48276)
The top-level fieldsendpoint,include,collection_interval,initial_delay,
block_profile_fraction, andmutex_profile_fractionare now nested under the
correspondingremote,file, orselfsubsection. Multiple modes can be enabled
on a single receiver instance, each with its own collection interval. A new
serversection enables push-mode ingestion of pprof data over HTTP.
🚩 Deprecations 🚩
-
connector/metrics_as_logs: Rename component type frommetricsaslogstometrics_as_logsto follow snake_case naming convention. The old name is kept as a deprecated alias. (#48016) -
exporter/load_balancing: Rename theloadbalancingexporter toload_balancing. The oldloadbalancingtype 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: Deprecatedeployment_name_from_replicasetand default deployment name extraction to the ReplicaSet name heuristic. (#48447) -
processor/resource_detection: Rename toresource_detectionwith deprecated aliasresourcedetection(#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 inconditions. (#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 inconditions,value,count, andkeys_expressionfields 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-inseries_expirationsetting to expire stale spanmetrics series without changing existingmetrics_expirationbehavior. (#44187) -
connector/sum: Support OTTL path-context names (e.g.span.attributes["foo"],resource.attributes["bar"],metric.name) in theconditionsfield. (#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_noindexmapping 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
_noindexvalue in itselasticsearch.mapping.hintsattribute, the
exporter skips emitting the bulk index operation for that document. -
exporter/google_cloud_storage: Add retry and sending queue configuration options (#48045)
Introducesretry_on_failureandsending_queuesupport 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") inmarkers[].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-signalmessage_key_from_metadata_keyto derive the Kafka record key from client metadata. (#29433)
Each signal (logs,metrics,traces,profiles) now accepts amessage_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 existingpartition_*flags for the same signal. If the metadata key is absent
or empty the record key is left nil. -
exporter/load_balancing: Addowner_accountoption to AWS Cloud Map resolver for cross-account namespace discovery (#47895)
Theowner_accountfield allows the AWS Cloud Map resolver to discover instances
in namespaces shared from other AWS accounts using AWS RAM. This maps directly to
theOwnerAccountparameter in the AWS Cloud MapDiscoverInstancesAPI call. -
exporter/sumologic: Modify the sumologic exporter's default batching configuration (#47820) -
extension/aws_logs_encoding: Addcloudwatch.streamsfor thecloudwatchformat to route subscription-filter events to different inner encoding extensions based onlogGroup/logStreampatterns. (#46458)
Each stream accepts aname, anencoding(component ID of the inner extension), optional
log_group_pattern/log_stream_patternmatchers, and an optionalpayloadmode (message
orenvelope). Known names (vpcflow, cloudtrail, lambda, waf, rds, eks, apigateway) carry
default patterns and payload modes reflecting AWS ...
v0.152.0
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: Promoteconnector.spanmetrics.includeCollectorInstanceIDfeature gate to beta. (#40400)
Adds acollector.instance.idattribute 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: Stabilizedisableinvertdecisionsfeature gate. (#47650)receiver/kafka_metrics: Promote thereceiver.kafkametricsreceiver.UseFranzGofeature 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 fromotlpjsontootlp_jsonto follow snake_case naming convention. The old name is kept as a deprecated alias. (#48019)connector/round_robin: Rename component type fromroundrobintoround_robinto follow snake_case naming convention. The old name is kept as a deprecated alias. (#48021)connector/slow_sql: Rename component type fromslowsqltoslow_sqlto follow snake_case naming convention. The old name is kept as a deprecated alias. (#48020)exporter/bmc_helix: Rename exporter type frombmchelixtobmc_helix(#45339)extension/kafkatopics_observer: Deprecate the kafkatopicsobserver extension in favor of using kafkareceiver directly (#48186)processor/metrics_transform: Rename processor type frommetricstransformtometrics_transform(#45339)receiver/aws_lambda: Rename awslambda receiver to use lower_snake_case nameaws_lambda. (#45339)receiver/cloud_foundry: Rename receiver type fromcloudfoundrytocloud_foundry(#45339)receiver/google_cloud_spanner: Rename receiver type fromgooglecloudspannertogoogle_cloud_spanner(#45339)receiver/kafka_metrics: Renamekafkametricsreceiver tokafka_metricswith deprecated aliaskafkametrics(#45339)receiver/kubelet_stats: Rename receiver type fromkubeletstatstokubelet_stats(#45339)receiver/tcp_check: Renametcpcheckreceiver totcp_checkwith deprecated aliastcpcheck(#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 declarativetelemetry.resourceconfiguration while preserving legacy inline resource attributes (#45116)
cmd/opampsupervisornow 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 addsnodeName-clusterNameas 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 asname=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)
Thepipelineoption 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 withecs-were skipped with a warning.
They are now mapped toaws.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: Addinclude_all_containersoption to emit a port-less endpoint for every running container, including those with no exposed ports. (#48252)
When enabled, the observer emits acontainerendpoint with no port
information for every running container, alongside any per-port endpoints.
This allowsreceiver_creatorrules oftype == "container"to attach
receivers to every container regardless of whether it exposes ports.
Defaults tofalsefor 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: Emitk6_testRunIdin the log body whenmeta.k6.testRunIdis present in the Faro payload. (#47935)
Surfaces the k6 test run identifier that the Faro Web SDK already
forwards fromwindow.k6.testRunId, alongside the existing
k6_isK6Browserkey. The reverse (logs -> Faro) translator extracts
it back intoMeta.K6.TestRunIDfor 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)
Whendeployment_name_from_replicasetis true and the ReplicaSet informer is not used for deployment names only,
the processor derivesk8s.deployment.nameusing the pod-template-hash label and ReplicaSet naming rules.
When a ReplicaSet informer is running (for example fork8s.deployment.uid), API-backed metadata takes precedence,
independent of thedeployment_name_from_replicasetsetting. -
processor/k8s_attributes: Addwatch_sync_periodconfig option to configure informer cache resync period. (#48111)
Thewatch_sync_periodconfig option defaults to5mto 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...
v0.151.0
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 gateconnector.datadogconnector.NativeIngest(#47580) -
exporter/datadog: Remove stable feature gatesexporter.datadogexporter.UseLogsAgentExporterandexporter.datadogexporter.metricexportnativeclient(#47583) -
exporter/signalfx: Defaultapi_urlandingest_urlvalues derived fromrealmnow use*.observability.splunkcloud.cominstead of*.signalfx.com. (#47670)
Explicitapi_urlandingest_urlsettings are unchanged. Update network allowlists if they targeted only*.signalfx.com. -
exporter/splunk_hec: Remove deprecatedbatcherconfig field. Usesending_queue::batchinstead. (#47737) -
extension/jaegerremotesampling: Remove replaceThriftWithProto feature gate. (#47553) -
pkg/translator/prometheus: Removespkg.translator.prometheus.NormalizeNamefeature 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 usenetwork.local.address(replacingnet.host.ip),network.peer.address(replacingnet.peer.ip),
andservice.peer.name(replacingpeer.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: StabilizeDisableRemoteSamplingfeature gate which has been in beta for over 2 years. (#47599) -
receiver/prometheus: Removereceiver.prometheusreceiver.EnableNativeHistograms,receiver.prometheusreceiver.RemoveStartTimeAdjustmentandreceiver.prometheusreceiver.UseCreatedMetricfeature gates. (#40606) -
receiver/prometheus: Removes the feature gatereceiver.prometheusreceiver.RemoveLegacyResourceAttributeswhich has been stable for some time. (#47598)
🚩 Deprecations 🚩
connector/service_graph: Rename component type fromservicegraphtoservice_graphto follow snake_case naming convention. The old name is kept as a deprecated alias. (#47971)connector/span_metrics: Rename component type fromspanmetricstospan_metricsto follow snake_case naming convention. The old name is kept as a deprecated alias. (#47963)exporter/honeycomb_marker: Rename exporter type fromhoneycombmarkertohoneycomb_marker(#45339)exporter/prometheusremotewrite:add_metric_suffixesis deprecated. Usetranslation_strategy: UnderscoreEscapingWithoutSuffixesif 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 fromlogdeduptolog_dedup(#45339)receiver/file_stats: Renamefilestatsreceiver tofile_statswith deprecated aliasfilestats(#45339)receiver/fluent_forward: Rename receiver type fromfluentforwardtofluent_forward(#45339)receiver/host_metrics: Renamehostmetricsreceiver tohost_metricsand add deprecated aliashostmetrics(#45449)receiver/k8s_objects: Rename k8sobjects receiver to k8s_objects and add deprecated alias k8sobjects. (#47440)receiver/ssh_check: Renamesshcheckreceiver tossh_checkwith deprecated aliassshcheck(#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 setslog.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
passthroughwarmup mode (default) andbufferwarmup 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--timeoutflag 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 usesORDER 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 createsTYPE text()indexes for full text search on attributes and body;
on older versions it falls back tobloom_filter/tokenbf_v1indexes. 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: Includeservice.instance.idin OTLP resource attribute to Datadog metric tag mapping so it is sent as a metric tag by default. (#47936)
service.instance.idis 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 recognizesdeployment.environment.namein addition to the deprecateddeployment.environmentattribute (#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 thetruncate_allandlimitfunctions 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...
v0.150.0
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. - Slice setters (explicit_bounds, bucket_counts, positive.bucket_counts, negative.bucket_counts)
-
processor/resourcedetection: Remove feature gate processor.resourcedetection.propagateerrors (#45853) -
processor/transform: Remove theprocessor.transform.ConvertBetweenSumAndGaugeMetricContextfeature 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, andpartition.
All of these attributes will be removed in a future release.
🚩 Deprecations 🚩
receiver/http_check: Renamehttpcheckreceiver tohttp_checkwith deprecated aliashttpcheck(#45339)receiver/named_pipe: Renamenamedpipereceiver tonamed_pipewith deprecated aliasnamedpipe. (#45339)receiver/tcp_log: Renametcplogreceiver totcp_logwith deprecated aliastcplog(#45339)receiver/tls_check: Renametlscheckreceiver totls_checkwith deprecated aliastlscheck(#45339)receiver/udp_log: Renameudplogreceiver toudp_logwith deprecated aliasudplog(#45339)receiver/windows_event_log: Renamewindowseventlogreceiver towindows_event_logwith deprecated aliaswindowseventlog(#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: Promoteexporter.datadogexporter.DisableAllMetricRemappingfeature 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.DisableAllMetricRemappingand reach out to Datadog support (https://www.datadoghq.com/support/).
- 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
-
exporter/elasticsearch: Add suppress_conflict_errors config to optionally silence document level 409 version conflict logs (#47248) -
exporter/kafka: Addrecord_headersconfiguration 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: Adddimension_client::strip_k8s_label_prefixoption to stripk8s.<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).
Whenstrip_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).
Setstrip_k8s_label_prefix: falseto 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: Addgateway_serviceandgateway_destinationconfig fields to support gateway topology view in Fleet Automation. (#47471)
Gateway collectors setgateway_serviceto the k8s Service fronting them.
Agent/daemonset collectors setgateway_destinationto 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: Addon_truncateoption to fileconsumer to control behavior when a file's stored offset exceeds its current size. (#43693) -
processor/filter: Add feature gateprocessor.filter.defaultErrorModeIgnoreto 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 gateprocessor.transform.defaultErrorModeIgnoreto 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 theset_semconv_span_namefunction. (#45911)
Theset_semconv_span_namefunction 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 therpc.system.nameattribute (introduced in 1.39.0) has been added so span names can reflect the new RPC system conventions. Backward compatibility is preserved: therpc.systemattribute 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...