# Changelog Starting with version v0.83.0, this changelog includes only user-facing changes. If you are looking for developer-facing changes, check out [CHANGELOG-API.md](./CHANGELOG-API.md). ## v1.70.0/v0.164.0 ### 🛑 Breaking changes 🛑 - `connector/service_graph`: Remove stable connector.servicegraph.virtualNode gate (#52239) - `exporter/prometheus`: Always preserve leading and consecutive underscores in label names. (#50429) Remove `-pkg.translator.prometheus.PermissiveLabelSanitization` from `--feature-gates`; disabling this gate now causes a startup error. - `exporter/prometheus_remote_write`: Always preserve leading and consecutive underscores in label names. (#50429) Remove `-pkg.translator.prometheus.PermissiveLabelSanitization` from `--feature-gates`; disabling this gate now causes a startup error. - `pkg/azurelogs`: Promote the `pkg.translator.azurelogs.EmitV1LogConventions` and `pkg.translator.azurelogs.DontEmitV0LogConventions` feature gates to beta. (#52096) `code.function.name` and `code.file.path` are now emitted instead of `code.function` and `code.filepath` by default. The gates no longer control the `event.name` resource attribute, which is always emitted. - `pkg/coreinternal`: Promote internal.coreinternal.goldendataset.DontEmitV0HTTPConventions and internal.coreinternal.goldendataset.EmitV1HTTPConventions feature gates to Beta (#45293, #45089) Both feature gates should be promoted together as per RFC. goldendataset now generates spans with user_agent.original, network.protocol.name, network.protocol.version, client.address, and http.response.status_code (semconv v1.40.0) by default, and no longer generates the deprecated http.user_agent, http.flavor (semconv v1.19.0), http.client_ip, and http.status_code (semconv v1.25.0) attributes. The http.status_code migration is now wired to these gates so that round-trip translation stays consistent with pkg.translator.zipkin's HTTP semantic convention feature gates. - `pkg/ottl`: Remove the stable `ottl.set.allowNil` feature gate. (#48714) - `pkg/translator/pprof`: Return an error instead of panicking when profiling data contains invalid profile references. (#51908) - `pkg/zipkin`: Promote "pkg.translator.zipkin.EmitV1HttpConventions", "pkg.translator.zipkin.DontEmitV0HttpConventions", "pkg.translator.zipkin.EmitV1ScopeConventions", and "pkg.translator.zipkin.DontEmitV0ScopeConventions" feature gates to Beta. (#50909) This changes the default behavior to emit the new semantic convention attributes instead of the old deprecated ones. The Zipkin translator will now use `http.response.status_code` (replacing `http.status_code`), `otel.scope.name` (replacing `otel.library.name`), and `otel.scope.version` (replacing `otel.library.version`) by default when emitting spans. - `processor/drain`: Reject invalid configurations at startup, including negative `max_clusters` and empty attribute names. (#51677) Startup validation now rejects `max_node_children` <= 0, negative `max_clusters`, empty `template_attribute`, empty `wildcards_attribute` when `emit_wildcards` is set, and empty `parameter_key_prefix` when `masking_rules` are configured. - `processor/filter`: remove stable processor.filter.defaultErrorModeIgnore gate (#52238) - `receiver/file_log`: Promote the `filelog.protobufCheckpointEncoding` feature gate to stable. Checkpoints are always written as protobuf. (#43266, #52037) The feature gate can no longer be disabled and will be removed in v0.165.0. Existing JSON checkpoints are still read and are rewritten as protobuf on the next save. - `receiver/kubelet_stats`: Remove the deprecated `aws.volume.id`, `fs.type`, `gce.pd.name`, `glusterfs.endpoints.name`, `glusterfs.path` and `partition` resource attributes. (#40477) - `receiver/mongodb`: Change `mongodb.operation.latency.time` from a gauge to a monotonic cumulative sum (#51909) `opLatencies.*.latency` is a cumulative total, so the metric is now a monotonic sum like every other cumulative duration in the receiver. It is `enabled: false` and `stability: development`. - `receiver/prometheus`: Remove the stable `receiver.prometheusreceiver.IgnoreScopeInfoMetric` feature gate. (#47312) ### 🚩 Deprecations 🚩 - `exporter/azuredataexplorer`: Mark component as unmaintained (#52055) - `exporter/logicmonitor`: Mark component as unmaintained (#52152) - `extension/google_client_auth`: Rename the googleclientauth extension to google_client_auth. The old name remains available as a deprecated alias. (#45339) - `processor/probabilistic_sampler`: Add the `otelcol_processor_probabilistic_sampler_count_spans_processed` metric and deprecate `otelcol_processor_probabilistic_sampler_count_traces_sampled` in favor of it. (#50954) The deprecated metric remains available for compatibility. - `processor/transform`: Deprecate the `flatten_data` option in favor of the new `flatten.log` option. (#51766) Replace `flatten_data: true` with `flatten: {log: true}`. `flatten_data` will be removed in a future release. - `receiver/kafka`: Deprecate the built-in `jaeger_proto` and `jaeger_json` encodings in favour of `jaegerencodingextension`. (#39113) - `receiver/kafka`: Deprecate `partition_processing.max_buffered_batches` in favour of `partition_processing.max_prefetch.batches`. It will be removed in v0.166.0. (#52253) - `receiver/kafka`: Deprecate the built-in `json` logs encoding in favour of `jsonlogencodingextension`. (#39113) - `receiver/riak`: Update the stability of the receiver from `beta` to `unmaintained` (#52051) ### 🚀 New components 🚀 - `extension/redis_fleet_tracker`: Add the redis_fleet_tracker extension, which reports a collector fleet's live member count so adaptive_tail_sampling can treat goal_throughput as a fleet-wide budget. (#50577) - `processor/verify`: Add `verifyprocessor`, a new processor that verifies RFC 8785 (JCS) canonical integrity attributes (`audit.integrity.value`) on log records using HMAC and/or certificate public keys. Designed as the verification counterpart to `signingprocessor` for the OpenTelemetry Audit Logging signal. (#51383) This initial PR donates the component skeleton (config, factory, README). Concrete verification logic follows in a subsequent PR. - `receiver/gnmi`: Introduce the gNMI receiver (#50848) - `receiver/nats`: Add the NATS receiver to receive traces, metrics, and logs from a NATS server (skeleton; in development). (#50735) ### 💡 Enhancements 💡 - `cmd/opampsupervisor`: Add an `agent::stop_grace_period` config option to control how long the Supervisor waits for the Collector to exit after a graceful shutdown signal before forcibly killing it. (#50000) Defaults to 10s when unset. - `exporter/awscloudwatchlogs`: resolve {ClusterName} placeholder via k8s.cluster.name attribute (#51601) - `exporter/awss3`: Add `access_key` and `secret_key` options to configure static AWS credentials (#52140) - `exporter/awsxray`: Add feature gates to migrate semantic conventions from v1.12.0 to v1.40.0 (#46537) Four new alpha feature gates control the migration: - `exporter.awsxray.EmitV1HTTPNetworkConventions`: reads HTTP/network span attributes using semconv v1.40.0 keys (e.g. http.request.method, server.address, server.port, client.address). - `exporter.awsxray.DontEmitV0HTTPNetworkConventions`: stops reading deprecated v1.12.0 HTTP/network attribute keys. Requires EmitV1HTTPNetworkConventions to also be enabled. - `exporter.awsxray.EmitV1DBConventions`: reads database span attributes using semconv v1.40.0 keys (db.namespace, db.system.name, db.query.text, user.name). - `exporter.awsxray.DontEmitV0DBConventions`: stops reading deprecated v1.12.0 database attribute keys. Requires EmitV1DBConventions to also be enabled. All gates default to disabled, preserving existing behavior. Enable the EmitV1 gate first for dual-read, then enable the DontEmitV0 gate once upstream instrumentation has migrated. - `exporter/clickhouse`: Added a Bloom Filter data skipping index (idx_event_name) to the EventName column with a 0.01 false positive rate and granularity 1. (#49310) - `exporter/elasticsearch`: Additionally retry context deadlines that expire before the connection is ready, including DNS, TCP handshake, and TLS handshake timeouts. (#52102) A context deadline after the connection is ready, including while the request is being written or while waiting for the response, is still not retried. - `exporter/elasticsearch`: Add opt-in `telemetry::include_destination_index` to add the destination index as an attribute to the `otelcol.elasticsearch.docs.processed` metric (#52108) - `exporter/elasticsearch`: Convert explicit bounds OTLP histograms to exponential histograms (#52113) In OTel mapping mode, explicit-bounds histograms are stored as the native `exponential_histogram` field when connected to Elasticsearch 9.4.0 or later; set `version_detection.enabled: false` to keep T-Digest histograms. - `extension/json_log_encoding`: Set the observed timestamp of unmarshaled log records to the time the payload was decoded. (#39113) - `extension/opamp`: Report component status attributes in OpAMP health messages. (#50330) - `extension/opamp`: Add `reports_heartbeat` capability, enabled by default, to allow the OpAMP server to configure the agent's heartbeat interval (#51427) - `extension/redis_storage`: Add `IncrementBy` and `BatchIncrementBy` for atomic integer counters shared across Collector instances. (#51567) - `pkg/kafka/configkafka`: Add `dial_timeout` configuration option to control the timeout for establishing connections to Kafka brokers. (#51910) - `pkg/ottl`: Promote traces, metrics, and logs signals from beta to stable. (#51068, #47305) - `processor/adaptive_tail_sampling`: Add a metric to track multiple root span condition matches (#51458) Adds the otelcol_processor_adaptive_tail_sampling_root_span_condition_multiple_matches histogram, which records the number of spans matching the root span condition for traces where the condition matches more than once. - `processor/cardinality_guardian`: Reuse sparse HLL sketches on epoch rotation to cut allocations (#51059) - `processor/k8s_attributes`: Add experimental kubelet `/pods` polling as an opt-in pod metadata source. (#14475) - `processor/partitioning`: Promote logs, metrics and traces to alpha and add the processor to the contrib distribution. (#39199) - `processor/partitioning`: Add `otelcol.processor.partitioning.partitions` and `otelcol.processor.partitioning.key_evaluation.errors` internal telemetry metrics. (#39199) - `processor/resource_detection`: Add `attributes.included` and `attributes.excluded` options to the `env` detector to filter which attribute keys from `OTEL_RESOURCE_ATTRIBUTES` are emitted. Both lists support `*` and `?` as wildcards, and `excluded` is applied after `included`. (#49970) - `processor/resource_detection`: Define EC2 retry defaults locally instead of importing them from the AWS SDK. Defaults remain 3 attempts and 20s maximum backoff. (#47218) - `receiver/google_cloud_spanner`: Add date value type for labels to support Spanner DATE columns & add Supported Optimizer Version table (#51734) - `receiver/google_cloud_spanner`: Add table sizes per locality group metrics (`used_ssd_bytes`, `used_hdd_bytes`) to monitor SSD and HDD storage usage. (#51550) - `receiver/google_cloud_spanner`: Add row deletion policies metrics and `timestamp` label `value_type` support in `googlecloudspannerreceiver`. (#52030) - `receiver/google_cloud_spanner`: Add new SSD, HDD, and Columnar table size metrics for Spanner. (#51269) - `receiver/google_cloud_spanner`: Add column operations stats metrics (`read_count`, `query_count`, `write_count`) to monitor how table columns are accessed and modified. (#51545) - `receiver/google_cloud_spanner`: Add missing labels and execution metrics to top minute query stats in `googlecloudspannerreceiver`. (#51809) - `receiver/google_cloud_spanner`: Add missing columns of top and total minute read stats (#51733) - `receiver/google_cloud_spanner`: Add table operations stats metrics (`read_query_count`, `write_count`, `delete_count`) to monitor how tables are accessed and modified. (#51336) - `receiver/google_cloud_spanner`: Add oldest active queries metrics and `hide_client_ip_address` configuration to mask `client_ip_address` in oldest_active_queries in `googlecloudspannerreceiver`. (#52089) - `receiver/k8s_objects`: Add an opt-in informer-based observer behind the `receiver.k8sobjects.useInformerObserver` feature gate. (#43602) - `receiver/kafka`: Make `max_decompress_batch_bytes` configurable in the Kafka receiver consumer configuration. (#51845) - `receiver/kafka`: Add `partition_processing.max_in_flight.window`. Set it to `cross_fetch` so exporters that wait to fill a batch, for example with `sending_queue.wait_for_result` and `batch.min_size`, get records from more than one fetch instead of sending small batches on the flush timeout. (#51804) - `receiver/kafka`: Add `partition_processing.max_in_flight.bytes` to limit the record bytes each partition holds while it processes records concurrently. Use it to bound memory when record sizes vary. (#51804) - `receiver/kafka`: Add `partition_processing.max_prefetch.bytes` to cap the bytes of fetched batches waiting for each partition worker. Use it to bound memory when batch sizes vary. (#52253) - `receiver/kubelet_stats`: Promote `container.cpu.time` to beta stability and align it with Semantic Conventions v1.43.0. (#52197) - `receiver/mongodb`: Add operation latency count and non-tailable collection scan metrics (#51909) Adds `mongodb.operation.latency.count` and `mongodb.query_executor.collection_scan.non_tailable.count`, both disabled by default. - `receiver/mysql`: Add `mysql.client.name` to `db.server.query_sample`, the client driver's self-reported identity. (#51317) - `receiver/prometheus_remote_write`: Add the `otelcol_receiver_prometheusremotewrite_resource_cache_evictions` internal metric counting evictions from the resource metrics cache. (#52195) - `receiver/prometheus_remote_write`: Add `resource_cache_size` to configure the number of job/instance pairs kept in the resource metrics cache. (#52195) The default remains 1000. - `receiver/prometheus_simple`: `headers` and `proxy_url` are now applied to the scrape. Reserved header names and `proxy_url` credentials are rejected at validation. (#52081) - `receiver/prometheus_simple`: `timeout` now sets the scrape timeout, capped at `collection_interval`. Previously it had no effect. (#52081) - `receiver/sql_server`: Add `db.server.procedure_definition` event to capture the DDL definition of stored procedures observed in `db.server.top_procedure`. (#51946) - `receiver/sql_server`: Add `sqlserver.tempdb.file.size` and `sqlserver.tempdb.allocation.waiters.count` metrics, and extend `sqlserver.database.tempdb.space`. (#52057) The two new metrics are disabled by default. ### 🧰 Bug fixes 🧰 - `connector/failover`: Fix recovery after a new failover immediately follows primary pipeline recovery. (#48668) - `connector/failover`: Prevent data loss when a downstream pipeline mutates data before returning an error. (#52119) - `exporter/elasticsearch`: Change the exponential histogram support from ES `v9.3.0` to ES `v9.4.0` (#52222) In Elasticsearch OTLP endpoint exponential histograms were added as a tech preview in ES `v9.3.0`. This did not have full backwards compatibility for queryDSL on histograms. Full support was added in ES `v9.4.0`. - `exporter/faro`: Return an error instead of panicking when a stack trace frame cannot be parsed. (#52064) - `exporter/prometheus`: Fix double-counting of buckets when downscaling delta exponential histograms. (#51705) - `exporter/prometheus`: Drop exponential histogram data points without a sum instead of exporting a zero sum. (#52231) - `exporter/prometheus_remote_write`: Drop exponential histogram data points without a sum instead of exporting a zero sum. (#52232) - `exporter/prometheus_remote_write`: Apply the `timeout` to each attempt to send a request instead of to the whole retry loop, so that failed requests are retried until `retry_on_failure.max_elapsed_time` instead of being dropped after `timeout`. (#51983) Previously a backend outage longer than `timeout` (5s by default) dropped all the data, as the exporter retried a request only for the duration of the `timeout`. The retry delay now also grows up to `retry_on_failure.max_interval`. It was not passed to the backoff and stayed at `retry_on_failure.initial_interval`, which would send a request every 50ms by default for the whole `max_elapsed_time`. The retries are also interrupted when the exporter shuts down. `retry_on_failure.max_elapsed_time` bounds the export of a batch of metrics as a whole, also when the batch is split into several requests (`max_batch_size_bytes`), and the deadline of the shutdown bounds the flush of the queue. When only one of `timeout` and `http.timeout` is set, the other one now takes the same value instead of staying at its `5s` default, which would otherwise cap every attempt at `5s`. - `exporter/signalfx`: Treat non-retryable 4xx responses as permanent errors instead of retrying them indefinitely (#51389) The SignalFx exporter shares the `HandleHTTPCode` helper with the Splunk HEC exporter. Previously only 400, 401, and 403 were classified as permanent; every other 4xx (404, 405, 410, 413, 414, 415, 422, ...) fell through and was retried forever even though retrying an identical request cannot succeed. Those 4xx responses are now permanent, except 408 Request Timeout and 409 Conflict (transient) and 429 Too Many Requests (throttle). 5xx responses remain retryable, and 503 continues to honor Retry-After. - `exporter/splunk_hec`: Fix inverted condition in multi-metric batching that prematurely terminated batching and dropped valid metrics when encountering an oversized event. (#52142) - `exporter/splunk_hec`: Treat non-retryable 4xx responses as permanent errors instead of retrying them indefinitely (#51389) Previously only 400, 401, and 403 were classified as permanent; every other 4xx (404, 405, 410, 413, 414, 415, 422, ...) fell through and was retried forever even though retrying an identical request cannot succeed. The shared `HandleHTTPCode` helper now treats all 4xx as permanent except 408 Request Timeout and 409 Conflict (transient) and 429 Too Many Requests (throttle). 5xx responses remain retryable, and 503 continues to honor Retry-After. This helper is shared with the SignalFx exporter, whose retry classification changes in the same way. - `extension/awscloudwatchmetricstreams_encoding`: Stop sizing the read buffer from the record's length prefix in the `opentelemetry1.0` format, so a malformed length can no longer crash the collector with an oversized allocation. (#51744) - `extension/docker_observer`: Fix endpoint flapping by selecting a stable IP address for containers attached to multiple networks. (#51726) - `extension/google_cloud_logentry_encoding`: Do not drop log entries with an unparseable `httpRequest.requestUrl`. (#52044) The raw value is kept in `url.full`; `url.path`, `url.query` and `url.domain` are omitted. - `internal/kafka`: Reject extensions that do not implement Token(context.Context) during OAUTHBEARER SASL configuration instead of panicking at runtime. (#51958) - `pkg/faro`: Keep the `warn` log level when translating logs to a Faro payload (#52114) - `pkg/ottl`: Fix context inference for statements that pass an all-uppercase converter name, such as `SHA256`, as a function argument. (#52192) - `pkg/winperfcounters`: Close the PDH query when adding the counter fails, preventing a handle leak on counter initialization errors. (#51048) - `processor/cumulative_to_delta`: Handle NaN sums on exponential histograms like on histograms, so the next sum is no longer emitted as a NaN delta (#51965) - `processor/cumulative_to_delta`: Include the scope attributes in the identity of a stream, so scopes that only differ in their attributes are no longer converted as one stream (#52162) - `processor/resource_detection`: Fix a panic in the ECS detector when the task ARN has only 5 colon-separated parts (#52074) `parseTaskARN` checked for at least 5 parts but read the 6th one, so a task ARN without a resource part caused an index out of range panic during detection. - `processor/resource_detection`: Bypass environment proxies for EKS detector requests to the in-cluster Kubernetes API. (#52301) Besides this, the EKS detector configuration now accepts API server configuration to control how it connections to the Kubernetes API server. - `receiver/aws_cloudwatch`: Persist acknowledged log checkpoints so failed polls can retry unread logs after a restart when storage is enabled. (#51944) - `receiver/mongodb`: Skip top command when mongodb.operation.time is disabled and log warning on BSONObjectTooLarge error (#50712) - `receiver/postgresql`: Fix a scrape error that discarded every metric for a table or index dropped while the receiver was collecting (#52041) - `receiver/pprof`: Fix the HTTP scraper to return an error for non-2xx responses, close the response body, and honor the scrape context. (#52256) - `receiver/prometheus`: Fix config reload failing for multi-line secrets such as an inline `tls_config.key` (#52080) - `receiver/prometheus_remote_write`: Refuse an out of range symbol reference on a target_info series, as on every other metric name. (#52070) A request carrying one now gets a 400 where it used to get a 204 with the sample counted as written. - `receiver/prometheus_simple`: Forward inline TLS PEM (`ca_pem`, `cert_pem`, `key_pem`) and `server_name_override` to the underlying Prometheus receiver instead of silently dropping them. (#52029) - `receiver/prometheus_simple`: Forward the `tls` `min_version` and `max_version` settings to the scrape config; previously they had no effect. (#52081) - `receiver/snmp`: Create the datapoint with an empty attribute when an indexed attribute column returns an empty value, instead of failing the scrape. (#51875) An empty OCTET STRING, such as ifPhysAddress on a loopback or null interface, is a valid value. Previously every scrape of such a device reported "metric OID attribute value is blank" and dropped those datapoints. A row the attribute column does not return at all still fails as before. - `receiver/snmp`: Add `max_repetitions` configuration option (defaulting to 25) for GETBULK requests to prevent request timeouts on MTU boundaries. (#51925) - `receiver/splunk_enterprise`: Send the search job TTL to Splunk in seconds instead of nanoseconds (#50940) The receiver sets a TTL on every search job it dispatches, derived from the configured `timeout`. The value was formatted from a Go duration with `%d`, which emits its raw nanosecond count, and Splunk's `setttl` action reads the argument as seconds. A default `timeout: 60s` therefore asked Splunk to retain each dispatched job for roughly 1900 years, so search artifacts accumulated until the search dispatch directory filled and Splunk reported extreme search lag. The duration is now converted to whole seconds. - `receiver/yang_grpc`: Log a warning when duplicate YANG module definitions are loaded, identifying conflicting source paths. (#50917) ## v1.2.0/v0.163.0 ### 🛑 Breaking changes 🛑 - `cmd/opampsupervisor`: The supervisor now fails to start when the deprecated `reports_remote_config` capability option is set to `true`. (#49763) Remove `reports_remote_config` from the supervisor config; `accepts_remote_config` enables both the AcceptsRemoteConfig and ReportsRemoteConfig OpAMP capabilities. The option will be removed in v0.165.0. - `connector/failover`: Reject empty `condition.error.contains` values and fail over only for matching downstream errors (#44518) `condition.error.contains` now requires a list of non-empty strings. - `exporter/signalfx`: Exclude generated `container_cpu_utilization` metric by default (#51906) This metric has been deprecated in favor of `container.cpu.usage`. If `container_cpu_utilization` is still required, please add it to the exporter's `include_metrics` configuration option as shown below. ``` signalfx: include_metrics: - metric_name: container_cpu_utilization ``` - `extension/google_cloud_logentry_encoding`: Fix Cloud DNS query logs failing to decode when `vmInstanceId` is in exponent notation. `host.id` is now a string taken from `vmInstanceIdString` instead of an int taken from `vmInstanceId`. (#51552) - `processor/redaction`: Keep every redaction summary attribute intact when data re-enters the processor (#50770) Only five of the fourteen summary attributes the processor writes survived a second redaction processor. When data passed through one, `redaction.allowed.keys`, `redaction.allowed.count` and the seven `redaction.body.*` attributes were treated as unknown keys, deleted, and reported in `redaction.redacted.keys`. The processor now treats all fourteen as its own bookkeeping rather than as user data, so they are no longer deleted, masked, obfuscated or counted as redacted, and the summary accumulates across chained processors as intended. Previously a `blocked_key_patterns` or `blocked_values` rule matching one of these attributes replaced the summary with a masked value, and with `redact_all_types` enabled it rewrote the `*.count` integers as strings, which made the running totals read back as zero at the next hop. Chaining two processors also reported the same attribute more than once: the allowed and ignored summaries describe the record as it currently stands, which every processor re-derives in full, so merging them with an upstream value counted one attribute twice. `redaction.allowed.keys` read `email,email` with `redaction.allowed.count` of 2 for a single allowed attribute. Those two outcomes now replace the upstream value, while the redacted and masked outcomes keep accumulating, because a removed key and an already masked value cannot be detected again. Two behaviour changes come with this, both of which can affect an existing chained configuration. A processor whose `summary` is not `debug` or `info` now claims no ownership of a summary it finds, so the ordinary allow list decides whether it survives. This lets a strict egress processor strip an upstream audit trail, which it could not do before. It also means a downstream processor with `allow_all_keys: false` now removes the five summary attributes it previously kept unconditionally, unless they are named in `allowed_keys` or `allow_all_keys` is set. `summary` is unset by default, which counts as silent, so a chained configuration that never sets it is affected. A key inside a log body named after a summary attribute is now redacted like any other unknown key. The processor only ever writes its summary to the record attributes, so such a key in a body carries user data. - `receiver/postgresql`: Set the default scrape timeout to 60s to cancel blocked PostgreSQL queries. (#50757) Increase `timeout` for longer scrapes, or set `timeout: 0` to restore the unbounded behavior. - `receiver/prometheus_simple`: Remove the long-deprecated `tls_enabled` and `tls_config` settings; use `tls` instead (#51895) `tls_enabled`/`tls_config` were deprecated in v0.55.0 in favor of the standard `tls` block (confighttp's TLS settings). Besides being long overdue, keeping both was a footgun: setting `tls_enabled: true` silently overrode any `tls` block. Migrate `tls_config` (`ca_file`/`cert_file`/`key_file`/`insecure_skip_verify`) to the equivalent fields under `tls`. - `receiver/sql_server`: Performance counters read from the SQL Server `Databases` object on a direct database connection now carry the `sqlserver.database.name` resource attribute and no longer emit an unlabeled `_Total` aggregate, which changes the series identity of `sqlserver.database.backup_or_restore.rate`. (#51384) `sqlserver.database.backup_or_restore.rate` splits from one series into one per database, and the unlabeled series it previously reported is gone. Aggregate across `sqlserver.database.name` instead. This brings the direct database connection in line with the Windows performance counter path, which already discards the aggregate instance before recording. ### 🚩 Deprecations 🚩 - `receiver/sql_server`: Rename the `sqlserver` receiver to `sql_server`. The old `sqlserver` type remains available as a deprecated alias. (#45339) ### 🚀 New components 🚀 - `processor/adaptive_tail_sampling`: Promote the adaptive_tail_sampling processor to alpha stability and include it in the contrib distribution. (#49311) - `processor/partitioning`: Add the initial skeleton for the partitioning processor. (#39199) - `processor/rolling_span_latency`: Promote the rolling_span_latency processor to alpha stability and include it in the contrib distribution. (#50260) ### 💡 Enhancements 💡 - `connector/routing`: Validate OTTL conditions and statements during configuration. (#51748) - `connector/service_graph`: Recognize current semantic-convention attributes (`peer.service.name`, `db.namespace`, `db.system.name`) alongside legacy keys when deriving peer and database-name dimensions. (#22095) - `exporter/cassandra`: Add configuration validation and error case tests. (#51730) - `exporter/clickhouse`: Add `database_engine` config to set the `ENGINE` used when creating the database, such as `Replicated`. (#51513) When `database_engine.name` is `Replicated`, `ON CLUSTER` is only applied to the `CREATE DATABASE` statement. - `exporter/datadog`: Mark exporter/datadogexporter as unsupported on freebsd/amd64. (#15781) - `exporter/datadog`: Move the `exporter.datadogexporter.AddUnits` feature gate to beta. Metric units are now sent to Datadog by default. (#15280) - `exporter/elasticsearch`: Store OTLP exponential histograms in Elasticsearch's native exponential_histogram field (#51429) Enabled automatically in OTel mapping mode when connected to Elasticsearch 9.3.0 or later; disable via `version_detection.enabled: false`. - `exporter/elasticsearch`: Log the connected Elasticsearch version and build flavor at startup (#51541) Adds `version_detection` (enabled by default); set `version_detection.enabled: false` to opt out. - `exporter/kafka`: Add the trace context to Kafka record headers using the propagators configured in `service::telemetry::traces::propagators`. (#51078) - `exporter/nats`: Implement core NATS publishing, so traces, metrics, and logs are published to per-signal subjects derived from OTTL value expressions. (#50735) JetStream durable publishing is not yet implemented; a configured `jetstream` block is rejected at startup until it lands. - `exporter/splunk_hec`: Define the exporter's heartbeat metrics in metadata.yaml and generate them via mdatagen. (#49009) - `extension/basicauth`: Support sourcing credentials from secret provider extensions, with rotation that does not restart the collector. (#48277) Configure with `htpasswd.secret_provider` (server) or `client_auth.secret_provider` (client). The referenced extension must implement the `SecretProvider` interface (`GetSecret` and `OnChange`). - `extension/datadog`: Mark extension/datadogextension as unsupported on freebsd/amd64. (#15781) - `extension/opamp`: Add a `socket` option under `server.ws` and `server.http` to dial the OpAMP server over a Unix domain socket (`transport: unix`) or Windows named pipe (`transport: npipe`). (#50603) When `socket` is set, the `endpoint` only supplies the URL scheme, request path, and Host header; its host and port are ignored. - `extension/pebble_tail_storage`: Add `on_read_error` to choose between dropping a trace or returning the readable part when stored batches cannot be read or decoded. (#49906) The default is `drop_trace`. Take deletes the stored trace and returns an error, and the tail sampling processor drops the trace without a sampling decision. Set `on_read_error: return_partial` to keep the previous best-effort behavior, where Take returns the batches that could still be read. Two new metrics, `otelcol_extension_pebble_tail_storage_read_error_trace_drops` and `otelcol_extension_pebble_tail_storage_read_error_partial_returns`, count which policy ran. - `internal/kafka`: Reuse cached AWS credentials across `AWS_MSK_IAM_OAUTHBEARER` token generations instead of resolving them on every SASL authentication. (#50038) - `pkg/ottl`: Add the `pkg.ottl.functions.enableExperimental` feature gate, which must be enabled to use experimental OTTL functions. (#51564) - `pkg/ottl`: Allow `keep_keys` to accept slice values from paths and converter expressions when the `pkg.ottl.functions.enableDynamicSliceArguments` feature gate is enabled. (#45980) - `pkg/ottl`: Improve OTTL parse error diagnostics by reporting the line and column of the input where available. (#51680) Not all parse errors carry a position: errors that aggregate multiple statements, and some inner errors that didn't already carry one, are still returned without one. The exact wording and position of statement, condition, and value expression parse error messages has changed as a result. The position is exposed programmatically via the new experimental `xottl.Error` type. - `pkg/ottl`: Add the beta `pkg.ottl.functions.enableDynamicSliceArguments` feature gate, which controls whether slice arguments of stable functions such as `Concat` accept paths and converters. (#51565) - `pkg/stanza`: Optimize container parser operator by replacing CRI line and File path regexes with a hand-written parsers and caching log filepath metadata extraction, reducing CPU usage by ~70% on the container parser hot path (#41672) - `pkg/stanza`: Add default scope name and version for stanza log entries without scope name (#51084) This introduces the `pkg.stanza.addDefaultScopeName` feature gate (currently in beta) to ensure Stanza log entries are assigned a default scope name and version when not explicitly provided. - `processor/adaptive_tail_sampling`: Add `fleet_tracker` to divide each `adaptive_throughput` rule's `goal_throughput` by the live fleet member count reported by a `fleet_tracker` extension, making the goal a fleet-wide budget instead of a per-instance one. (#50577) - `processor/akamaidetector`: Add `omit_detector_akamai` go build tag to omit detector at build time. (#47218) - `processor/alibabaecsdetector`: Add `omit_detector_alibaba_ecs` go build tag to omit detector at build time. (#47218) - `processor/azuredetector`: Add `omit_detector_azure` go build tag to omit detector at build time. (#47218) - `processor/digitaloceandetector`: Add `omit_detector_digitalocean` go build tag to omit detector at build time. (#47218) - `processor/dynatracedetector`: Add `omit_detector_dynatrace` go build tag to omit detector at build time. (#47218) - `processor/groupbytrace`: Allow grouping spans by the service that emitted them within a trace (#50553) Adds an `emit_strategy` option that can be set to `service` to allow emitting spans sourced from a single service within a trace. In some setups this may allow spans to move more quickly through the processor while still permitting operations such as RED metric generation, service discovery, etc. that require spans to be grouped by trace. - `processor/hetznerdetector`: Add `omit_detector_hetzner` go build tag to omit detector at build time. (#47218) - `processor/ibmcloudclassicdetector`: Add `omit_detector_ibmcloud_classic` go build tag to omit detector at build time. (#47218) - `processor/ibmcloudvpcdetector`: Add `omit_detector_ibmcloud_vpc` go build tag to omit detector at build time. (#47218) - `processor/novadetector`: Add `omit_detector_openstack_nova` go build tag to omit detector at build time. (#47218) - `processor/oracleclouddetector`: Add `omit_detector_oraclecloud` go build tag to omit detector at build time. (#47218) - `processor/partitioning`: Implement logs partitioning. (#39199) - `processor/partitioning`: Implement traces partitioning. (#39199) - `processor/partitioning`: Implement metrics partitioning. (#39199) - `processor/resource_detection`: Add `omit_detector_system` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_aws_ec2` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_env` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_azure_functions` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_azure_containerapps` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_docker` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_azure_appservice` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_consul` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_azure_aks` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_k8s_api` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_kubeadm` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_openshift` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_aws_lambda` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_gcp` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_heroku` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_aws_eks` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_aws_elastic_beanstalk` go build tag to omit detector at build time. (#47218) - `processor/resource_detection`: Add `omit_detector_aws_ecs` go build tag to omit detector at build time. (#47218) - `processor/scalewaydetector`: Add `omit_detector_scaleway` go build tag to omit detector at build time. (#47218) - `processor/tail_sampling`: Move spans out of incoming batches instead of copying them, and declare that the processor mutates data. (#51920) - `processor/tencentcvmdetector`: Add `omit_detector_tencent_cvm` go build tag to omit detector at build time. (#47218) - `processor/upclouddetector`: Add `omit_detector_upcloud` go build tag to omit detector at build time. (#47218) - `processor/vultrdetector`: Add `omit_detector_vultr` go build tag to omit detector at build time. (#47218) - `receiver/aws_cloudwatch`: Add `scope.name` and `scope.version` to logs and metrics. (#51333) - `receiver/azure_blob`: Add a `compression` option to read gzip compressed blobs (#51412) - `receiver/azure_monitor`: Add per-metric time grain overrides for Azure Monitor metric queries. (#51295) - `receiver/google_cloud_spanner`: Add missing metrics to top minute transaction stats in `googlecloudspannerreceiver`. (#51272) - `receiver/google_cloud_spanner`: Add top minute split stats metrics and `hide_split_stats_keys` logic in `googlecloudspannerreceiver`. All `split_stats/top/*` metrics gain the `split_start` and `split_limit` attributes with PII hiding support. (#51026) - `receiver/google_cloud_spanner`: Add query_optimizer_versions and its value_type `int_slice` logic in `googlecloudspannerreceiver`. All `query_stats/top/*` metrics gain this new attribute. (#51219) - `receiver/google_cloud_spanner`: Add missing execution metrics to total query stats in `googlecloudspannerreceiver`. (#51228) - `receiver/google_cloud_spanner`: Add total minute transaction stats metrics to googlecloudspannerreceiver. (#51296) - `receiver/kafka`: Add `partition_processing.max_in_flight.records` to run concurrent unmarshal-plus-Consume calls on one independent partition worker. (#51080) When `max_in_flight.records` is above 1, the worker always marks after processing. `message_marking.after: false` does not mark before Consume. - `receiver/kubelet_stats`: Add optional k8s node pid limit and usage metrics. (#48926) Adds the following optional metrics to kubeletstatsreceiver: - k8s.node.pid.limit - k8s.node.pid.usage - `receiver/mongodb`: Add assert, global lock queue, and write concern metrics (#51418) Adds `mongodb.assert.count`, `mongodb.global_lock.queue.count` and `mongodb.write_concern.wait.time`, all disabled by default. - `receiver/mongodb`: Add query executor scan and collection scan metrics (#51060) Adds `mongodb.query_executor.index_key.scanned.count`, `mongodb.query_executor.document.scanned.count` and `mongodb.query_executor.collection_scan.count`, all disabled by default. - `receiver/mongodb`: Report a loopback `server.address` as the collector host name, and enable `server.port` by default (#51633) When a scraped node reports a loopback address (`localhost`, `127.0.0.1` or `::1`), `server.address` now reports the host name of the machine running the collector. `service.instance.id` is seeded from the same value and changes for those deployments. `server.port` was previously disabled by default; disable it with `resource_attributes.server.port.enabled: false`. - `receiver/mysql`: Add row-count and database namespace context to the top query event (#51312) - `receiver/oracledb`: Add support for Kerberos authentication via a new `auth_type` option and `kerberos` configuration block. (#50401) Set `auth_type: kerberos` and configure the `kerberos` block to authenticate using a keytab, credential cache, or password. Kerberos support is implemented in pure Go and requires no external libraries. - `receiver/postgresql`: Add `connect_database` to configure which database the receiver connects to for cluster-wide statistics collection. (#50920) - `receiver/prometheus_simple`: Restore the stability of the receiver from `unmaintained` to `beta` (#11504) - `receiver/prometheus_simple`: Validate that `endpoint` is set and `collection_interval` is positive, so an invalid configuration is rejected at startup instead of failing later (#11504) - `receiver/pulsar`: Add freebsd/amd64 as a supported build platform. (#15781) Updated the github.com/AthenZ/athenz dependency to v1.12.27 to enable freebsd/amd64 builds. - `receiver/sql_server`: Add `sqlserver.db.edition` resource attribute. (#51414) Disabled by default. Opt in by setting `resource_attributes.sqlserver.db.edition.enabled: true` in the receiver config. - `receiver/windows_event_log`: Promote Windows Event Log receiver to beta stability (#42167) ### 🧰 Bug fixes 🧰 - `exporter/awsemf`: Drop a metric declaration with an invalid `metric_name_selectors` regex instead of panicking (#51115) An invalid regular expression in `metric_name_selectors` was passed to `regexp.MustCompile`, panicking during config validation. It is now compiled with `regexp.Compile` and the error is returned, so the declaration is dropped with a warning like an invalid `label_matchers` regex. - `exporter/datadog`: Drop `instance` from the Azure App Service and Azure Functions running metrics in preparation for more accurate instance descriptions. (#51919) `otel.datadog_exporter.metrics.running.azureappservices` and `otel.datadog_exporter.metrics.running.azurefunctions` are now tagged only with `name`, `subscription_id`, and `resource_group`, and App Service metrics no longer get an `instance` tag. - `exporter/file`: Fix race condition where a writer could be closed while still in use, causing data to be silently lost. (#49228) This will happen in `group_by` mode when `rotation` is not set. - `exporter/file`: Reject `group_by.max_open_files` <= 0 and negative `rotation` values during config validation. (#51515) - `extension/azure_encoding`: Do not emit 0-valued timeseries for aggregates (total, count, minimum, maximum, average) that are missing from the source Azure record (#50485) Diagnostic settings only export the aggregates a resource supports. A configured aggregation whose aggregate is absent from the record is now skipped instead of being coerced to 0. - `extension/docker_observer`: Discover IPv6-only Docker endpoints and format their port targets correctly. (#50972) - `extension/google_cloud_logentry_encoding`: Do not drop log entries with an unparseable `trace` or `spanId`, and accept a bare trace ID without the `projects//traces/` prefix. (#51666) Unparseable values are kept as the `gcp.trace` and `gcp.span_id` log record attributes. - `pkg/faro`: Return an error instead of panicking when a log record contains a malformed `browser_brand_` key (#51759) - `pkg/faro`: Skip malformed `sdk_integrations` entries instead of panicking when translating logs to Faro payloads (#51484) An integration entry without a `:` separator, or a trailing comma, caused the Faro exporter to crash the collector. Such entries are now skipped. Versions that contain `:` are also no longer truncated. - `pkg/ottl`: `Time` no longer treats a trailing strptime `%Z` as Zulu (UTC) when no location is given (#51416) - `pkg/ottl`: Reject literal values that are not lists for slice arguments, such as `keep_keys(attributes, "http.method")` or `Concat("a", "-")`, at parse time instead of failing on every execution (#51833) - `pkg/stanza`: Fix the `container` parser rejecting containerd logs whose timestamps use a UTC offset instead of `Z` when `format: containerd` is set. (#51284) - `processor/adaptive_tail_sampling`: Forward an evicted trace on a detached context rather than the context of whichever request triggered the eviction, so its spans are no longer attributed to an unrelated client. (#51691) Components reading client.Info downstream, such as headers_setter with from_context, now see no client metadata for an evicted trace instead of the wrong request's. - `processor/adaptive_tail_sampling`: Preserve original scope groups, scope metadata, and schema URLs when splitting spans by trace ID, including late spans handled by the decision cache. (#51461) - `processor/cumulative_to_delta`: Fix ExponentialBuckets.Diff missing reset when old buckets precede current histogram offset (#51303) - `processor/remotetap`: Fix a panic on shutdown (`close of nil channel`) when a websocket client had already disconnected before the processor shut down. (#51342) - `processor/resource_detection`: Honor `fail_on_missing_metadata` also for the instance identity document and hostname lookups of the `ec2` detector (#50826) The `ec2` detector guarded only its initial `instance-id` lookup with `fail_on_missing_metadata`. The subsequent instance identity document and hostname lookups always returned their respective errors, regardless of the fail_on_missing_metadata setting. On clusters where the metadata service implements the EC2-compatible `meta-data` tree, but not the AWS-specific `dynamic/instance-identity` endpoints, this would lead to a crash on startup even with `fail_on_missing_metadata: false`. The `instance-id` lookup would succeed and then the identity document lookup would fail with HTTP 404. OpenStack Nova based clusters behave this way, so a collector configured with the `ec2` detector and `fail_on_missing_metadata: false` failed to start on those hosts rather than skipping the detector. The identity document lookup now honors the flag: when `fail_on_missing_metadata` is `false` and the endpoint responds with HTTP 404, the detector logs at debug level and returns an empty resource. Any other error is still returned, since it might be transient. When the flag is `true` the error is returned as before. The hostname lookup honors the flag as well: when `fail_on_missing_metadata` is `false`, the detector logs at debug level and returns the resource without the `host.name` attribute, instead of failing the detection or skipping the instance tags. When it is `true`, the error is returned. - `receiver/azure_blob`: Return an error instead of panicking when an Event Hub message has no events or an unexpected blob subject (#51474) A malformed or unexpected Event Hub message could crash the collector. Such messages are now logged as errors and skipped, and events other than blob creation are ignored without being parsed. - `receiver/azure_event_hub`: Do not emit 0-valued timeseries for aggregates (total, count, minimum, maximum, average) that are missing from the source Azure record (#50485) Diagnostic settings only export the aggregates a resource supports, e.g. a Standard Load Balancer exports total and count but no minimum/maximum. Missing aggregates are now skipped instead of being coerced to 0. - `receiver/azure_event_hub`: Recreate the partition client after an `ownershiplost` error instead of polling a permanently detached link. (#51463) When another receiver with a higher epoch attached to the same partition and consumer group, the receiver logged `error receiving events` on every poll forever and never received data again. The partition client is now closed and reopened from the last received sequence number with exponential backoff. - `receiver/cloud_foundry`: Do not emit partially initialized log records for unsupported log types. (#51517) - `receiver/googlecloudmonitoring`: Emit data points in chronological order to prevent data loss in downstream processors. (#51641) - `receiver/host_metrics`: Reject negative `metadata_collection_interval` values during configuration validation. (#51640) - `receiver/kafka`: Fix records from healthy partitions being dropped when a poll also contains a fetch error. (#51852) - `receiver/mysql`: Report `mysql.index.io.wait.count` and `mysql.index.io.wait.time` under the correct `operation` attribute (#49597) The `mysql.index.io.wait.count` and `mysql.index.io.wait.time` metrics were reported under the wrong `operation` attribute (for example, delete counts appeared under `operation=update`). Each datapoint is now reported under its correct operation. - `receiver/postgresql`: Add `postgresql.userid` to `db.server.top_query` and `db.server.query_plan`, and key the top-query counter cache and EXPLAIN plan cache on it instead of `postgresql.rolname`. Fixes a case where two dropped database roles could be reported under each other's counters or query plan, and keeps counter deltas continuous across a role rename. (#51319) - `receiver/prometheus_remote_write`: Attach exemplars once, to the series that sent them, rather than to every metric built from the same labels. (#50334, #50546) - `receiver/splunk_enterprise`: Fixes recorded value for RollingRestartStatus metric (#51866) - `receiver/sql_server`: Fix missing metrics when using direct SQL Server connection - `sqlserver.lock.wait_time.avg`, `sqlserver.transaction.rate`, `sqlserver.page.operation.rate`, `sqlserver.page.lazy_write.rate`, and `sqlserver.transaction_log.growth.count` now emit values on non-Windows platforms and when the receiver is configured with a direct database connection. (#51384) All of these except `sqlserver.transaction_log.growth.count` report no data point on the first scrape, since they are calculated from the change in their counters between scrapes. - `receiver/sql_server`: `sqlserver.session.duration` now reports whole seconds since login instead of milliseconds, fixing a 25-day overflow in `total_elapsed_time`. (#51419) - `receiver/sql_server`: Fix direct connection queries returning no data when `instance_name` is set to a named instance (#50773) The direct connection queries filtered rows with `@@SERVERNAME = ''`. On a named instance `@@SERVERNAME` returns `\`, which never matches the bare instance name, so every query returned zero rows and no metrics were emitted. The filter was also redundant: a connection is scoped to a single instance and its DMVs only expose that instance. It has been removed. `instance_name` remains in use for the Windows performance counter collection path. - `receiver/sql_server`: Fix direct-connection performance counter rate metrics to emit per-second rates instead of cumulative counter values. (#50772) The `sqlserver.page.buffer_cache.free_list.stalls.rate` metric value type changes from int to double so fractional rates can be represented. - `receiver/statsd`: Close the TCP connection when the client disconnects and bound the size of an unterminated line, fixing a per-connection file descriptor leak and an unbounded memory growth path in the TCP transport. (#50123) - `receiver/webhook_event`: Validate that `path` and `health_path` begin with a leading `/` so the collector fails at config load instead of panicking at startup. (#50893) A `path` or `health_path` without a leading `/` caused `httprouter` to panic in `Start()`, after the collector had already bound its telemetry port. The panic left the port held, so every restart attempt failed with `bind: address already in use`. - `receiver/yang_grpc`: Apply the configured `security.allowed_clients` and `security.rate_limiting` settings to the `MdtDialout` streaming RPC, which previously did not enforce either. (#0) - `scraper/network`: Fix incorrect Linux TCP state names (`FIN_WAIT_1`/`FIN_WAIT_2`) used by the networkscraper, which never matched real connection states. (#51271) ## v1.1.0/v0.162.0 ### 🛑 Breaking changes 🛑 - `all`: Remove the wavefront receiver after a period of deprecation (#51397) - `connector/signal_to_metrics`: The default error mode has been changed from `propagate` to `ignore` to ensure valid OTLP payloads are not dropped (#48419) - `exporter/elasticsearch`: Remove the deprecated `flush` and `num_workers` configuration settings. (#42718) Migrate `num_workers` to `sending_queue::num_consumers`, `flush::interval` to `sending_queue::batch::flush_timeout`, and `flush::bytes` to `sending_queue::batch::max_size` with `sending_queue::batch::sizer` set to `bytes`. This also removes `Config.NumWorkers`, `Config.Flush`, and `FlushSettings` from the exported Go API. - `exporter/elasticsearch`: Ingest OTel profiles as Elasticsearch (9.6.0) datastreams (#50589) In `otel` mapping mode, profiling signals are now written to OTel-native datastreams (e.g. `profiling-events-all.otel-default`) that require **Elasticsearch 9.6.0 or later**. Sending profiles to an older cluster will result in `index_not_found_exception` errors and data loss. Users on Elasticsearch < 9.6.0 must restrict the exporter to ECS mode via `mapping.allowed_modes: [ecs]`. - `exporter/elasticsearch`: Move OTel profiling serializer to `ecsserializer` package and wire `ecs` mapping mode to use it for profiles. (#50589) - `pkg/ottl`: Remove the stable `ottl.PanicDuplicateName` and `ottl.contexts.enableOTelColContext` feature gates. (#44630, #46437) - `pkg/prometheus`: Promote the pkg.translator.prometheus.PermissiveLabelSanitization feature gate from alpha to beta, enabling it by default. (#50429) Labels starting with a single underscore (e.g. `_foo`) will no longer be prefixed with `key_` by default. To restore the previous behavior, disable the feature gate: `--feature-gates=-pkg.translator.prometheus.PermissiveLabelSanitization`. - `processor/adaptive_tail_sampling`: Add explicit root-scoped fingerprint selectors (`root.resource.`, `root.scope.`, `root.span.`, `root.any.`) and require `root.` to name an origin. (#51304) `root.` is now a position prefix that composes with the `resource`, `scope`, `span` and `any` origins, so a fingerprint can read the root span's resource-level attributes (`root.resource.attributes["service.name"]`) or their union (`root.any.attributes[...]`). Bare `root.attributes[""]` no longer parses; it previously read only the root span's span attributes, so resource attributes such as `service.name` came back ``. Migrate `root.attributes[...]` to `root.span.attributes[...]` for the same behaviour, or to `root.resource.` / `root.any.` to reach the attributes that were unreachable before. - `processor/cardinality_guardian`: move units to singular form (#45270) - `processor/signing`: Wrap attribute scalar values in type-tagged objects (`{"intValue":"…"}`, `{"stringValue":"…"}`, etc.) to eliminate scalar type collisions in the JCS-canonical signed payload. (#50884) Previously, `PutInt("k", 123)` and `PutStr("k", "123")` produced identical canonical JSON, so one signature covered both values. Each scalar type is now wrapped in a single-key object keyed by type name (matching OTLP/JSON conventions), making every type distinct. Existing signatures are invalidated by this change. `SeverityNumber` and `SeverityText` are no longer included in the signed payload; the audit logging spec marks them as SHOULD NOT. - `processor/signing`: Adds OpenBAO and Kubernetes Secrets as newKeyMaterialProvider options to the signing processor. (#50079, #51055) Additionally, supports a Kubernetes Secret, or an OpenBao/Vault KV secret. Sets `audit.integrity.signer = "collector"` to indicate the Tier-2 Collector produced the integrity proof. - `processor/transform`: Remove the stable `processor.transform.defaultErrorModeIgnore` feature gate. (#51242) - `receiver/kafka`: Change the default for `metadata::retry::max` from 3 to 20 to match franz-go's default. (#50116) The field was unwired since the migration to franz-go, so every collector has effectively been running with franz-go's default of 20. The new default preserves that behavior now that the field is applied. Only configurations that set `metadata::retry::max` explicitly change behavior: the configured value is now honored. - `receiver/kafka_metrics`: Change the default for `metadata::retry::max` from 3 to 20 to match franz-go's default. (#50116) The field was unwired since the migration to franz-go, so every collector has effectively been running with franz-go's default of 20. The new default preserves that behavior now that the field is applied. Only configurations that set `metadata::retry::max` explicitly change behavior: the configured value is now honored. - `receiver/prometheus`: Promote the `receiver.prometheusreceiver.IgnoreScopeInfoMetric` feature gate to stable (#47312) The `otel_scope_info` metric is no longer used for scope attribute extraction and is converted like any other metric. Scope attributes are populated from `otel_scope_`-prefixed metric labels instead. The feature gate can no longer be disabled and will be removed in v0.164.0. ### 🚩 Deprecations 🚩 - `connector/grafana_cloud`: Rename component type from "grafanacloud" to "grafana_cloud" to follow snake_case naming convention. The old name is kept as a deprecated alias. (#48017) - `receiver/aws_s3`: Rename `awss3` receiver to `aws_s3` with deprecated alias `awss3` (#45339) - `receiver/kafka`: Deprecate `metadata::full`, which became a no-op after the migration to franz-go. (#50116) franz-go has no full-metadata mode; it only fetches metadata for the topics the receiver consumes from. The field is still accepted in configuration for backwards compatibility, but has no effect at runtime. It will be removed in a future release. - `receiver/kafka_metrics`: Deprecate `metadata::full`, which became a no-op after the migration to franz-go. (#50116) franz-go has no full-metadata mode; it only fetches metadata for the topics the scrapers query. The field is still accepted in configuration for backwards compatibility, but has no effect at runtime. It will be removed in a future release. - `receiver/kubelet_stats`: Deprecate `k8s.pod.cpu.node.utilization`, `k8s.pod.memory.node.utilization`, `k8s.container.cpu.node.utilization`, and `k8s.container.memory.node.utilization` metrics. (#50857) These metrics are deprecated following the decision in the K8s SemConv SIG (https://github.com/open-telemetry/semantic-conventions/issues/2768). They will be removed in a future release. ### 🚀 New components 🚀 - `exporter/nats`: Add the NATS exporter to export traces, metrics, and logs to a NATS server (skeleton; in development). (#39540) - `extension/file_telemetry_policy`: Add filetelemetrypolicy extension skeleton. (#50965) - `extension/sd_notify`: Promote `sd_notify` extension stability from development to alpha. (#49607) - `processor/telemetry_policy`: Add the initial skeleton for the telemetry_policy processor. (#50965) ### 💡 Enhancements 💡 - `cmd/opampsupervisor`: Enable keepalive by default (#51159) - `connector/exceptions`: Add `logs_to_logs` and `logs_to_metrics` support, and fix the `traces_to_logs` edge to emit spec-conformant exception LogEvents (`event.name`, required `exception.*` attributes, and full resource attribute propagation). (#50900) - `connector/failover`: Introduces `condition.error.contains` which allows the connector to failover based on error type. (#44518) - `exporter/azure_monitor`: Enable keepalive by default (#51178) - `exporter/coralogix`: Enable keepalive by default (#51181) - `exporter/datadog`: Emit `otel.datadog_exporter.metrics.running.azurecontainerapps` tagged with `replica`, `name`, `subscription_id`, and `resource_group` for Azure Container Apps workloads sending metrics via the Datadog exporter. (#49615) - `exporter/datadog`: Emit running metrics for Azure App Services, Azure Functions, Cloud Run services, and Cloud Run Functions workloads sending metrics through the Datadog exporter. (#51501) - `exporter/honeycomb_marker`: Enable keepalive by default (#51180) - `exporter/load_balancing`: Add `randomness` routing key that routes spans by the OTel tracestate randomness value (`ot=rv`), falling back to trace ID randomness when absent, so traces sharing an explicit randomness value are routed to the same backend. (#49660) - `exporter/logicmonitor`: Enable keepalive by default (#49316) - `exporter/sematext`: Enable keepalive by default (#49316) - `exporter/syslog`: Add support for exporting to Unix datagram sockets such as `/dev/log`. (#50867) - `extension/awsproxy`: Enable keepalive by default (#49316) - `extension/datadog`: Enable keepalive by default (#49316) - `extension/health_check`: Enable keepalive by default (#51175) - `extension/healthcheckv2`: Enable keepalive by default (#51175) - `extension/http_forwarder`: Enable keepalive by default (#51182) - `extension/jaegerremotesampling`: Enable keepalive by default (#49316) - `extension/json_log_encoding`: Add the opt-in `parse_ints` setting to preserve JSON integer literals within the `int64` range. (#51299) Applies to array and single-document/NDJSON input, including nested objects and arrays. Decimal, exponent, and out-of-range integer literals are still parsed as `float64`. The option defaults to `false` and adds processing overhead when enabled. - `extension/mcp`: Enable keepalive by default (#51177) - `extension/pebble_tail_storage`: Add extension telemetry counters for Pebble tail storage operations and read-path failures (#49697) Adds the following metrics: - `otelcol_extension_pebble_tail_storage_operations` (`operation`=`append|take|delete`, `outcome`=`success|failure`) - `otelcol_extension_pebble_tail_storage_read_errors` - `extension/remotetap`: Enable keepalive by default (#49316) - `extension/sumologic`: Enable keepalive by default (#49316) - `pkg/ottl`: Promote the `ottl.set.allowNil` feature gate to stable. (#49741) - `processor/adaptive_tail_sampling`: Add `sampler_request_count`, `sampler_keyspace_size`, and `sampler_burst_count` metrics exposing the internal performance of `adaptive_percentage` and `adaptive_throughput` samplers, labelled by `rule`, `sampler_type`, and `sampler_algorithm`. (#49311) Metrics are labelled by `rule`, `sampler_type` (`adaptive_percentage`, `adaptive_throughput`), and `sampler_algorithm` (`ema`, `windowed`), matching the rule's sampler config, so keyspace growth, request bursts, and convergence state can be compared per rule. `sampler_burst_count` is not emitted for `adaptive_throughput` rules using the `windowed` algorithm, which doesn't track this counter. - `processor/adaptive_tail_sampling`: Default `max_keys` to 500 when omitted; explicitly setting it to 0 still means unlimited. (#49311) - `processor/interval`: Add delta temporality metrics support. (#50845) - `processor/lookup`: Promote lookup processor to alpha stage (#51199) - `processor/remotetap`: Enable keepalive by default (#49316) - `processor/resource_detection`: Add Azure Functions resource detector (#50633) - `processor/rolling_span_latency`: Implement EWMA-based rolling latency baseline tracking and slow/very_slow span labeling. (#50260) - `processor/transform`: Add extract_avg_metric OTTL function to transform processor (#49238) - `receiver/aws_s3`: Support coarser time-steps in partition formats (#51038) Adds support for day-partitioned time slices when reading partition formats without minute/hour granularity. - `receiver/awscontainerinsightreceiver`: Enable keepalive by default (#49316) - `receiver/awsecscontainermetrics`: Enable keepalive by default (#49316) - `receiver/awsfirehose`: Enable keepalive by default (#49316) - `receiver/awsxray`: Enable keepalive by default (#49316) - `receiver/azure_functions`: Enable keepalive by default (#49316) - `receiver/azure_monitor`: Add support for filtering Azure resources by tags. (#50959) Filter resources by tag name and optionally by tag value. - `receiver/azure_monitor`: Emit the `timegrain` datapoint attribute on the ARM collection path, matching the batch API path (#50847) Datapoints collected through the batch API carried a `timegrain` attribute while the same metrics collected through the ARM API did not, so a consumer could not tell a PT1M series from a PT1H one on that path. Both scrapers now attach the attribute from the same composite key. - `receiver/cloudflare`: Enable keepalive by default (#49316) - `receiver/collectd`: Enable keepalive by default (#49316) - `receiver/datadog`: Enable keepalive by default (#49316) - `receiver/file_stats`: move all attributes and metrics to beta (#51260) - `receiver/github`: Enable keepalive by default (#49316) - `receiver/gitlab`: Enable keepalive by default (#49316) - `receiver/gitlab`: Add `gitlab.project.id` resource attribute (#48993) - `receiver/google_cloud_spanner`: Add missing label `operations_by_table_json_string` to top minute transaction stats in `googlecloudspannerreceiver`. (#51057) Syncs the OTel receiver with SPANNER_SYS tables to bring the parity between GCP transaction insights page and OTel receiver. - `receiver/google_cloud_spanner`: Add `query_type` label to top minute query stats in `googlecloudspannerreceiver`. (#50843) Syncs the OTel receiver with SPANNER_SYS tables to bring the parity between GCP Query insights page and OTel receiver. - `receiver/haproxy`: Enable keepalive by default (#49316) - `receiver/haproxy`: Move all metrics and attributes to beta (#51261) Also, change all units to singular form per #45270 - `receiver/http_check`: Enable keepalive by default (#49316) - `receiver/huaweicloudcesreceiver`: Enable keepalive by default (#49316) - `receiver/influxdb`: Enable keepalive by default (#49316) - `receiver/jaeger`: Enable keepalive by default (#49316) - `receiver/journald`: Add "convert_to_semantic_conventions" config option to map well-known journald fields to OpenTelemetry semantic convention attributes (#7298) See the [Semantic Conventions Mapping](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/journaldreceiver/README.md#semantic-conventions-mapping) section of the receiver README for details on what `convert_to_semantic_conventions` does. - `receiver/kafka`: Link the receive span to the trace context in Kafka record headers, using the propagators configured in `service::telemetry::traces::propagators`. (#51077) - `receiver/libhoney`: Enable keepalive by default (#49316) - `receiver/loki`: Enable keepalive by default (#51183) - `receiver/mongodb`: Add replica set topology and oplog metrics (#50654) Seven opt-in metrics, disabled by default, emitted only by replica set members. - `receiver/mysql`: Add `server.address` and `server.port` resource attributes (#50967) Both attributes are emitted by default. When the receiver connects over loopback (for example `localhost` or `127.0.0.1`), `server.address` reports the host name of the machine running the collector, matching how `service.instance.id` already resolves its host. `mysql.instance.endpoint` and existing `service.instance.id` values are unchanged. Disable the attributes via `resource_attributes.server.address.enabled: false` and `resource_attributes.server.port.enabled: false`. - `receiver/mysql`: Add a new `db.server.query_plan` event that reports the query execution plan on a record of its own, so it can be filtered, routed or dropped independently of the query statistics. (#51281) Disabled by default, and requires `db.server.top_query` or `db.server.query_sample`. Enabling it removes `mysql.query_plan` from those two events, which keep `mysql.query_plan.hash` as the join key. `db.server.top_query` also reports `db.namespace`, whether or not the new event is enabled. - `receiver/nsxt`: Enable keepalive by default (#49316) - `receiver/ntp`: Move ntp receiver metric to beta (#51380) - `receiver/oracledb`: Add a new `db.server.query_plan` event that reports the query execution plan on a record of its own, so it can be filtered, routed or dropped independently of the query statistics. (#51065) Disabled by default, and requires `db.server.top_query`. - `receiver/oracledb`: Add the `oracle.db.edition` resource attribute. (#51292) Disabled by default. opt in by setting `resource_attributes.oracle.db.edition.enabled: true` in the receiver config. - `receiver/oracledb`: Collect system and resource limit metrics when the receiver is connected directly to a PDB, such as on AWS RDS Oracle (#50147) Previously, system and resource limit metrics were not reported when connecting straight to a PDB. - `receiver/oracledb`: Add the `db.system.name` attribute to the `db.server.query_plan` and `db.server.session.wait_sample` events. (#51065) - `receiver/postgresql`: Add `postgresql.backend.connection.start` attribute to `db.server.query_sample` (#50769) - `receiver/postgresql`: Add `db.system.version` resource attribute. (#51288) Disabled by default. opt in by setting `resource_attributes.db.system.version.enabled: true` in the receiver config. - `receiver/postgresql`: Emit the `server.address` and `server.port` resource attributes regardless of the `receiver.postgresql.useOTelSemconv` feature gate, and report a loopback endpoint as the collector's host name in `server.address`. (#50889) Both attributes were previously emitted only with the gate enabled and are additive, so the resource model the gate selects is otherwise unchanged. Loopback resolution matches how `service.instance.id` already resolves the same endpoint; non-loopback endpoints are unaffected, as is `transport: unix`, which continues to report the socket path. - `receiver/postgresql`: Add a new `db.server.query_plan` event to report the query execution plan separately. (#51301) Disabled by default, and requires `db.server.top_query`. When enabled, `db.server.top_query` stops carrying `postgresql.query_plan`. - `receiver/prometheus`: Enable keepalive by default (#49316) - `receiver/prometheus`: Use value types and pre-allocate slices when processing scraped samples and building OTLP metrics. (#51133) - `receiver/prometheus_remote_write`: Enable keepalive by default (#49316) - `receiver/rabbitmq`: Add the disabled-by-default `rabbitmq.cluster.name` resource attribute. (#50168) - `receiver/receiver_creator`: Add a `joinHostPort` function for receiver template expressions. (#50969) - `receiver/signalfx`: Enable keepalive by default (#49316) - `receiver/skywalking`: Enable keepalive by default (#49316) - `receiver/splunk_hec`: Enable keepalive by default (#49316) - `receiver/sqlserver`: Add `db.system.version` resource attribute. (#51194) Only available in direct connection mode. Disabled by default. - `receiver/sqlserver`: Add `db.namespace` and `db.system.name` to the `db.server.query_plan` event, so all four log events carry them. (#50629) - `receiver/tcp_check`: move metric to alpha stability (#51381) - `receiver/vcenter`: Add `proxy_url` to configure a per-receiver proxy for vSphere SDK connections. (#51187) The `http`, `https`, `socks5` and `socks5h` schemes are supported. When `proxy_url` is unset the process-wide HTTP_PROXY/HTTPS_PROXY/NO_PROXY environment variables continue to apply, so existing behavior is unchanged. Because the setting is scoped to a single receiver instance, several `vcenter/` receivers in one collector can now each reach their vCenter through a different proxy. - `receiver/webhook_event`: Enable keepalive by default (#49316) - `receiver/zipkin`: Enable keepalive connections by default (#51139) ### 🧰 Bug fixes 🧰 - `all`: Exclude datadogconnector, datadogexporter, and datadogextension on solaris (#51329) - `cmd/opampsupervisor`: Preserve the health last reported to the OpAMP server when an accepted connection settings offer replaces the OpAMP client, instead of reporting a running agent as unhealthy (#51009) The supervisor.agent.health_status metric now also tracks the health reported when no config is present and at shutdown, which previously bypassed it. - `cmd/opampsupervisor`: Open agent.log in append mode for external log rotation (Linux + Windows) (#50376) This makes external copytruncate-style log rotation (e.g. logrotate) work correctly instead of the file's size reverting on the next write, on both non-Windows (O_APPEND) and Windows (a FILE_APPEND_DATA handle, since Go's O_APPEND does not survive handle inheritance to the managed agent process on Windows). - `cmd/opampsupervisor`: Fix stopping a Collector that had just started on Windows sometimes taking the full stop grace period and ending in a forced kill. (#51499) - `cmd/telemetrygen`: Prevent unbounded attribute growth and declining metric generation rates when using `--unique-timeseries`. (#49950) - `connector/grafana_cloud`: Make `k8s.node.name` the first entry in the default `host_identifiers` list so that hosts reported by several telemetry sources are counted once (#51502) The default is now `["k8s.node.name", "host.id", "k8s.node.uid"]`. - `exporter/doris`: Fix materialized view and scheduled job creation on Doris 4.x, and add an `is_root` column plus a `_summary` materialized view to the traces table. (#51265) Existing tables are not altered; the new column and view only apply to tables created with `create_schema: true`. - `exporter/elasticsearch`: Fix downsampled profiling events (`profiling-events-5powNN`) being silently dropped instead of sent to Elasticsearch. (#51222) - `exporter/kafka`: Apply `metadata::retry::backoff`, which was silently ignored since the migration to franz-go. (#50116) `metadata::retry::backoff` is the minimum wait between retries; each successive retry doubles the wait, with jitter applied, capped at `max(5s, backoff)`. On the exporter this paces produce retries. Produce retry counts remain governed by `retry_on_failure` and `timeout`. - `exporter/otelarrow`: Recover from transient stream connection errors instead of permanently losing stream capacity. (#50254) Any failure to establish a stream was previously treated as evidence that the endpoint does not support OTel-Arrow, however some transient errors like a timeout could also surface on these code paths and violate that assumption. This resulted in an unhandled partial failure case where the worker states associated with those failed streams would become orphaned with no routine processing their inputs. They would also appear to be unloaded, attract requests, and then permanently wedge the sending goroutine because nothing writes back to it. - `exporter/prometheus`: Remove every series ended by a staleness marker when several arrive in the same metric. (#51289) - `exporter/pulsar`: Exclude pulsarexporter on solaris (#51330) - `extension/google_cloud_logentry_encoding`: Fix decoding of log messages larger than 64KiB, which previously failed with "bufio.Scanner: token too long". (#51014) - `extension/k8s_observer`: Format IPv6 Kubernetes port endpoints correctly. (#50969) - `extension/pebble_tail_storage`: Exclude pebbletailstorageextension on solaris (#51327) - `pkg/kafka/configkafka`: Fix missing AWS MSK SASL validation and incomplete OAUTHBEARER error message (#50934) Validate that the region is not empty when the AWS MSK mechanism is used, and add the missing OAuth mechanism to the default switch case error message. - `pkg/ottl`: Reject lambda expressions at parse time when they are not passed to a function argument that accepts them. (#51560) - `pkg/stanza`: Call the Windows Event Log API through `*windows.LazyProc` directly so that pointer arguments stay alive for the duration of the call. (#51074) The wrappers in the windows_eventlog_input operator routed every call through a `SyscallProc` interface, which hid the callee from the compiler and let the garbage collector free a buffer while the Windows API was still reading it. The interface is removed and tests mock the wrapper functions instead. - `processor/cumulative_to_delta`: Fix histogram and exponential histogram reset recovery by updating prevPoint on reset detection (#50828) - `processor/delta_to_cumulative`: Fix exponential histogram downscaling exceeding the bucket limit due to incorrect index rounding. (#50923) - `processor/drain`: move units to singular form (#45270) - `processor/k8s_attributes`: Reject an invalid `exclude.pods[].name` regex at config load instead of panicking at startup (#50957) - `processor/k8s_attributes`: Emit the semantic convention deprecation warnings that were unreachable because they were evaluated before the extraction rules were populated (#51188) - `processor/metrics_transform`: Preserve an absent histogram sum when aggregating datapoints instead of reporting a sum of 0 (#49379) When merging (exponential) histogram datapoints, the sum is now only kept when every merged datapoint carries one, matching the existing handling of min and max. Previously a merge that involved a datapoint without a sum produced HasSum=true with Sum=0, which is indistinguishable from a genuine zero sum. - `processor/resource_detection`: Honor the configured `timeout` in the `gcp` detector when the metadata server is unreachable. (#50754) The `gcp` detector did not honor the configured `timeout`. It now checks the metadata server with a context that carries the deadline. - `processor/rolling_span_latency`: move units to singular form (#45270) - `processor/signing`: Fix int64 precision loss in canonical payload — timestamps and integer attributes are now serialized as quoted decimal strings instead of IEEE-754 doubles, preventing distinct records from producing identical signatures. (#50881) - `processor/tail_sampling`: Reuse the original decision's threshold when rewriting tracestate for late-arriving spans of an already-sampled trace. (#50623) - `processor/transform`: Ensure each batch of data receives a fresh cache when `shared_cache` is enabled (#51087) - `processor/transform`: Fix exponential-to-explicit histogram conversion (#50737) The conversion now handles positive, negative, and zero buckets, includes the required overflow bucket, preserves data point metadata, and uses the exponential histogram mapping implementation for bucket boundaries. - `receiver/elasticsearch`: Emit the `elasticsearch.index.shards.size` metric with `aggregation: primary_shards` in addition to `aggregation: total` (#48918) The index shards size metric only reported the `total` aggregation, unlike the other index metrics and its own documented attributes. It now also reports the `primary_shards` aggregation. - `receiver/fluent_forward`: Cap decoded msgpack array entries at 1,000,000 and map options at 1,000 to avoid excessive memory allocation. (#49223) - `receiver/jaeger`: Bound the Thrift decoder's max message size to the HTTP request body length to prevent a memory-amplification DoS. (#49218) A tiny Thrift-binary payload could declare a spans list with a huge element count, forcing the decoder to pre-allocate a large slice before failing to read the (absent) data. The Thrift `/api/traces` handler now caps the decoder's max message size at the number of bytes actually received, so a container that declares more elements than the payload can hold is rejected instead of being pre-allocated. - `receiver/k8s_events`: move units to singular form (#51262) - `receiver/k8s_events`: Keep the watcher in the Kubernetes events receiver retry when retrieving fresh resource version after a 410 Gone response but fails transiently. (#49962) - `receiver/k8s_objects`: Keep the watcher in the Kubernetes objects receiver retry when retrieving fresh resource version after a 410 Gone response but fails transiently. (#49962) - `receiver/kafka`: Stop reporting stale offset lag and current offset metrics for revoked Kafka partitions. (#36093) The `otelcol_kafka_receiver_offset_lag` and `otelcol_kafka_receiver_current_offset` metrics will now be reported using async gauges. - `receiver/kafka`: Stop processing a fetched batch once the partition consumer is cancelled, instead of marking and dropping the rest of it (#50753) `message_marking.on_error` and `message_marking.on_permanent_error` no longer mark a record that was interrupted by the cancellation. At shutdown, records that were fetched but not delivered are redelivered on the next run instead of being committed. - `receiver/kafka`: Apply `metadata::retry::max` and `metadata::retry::backoff`, which were silently ignored since the migration to franz-go. (#50116) `metadata::retry::max` governs retries for consumer group and offset commit/fetch requests. It does not apply to fetch requests, nor to the client's internal metadata refresh, which caps itself at 3 retries. `metadata::retry::backoff` is the minimum wait between retries; each successive retry doubles the wait, with jitter applied, capped at `max(5s, backoff)`. Unlike `max`, it applies to every retry path, including fetches. - `receiver/kafka_metrics`: Apply `metadata::retry::max` and `metadata::retry::backoff`, which were silently ignored since the migration to franz-go. (#50116) `metadata::retry::max` governs retries for the admin and offset fetch requests issued by the scrapers. It does not apply to the client's internal metadata refresh, which caps itself at 3 retries. `metadata::retry::backoff` is the minimum wait between retries; each successive retry doubles the wait, with jitter applied, capped at `max(5s, backoff)`. - `receiver/kafka_metrics`: Set the `kafka.cluster.alias` resource attribute to enabled when `cluster_alias` is defined. (#47573) - `receiver/macos_unified_logging`: Stop re-emitting already sent records in live mode by resuming each poll from the last emitted record (#50625) Live mode previously recomputed `--start` as `now - max_log_age` on every poll and reset the poll interval whenever the re-read window returned records, so each record was emitted up to `max_log_age / 100ms` times. Text formats (`default`, `syslog`, `compact`) now also set the log record timestamp from the line. The `json` format has no per-line timestamp and is not de-duplicated. - `receiver/macos_unified_logging`: Add predicate field aliases and support additional fields (#50626) Extended logType validation to include messageType alias and type validation to include eventType alias. Added support for eventMessage and signpostName predicate fields. Updated the README example to use the supported OR form for messageType/logType comparisons. - `receiver/mongodb`: Fix replica set secondary connections never being established (#50622) Replica set secondaries were never discovered, so the receiver only ever collected from the instance it was pointed at. The receiver now connects to discovered secondaries, applying the configured TLS settings and an operation timeout to those connections. - `receiver/mysql`: Disabling every metric fed by a query now also skips the query that fed it, instead of still running the query and discarding the result. (#50702) - `receiver/mysql`: Check `rows.Err()` after iterating query results so a failed scrape is not reported as successful (#51125) Affected queries could return partial results without reporting an error, so a connection lost part-way through a scrape produced incomplete metrics that looked like a successful collection. - `receiver/netflow`: Exclude netflowreceiver on solaris (#51328) - `receiver/oracledb`: Fix top_query and top_procedure collection running before the configured collection interval has elapsed (#50888) - `receiver/oracledb`: move units to singular form (#45270) - `receiver/otlp_json_file`: Fix a panic and a zeroed accepted-data count by reading the span and metric counts before the data is handed to the next consumer (#50314) `EndTracesOp`/`EndMetricsOp` received `SpanCount()`/`MetricCount()` evaluated after `ConsumeTraces`/`ConsumeMetrics` had already returned. By that point a consumer that declares `MutatesData` may own the data - the `batch` processor's background goroutine moves the resource slice out and nils the source - so the receiver counted state it no longer owned. It reported 0 accepted spans or metric points, and could read a torn slice header and crash the collector. The logs path in the same file has captured its count before consuming since #29274. - `receiver/otlp_json_file`: Attach the file attributes to profiles, as is already done for logs, metrics and traces. (#50562) Attributes such as `log.file.name` were silently dropped from profiles. They are now interned in the profiles dictionary and referenced from each profile, so options like `include_file_name` behave consistently across all four signals. - `receiver/postgresql`: Fix incorrect top-query counter increments and query ranking caused by an undersized counter cache. (#51066) With the defaults (top_n_query: 200, max_rows_per_query: 1000), the cache held 4,000 entries for up to 10,000 counters, overflowing beyond roughly 400 statements when all ten counters were populated. Eviction within a collection caused full cumulative totals to be reported as interval increments on subsequent collections, also distorting which queries were selected as the top N. The cache is now sized from max_rows_per_query, independently of the reporting limit. - `receiver/postgresql`: Prevent dropped top-query records and incorrect query-plan reuse when the same query ID appears under multiple databases or roles. (#51067) Rows from different databases or roles that shared a query ID previously used the same counter-cache entries. This could calculate deltas against unrelated counters and silently drop top-query records. Cache entries are now isolated by database, role, query ID, and counter column. Query plans are also cached separately for each database, role, and query ID. - `receiver/prometheus`: Drop malformed classic histograms with decreasing bucket counts or overall count below largest bucket count instead of emitting invalid OTLP data. (#50348) Also applies when classic histograms are converted to NHCB via the `convert_classic_histograms_to_nhcb` scrape option. - `receiver/pulsar`: Exclude pulsarreceiver on solaris (#51326) - `receiver/snmp`: Fix a collector-crashing nil-pointer panic in the deferred client Close when a mid-scrape connection reset fails to reconnect. (#49703) The wrapper's Close now delegates to gosnmp's nil-safe, idempotent Close instead of dereferencing the connection field directly. - `receiver/splunk_hec`: Extend the response write deadline while a request body is actively being read (#51391) Over HTTP/2 the server arms the WriteTimeout deadline when the handler starts and never extends it, so a large or slow request that is still actively transferring its body was reset (RST_STREAM) once WriteTimeout elapsed, even though it was making progress. The receiver now pushes the write deadline out as the request body is read, so WriteTimeout behaves as an idle timeout for the body-read phase rather than a hard cap on how long a request may take to arrive. The deadline is also reset once just before the data is handed to the pipeline so the downstream consumer starts with a full window; it is not extended while the consumer runs, so a consumer that blocks longer than WriteTimeout is still reset. When WriteTimeout is 0 (disabled) behavior is unchanged. - `receiver/splunk_hec`: Set `ObservedTimestamp` on log records so downstream consumers have a valid timestamp when the event carries no time (#51391) Previously the receiver only set `Timestamp`, derived from the event's `time` field (events endpoint) or the `?time=` query parameter (raw endpoint). When neither was present the timestamp defaulted to the zero value (Unix epoch) and `ObservedTimestamp` was never set, leaving records with no usable time. `ObservedTimestamp` is now stamped with the receiver's wall-clock time on both the events and raw paths, giving downstream components the standard fallback. - `receiver/ssh_check`: Fix the configured `timeout` never being applied to the underlying SSH connection. (#50912) - `receiver/systemd`: move units to singular form (#45270) - `receiver/tcp_check`: move units to singular form (#45270) ## v0.161.0 ### 🛑 Breaking changes 🛑 - `all`: Remove the deprecated mezmo exporter. (#49953) Use the OTLP/HTTP exporter to send logs directly to Mezmo instead. See https://docs.mezmo.com/telemetry-pipelines/otel-collector and https://docs.mezmo.com/telemetry-pipelines/open-telemetry-source for migration guidance. - `cmd/opampsupervisor`: Deprecate the `reports_remote_config` capability config option. The `accepts_remote_config` option now enables both the AcceptsRemoteConfig and ReportsRemoteConfig OpAMP capabilities. (#49763) `reports_remote_config` is still accepted but has no effect. The supervisor logs an error at startup when it is set to `true`. Configurations with `accepts_remote_config: true` and `reports_remote_config: false` now report remote config status. The option will fail startup in v0.163.0 and be removed in v0.165.0. - `extension/azure_encoding`: Promote extension.azureencoding.DontEmitV0LogConventions and extension.azureencoding.EmitV1LogConventions feature gates to Beta (#50885) The gates are now enabled by default, so Azure log records emit the v1 semconv attribute exception.message instead of the deprecated v1.39.0 attribute error.message. Disable both gates to restore the previous behavior. - `extension/google_cloud_logentry_encoding`: Promote extension.encoding.googlecloudlogentryencoding.DontEmitV0RPCConventions feature gate to Beta (#50879) The gate is now enabled by default, so the audit log parser no longer emits the deprecated semconv v1.38.0 attributes rpc.jsonrpc.error_code and rpc.jsonrpc.error_message. It can be disabled to restore the previous behavior. - `pkg/coreinternal`: Promote internal.coreinternal.goldendataset.DontEmitV0MessagingConventions and internal.coreinternal.goldendataset.EmitV1MessagingConventions feature gates to Beta (#45077) Both feature gates should be promoted together as per RFC. goldendataset now generates spans with messaging.destination.name (semconv v1.40.0) by default, and no longer generates the deprecated messaging.destination (semconv v1.16.0) and messaging.destination.kind (semconv v1.19.0) attributes. - `pkg/faro`: Promote `pkg.translator.faro.EmitV1DeploymentEnvironmentConventions` and `pkg.translator.faro.DontEmitV0DeploymentEnvironmentConventions` feature gates to beta. (#45074) Make faroreceiver emit deployment.environment.name instead of deployment.environment resource attribute by default. - `pkg/kafka/configkafka`: Reject configurations that set both `auth.sasl` and `auth.kerberos`. (#50748) - `pkg/ottl`: Promote the `ottl.PanicDuplicateName` feature gate to stable. (#50873) - `pkg/ottl`: Remove the deprecated `Base64Decode` converter. Use the `Decode` converter with the `base64` encoding instead. (#50875) - `pkg/ottl`: Promote the `ottl.set.allowNil` feature gate to beta, enabling it by default. (#49741) When enabled, the `set` function passes `nil` values directly to the target instead of treating them as a no-op. - `processor/k8s_attributes`: Promote logs, metrics, and traces signals from beta to stable. (#49152) Promote the following feature gates from alpha to beta (enabled by default): - `processor.k8sattributes.EmitV1K8sConventions`: emits stable semconv attribute names (e.g. `k8s.pod.label.*` singular form). - `processor.k8sattributes.DontEmitV0K8sConventions`: disables legacy semconv attribute names (e.g. `k8s.pod.labels.*` plural form). Users relying on the legacy names should disable these gates or migrate to the stable names. It is advised that dual emission is used for the migration period. This can be achieved through the feature gates: `--feature-gates=-processor.k8sattributes.DontEmitV0K8sConventions,processor.k8sattributes.EmitV1K8sConventions`. More information can be found at the respective documentation [section](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/k8sattributesprocessor/README.md#semantic-conventions-compatibility). - `processor/signing`: Include the log record body in the signed payload whatever its type. Previously only a string body was signed, so a record with a structured body and a record with no body produced identical canonical bytes and shared a signature. (#50911) The body is now routed through the same `valueToInterface` conversion as attributes, which handles every `pcommon.Value` type, enforces the existing nesting depth cap, and preserves the UTF-8 validation that previously guarded the string-only path. An unset body is still omitted rather than encoded as null, so records without a body are unaffected. This changes the canonical form for any record carrying a non-string body, so signatures produced by earlier versions over such records will not reproduce. Two new failure modes follow from the body no longer being discarded: a record whose structured body pushes the canonical payload past the 2 MiB limit, or whose body nests deeper than 128 levels, now fails to sign where it previously signed with the body silently omitted. - `receiver/kubelet_stats`: Promote the `receiver.kubeletstats.cpuUsageScrapeBased` feature gate to beta (enabled by default). (#49477) `container.cpu.usage`, `k8s.pod.cpu.usage` and `k8s.node.cpu.usage` (and the cpu utilization metrics derived from them) are now calculated as the rate of the corresponding `*.cpu.time` counter between consecutive scrapes, instead of being read from the kubelet's `UsageNanoCores` value. As a result these metrics are not reported on the first scrape after startup. To restore the previous behavior, run the collector with `--feature-gates=-receiver.kubeletstats.cpuUsageScrapeBased`. - `receiver/sqlserver`: Remove `server.address` and `server.port` from `db.server.top_query` log record attributes (#50384) Remove `server.address` and `server.port` from `db.server.top_query` log record attributes as they duplicate the resource-level attributes and cause inconsistency when overridden via a processor. Both attributes are now enabled by default at the resource level. The `receiver.sqlserver.RemoveServerResourceAttribute` feature gate has been removed. ### 🚀 New components 🚀 - `extension/sd_notify`: Prepare the initial implementation for `sd_notify` extension. (#49607) - `processor/rolling_span_latency`: Add rollingspanlatencyprocessor. (#50260) - `processor/signing`: Add `signingprocessor` implementation — computes RFC 8785 (JCS) canonical hash and signs each log record, storing the base64-encoded signature as `audit.integrity.value` and setting `audit.integrity.algorithm` and `audit.integrity.certificate` as resource attributes. Supports RS256, RS512, ES256, EdDSA, and HMAC-SHA256. (#50079, #50080) Key material can be loaded from a file or environment variables (PR 2a), with Kubernetes Secret and OpenBao support to follow. ### 💡 Enhancements 💡 - `exporter/datadog`: The `container.image.tags` attribute is now mapped to the `image_tag` attribute (#50864) The Datadog exporter and connector already recognize the deprecated `container.image.tag` resource attribute and map it to the Datadog `image_tag` container tag. They now also recognize the newer `container.image.tags` convention. For now, only the first element of the array attribute will be extracted. - `extension/opamp`: Add an opt-in `reports_raw_config` setting to additionally report the raw, unexpanded configuration alongside the effective configuration (#44341) When `reports_raw_config` is enabled (default: false, and requires the `reports_effective_config` capability), the extension reports the raw configuration as authored, before environment variable and other provider references are expanded, under the `raw` key of the effective config map. The fully expanded effective configuration is unchanged and remains under the `""` (empty) key. This is disabled by default because raw configuration files may contain secrets written directly into them. Values sourced from provider references such as `${env:TOKEN}` retain their unexpanded form in the raw configuration, so they are not exposed, and fields using types meant for opaque information (such as `configopaque.String`, commonly used for password fields) are redacted; consult your components' documentation or source to verify which fields are automatically redacted. - `internal/healthcheck`: Migrate to NotifyConfigSnapshot (#50924) - `pkg/fileconsumer`: Move filelog.mtimeSortType featuregate to beta (#46635) - `pkg/ottl`: Promote the `ottl.contexts.enableOTelColContext` feature gate to stable. (#46437) The `otelcol` context is now always available and the feature gate can no longer be disabled. - `pkg/ottl`: Allow `Concat` to accept slice values produced by paths and converter expressions. (#27821, #38690) - `pkg/pdatatest`: Add a `double_value/precision` operator to `pmetricassert`, comparing double datapoint values rounded to n decimal places (#48441) Mirrors `pmetrictest`'s `IgnoreMetricFloatPrecision` for assertion snapshots. `n` must be between 0 and 15, and the operator cannot be combined with an exact `double_value` on the same datapoint. - `pkg/semconvtest`: Pin the default Weaver image version instead of floating on the latest tag (#50915) Use WithVersion to select a different version, including latest. - `pkg/stanza`: Add optional server authenticator support to the `tcp_input` operator via a new `auth` configuration block. (#49339) When `auth.authenticator` references a server auth extension, the `tcp_input` operator authenticates each accepted connection before reading logs, closing the connection if authentication fails. The connection's remote address is exposed to the authenticator through the `client.Info` in the context. This is also available to receivers built on the operator, such as `tcplogreceiver` and `syslogreceiver`. - `processor/resource_detection`: Populate `host.type` on GKE in the `gcp` detector via the Compute API when the `host.type` resource attribute is enabled. (#50662) The machine type is not available from the GKE metadata server, so fetching it requires a Compute API call and the `compute.instances.get` permission (covered by `roles/compute.viewer`). If the permission is missing, the attribute is skipped and the failure is logged. Disable the `host.type` resource attribute to avoid the API call. - `receiver/faro`: Adopt the confighttp server defaults instead of zero values. (#49316) - `receiver/k8s_cluster`: Add the `k8s.statefulset.pod.available` metric reporting the number of available pods (StatefulSetStatus.availableReplicas) per stateful set. (#50345) - `receiver/mongodb`: Add db.system.version resource attribute (#50710) The mongodbreceiver now exposes the MongoDB version as a resource attribute (db.system.version). This follows the pattern used by mysqlreceiver and is disabled by default. The version is already fetched during connection initialization and is now included in resource attributes. - `receiver/mysql`: Add InnoDB redo log lsn and checkpoint-age metrics to the mysqlreceiver. (#50650) - `receiver/mysql`: Add MySQL health, query execution time, and active session count metrics. (#50726) - `receiver/mysql`: Add disabled-by-default InnoDB history list and active transaction metrics. (#50380) - `receiver/mysql`: Add support for AWS IAM authentication (#49044) - `receiver/oracledb`: Add the `db.server.top_procedure` event, reporting aggregated stored procedure performance metrics. (#50796) Derived from `V$SQL` grouped by `PROGRAM_ID` and joined to `DBA_PROCEDURES`, with deltas computed across scrapes. Disabled by default; configure via the new `top_procedure_collection` block (`max_procedure_sample_count`, `top_procedure_count`, `collection_interval`). Rows are fetched up to `max_procedure_sample_count` and ranked in the collector by elapsed-time delta, so a procedure that is hot only in the current interval can reach the report even when its lifetime totals are modest. Correlates with `db.server.top_query` and `db.server.query_sample` through the `oracledb.procedure_id` attribute. - `receiver/oracledb`: Add `server.address` and `server.port` resource attributes (#50724) `server.address` and `server.port` are now emitted by default, so that the monitored instance's network location is available without extra configuration. When the receiver connects over loopback (for example `localhost` or `127.0.0.1`), `server.address` reports the host name of the machine running the collector rather than `localhost`, since the monitored instance is co-located with the collector. This matches how `service.instance.id` already resolves its host, and both attributes now share one resolution path. `host.name` is unchanged. A target whose port is absent or unparseable now resolves `service.instance.id` to `host:1521/service` instead of `unknown:1521/service`. Connection strings with no parseable host at all, such as TNS descriptors, still report `unknown:1521/service` and omit `server.address`, since the instance's location cannot be determined. To stop emitting the server attributes, disable them via `resource_attributes.server.address.enabled: false` and `resource_attributes.server.port.enabled: false`. - `receiver/postgresql`: Report non-relation locks in the `postgresql.database.locks` metric (#49733) Locks with a `lock_type` of `transactionid`, `virtualxid`, `object` or `advisory` were dropped and are now reported with an empty `relation`. Those on a transaction ID belong to no database, so they carry an empty `db.namespace`. This adds data points to a metric that is disabled by default. Every backend holds one `virtualxid` lock, so a sum over this metric grows by about the number of open connections. Check any dashboard or alert that totals this metric. - `receiver/sqlserver`: Add a new `db.server.query_plan` event that carries `sqlserver.query_plan` on its own record, so an oversized execution plan no longer risks dropping the lightweight query statistics alongside it. (#50629) `db.server.query_plan` is disabled by default, and while it is disabled `db.server.top_query` keeps carrying `sqlserver.query_plan` exactly as before. Enabling it moves the plan off `db.server.top_query` and onto the new event, joined back via `sqlserver.query_hash` + `sqlserver.query_plan_hash`. It is collected as part of top query collection, so it does nothing unless `db.server.top_query` is also enabled. - `receiver/sqlserver`: Report a loopback target as the collector's host name in the `server.address` resource attribute. (#49885) When the receiver connects over loopback (for example `server: localhost` or `server: 127.0.0.1`), `server.address` now reports the host name of the machine running the collector rather than `localhost`. A loopback target is only reachable when the monitored instance is co-located with the collector, so the collector host's name identifies the instance, whereas `localhost` would be shared by every monitored host. This matches how `service.instance.id` already resolves its host, and the two now share one resolution path, so they cannot disagree. `host.name` and `service.instance.id` are otherwise unchanged, including the `host\instance` form used for a named instance. - `receiver/sqlserver`: Add the `db.server.top_procedure` event, reporting aggregated stored procedure statistics. (#50799) Reports per-scrape deltas on cumulative stored procedure statistics, ranked by the elapsed time each procedure accrued since the previous scrape. Disabled by default; configure via the new `top_procedure_collection` block (`max_procedure_sample_count`, `top_procedure_count`, `collection_interval`). The event is throttled by its own `collection_interval` (default `60s`) rather than the receiver's global one, which also sets the window the deltas cover. Candidates are pre-filtered to procedures that actually ran within that window, rather than by lifetime totals, so the sample reflects recent activity instead of being skewed by long-lived plans. Correlates with `db.server.top_query` and `db.server.query_sample` through the `sqlserver.procedure_id` attribute. Requires `VIEW ANY DEFINITION`, and reports `sqlserver.procedure.tempdb.spilled_pages` only on SQL Server 2017 CU3 or later. - `receiver/tls_check`: Add a "scrape_all_certs" option to TLS Check Receiver to record metrics for all certificates found on an endpoint or in a file, and a "tlscheck.x509.fingerprint" metric attribute to identify each certificate. (#48520) This can be useful for monitoring intermediate certificates on an endpoint, or monitoring several CA certificates in a PEM bundle file. ### 🧰 Bug fixes 🧰 - `all`: Do not panic on AIX (#50764) These components do not work on AIX. However, they panic if incorporated in a distribution running on AIX, even if not used. The fix is to return an error instead of a panic when trying to run on this OS. The components affected are: - connector/datadogconnector - exporter/datadogexporter - exporter/pulsarexporter - extension/datadogextension - extension/tailstorage/pebbletailstorageextension - receiver/pulsarreceiver - `cmd/opampsupervisor`: Fix the Supervisor potentially leaving the Collector process running when stopping it (#49999) - `exporter/datadog`: Map `k8s.node.name` attribute names into `kube_node` (#50708) - `exporter/datadog`: Trim whitespace from the Datadog exporter hostname. (#50935) - `exporter/load_balancing`: Remove stale Kubernetes endpoints when a relist recovers a missed watch deletion. (#50741) - `exporter/load_balancing`: Skip endpoints whose `EndpointSlice` `conditions.ready` is explicitly `false` in the kubernetes resolver, so traffic is not routed to them. (#50436) The Kubernetes resolver now excludes `EndpointSlice` endpoints whose `conditions.ready` field is `false`. To preserve the previous behaviour and keep not-ready endpoints in the routing ring, set `publishNotReadyAddresses: true` on the Service. - `internal/k8sconfig`: Prevent in-cluster k8s API clients from using environment proxy settings (#50937) - `pkg/batchperresourceattr`: keep Metadata from context in injectAttrMetadata (#50315) Headers set via headers_setter on downstream exporters (e.g. splunkhecexporter) were being silently dropped whenever a batched resource had one of the injected attribute keys set. - `pkg/semconvtest`: Fix compatibility with Weaver v0.26 by binding the container listeners to all interfaces and waiting on the /health endpoint for readiness (#50674) - `pkg/stanza`: Fix strptime `%Z` matched as Zulu (UTC) in `setLocation` (#50225) Since v0.155.0 strptime layouts no longer converted to gotime before checking for a `Z` suffix. This results in `setLocation` to match `%Z` as Zulu (UTC) setting time.UTC instead of time.Local. Timestamps with non-IANA timezone abbreviations (like `PST`) then failed to parse. - `processor/gen_ai_normalizer`: Reconstruct text parts from OpenInference's indexed content array, and stop removing message attributes that were not folded into the reconstructed message (#50133) - `processor/geoip`: Fix a data race on the provider factory registry observed when geoip processor tests run in parallel. (#46853) - `receiver/datadog`: Set a datapoint's `StartTimestamp` from the interval declared in the payload (#50640) The window was derived from the previous datapoint's timestamp, so the first point of any stream carried no `StartTimestamp` and downstream consumers could not infer an interval for it. Series that declare no interval keep the previous behaviour. - `receiver/docker_stats`: Stop restarting the docker stats stream on every scrape for containers that have a healthcheck. (#50779) When stream_stats is enabled, a container with a healthcheck was looked up again on each scrape. That closed its open stats stream and opened a new one, and logged a warning each time. The stream is now left open if one is already running. - `receiver/nsxt`: Fix a panic when interface status retrieval fails for one interface during a scrape. (#50768) - `receiver/oracledb`: Format the `oracledb.plan.first_load` and `oracledb.plan.last_load` attributes on `db.server.top_query` events as ISO 8601 UTC timestamps, consistent with `oracledb.query.started` and `oracledb.session.started`, instead of Oracle's native non-standard format. (#50882) - `receiver/oracledb`: Qualify dictionary joins by `CON_ID` on CDB-root connections so procedure metadata is attributed to the correct container. (#50797) `DBA_*` views only expose the connected container while `V$` views report every container, and object ids are unique only within a container. From a CDB root, `db.server.top_query` and `db.server.query_sample` could therefore report a wrong or empty `oracledb.procedure_name` and blocked-object owner/name, and merge procedure execution counts across PDBs. These events now read `CDB_PROCEDURES`/`CDB_OBJECTS` matched on `CON_ID` when the grants for those views are present. The grants are probed once at startup; when they are missing the receiver warns and keeps using the `DBA_*` views, so no existing deployment needs new grants to keep working. Non-CDB and direct-PDB connections are unchanged. - `receiver/oracledb`: Format the `oracledb.plan.first_load` and `oracledb.plan.last_load` attributes on `db.server.top_query` events as ISO 8601 UTC timestamps when connected to a CDB root, matching the fix already applied to the non-CDB query path. (#50951) - `receiver/postgresql`: Fix `postgresql.table.size` to report total disk space used by a table, including its indexes and TOAST data (#50914) - `receiver/postgresql`: Disabling a per-table or per-index metric now also skips the query that fed it, instead of still running the query and discarding the result. When `postgresql.table.count` is the only enabled table metric, it is now satisfied with a cheap `COUNT(*)` instead of the full per-table query. (#49083) - `receiver/postgresql`: Guard top-query collection against pg_stat_statements entries whose database has been dropped (#45713) When a database is dropped while its statistics linger in pg_stat_statements, the top-query row surfaces with a nil db.namespace, which panicked on a string type assertion in collectTopQuery. The pg_database join is now an INNER JOIN so such rows are excluded at query time, and the scraper skips any row with a nil db.namespace as a defense-in-depth guard against re-triggering the panic. - `receiver/postgresql`: Collect query plans for top queries that use `EXTRACT(field FROM ...)` or a typed literal such as `interval '1 day'` or `timestamp with time zone '2024-01-01'` (#50670) The `EXTRACT` case requires PostgreSQL 14 or later. - `receiver/prometheus`: Only convert exemplar `trace_id` and `span_id` labels that are valid IDs, and keep the rest as filtered attributes (#50598) A `trace_id` or `span_id` label with an invalid length was previously zero padded or truncated before being stored in the exemplar. This could create an ID that the sender never wrote, while the original value was lost. The receiver now converts only valid IDs with the expected OpenTelemetry width and preserves an invalid value unchanged as a filtered attribute. - `receiver/receiver_creator`: Log configuration annotations are no longer applied to subsequently discovered pods (#50818) - `receiver/vcenter`: Skip vSAN entities that report an empty `SampleInfo` instead of failing the entire scrape cycle. (#47917) The vSAN performance API returns an empty `SampleInfo` when an entity has no recent performance data (for example a freshly provisioned cluster, or while the vSAN performance service is temporarily unavailable). Previously this produced a timestamp parse error that aborted collection of all vcenter metrics for that scrape cycle. ## v0.160.0 ### 🛑 Breaking changes 🛑 - `all`: Increase minimum Go version to 1.26 (#50394) - `exporter/kafka`: Removes the deprecated auth.tls and auth.plain_text configurations. (#50202) - `exporter/signalfx`: Datapoints that fail validation are no longer dropped in the exporter. This may increase the ingest `sf.org.numDatapointsDroppedInvalid` org metric. No action required; (#50011) Previously, the SignalFx exporter dropped datapoints with an invalid metric name, dimension name, dimension value, or number of dimensions before sending them to the backend. The backend already enforces the same constraints and drops offending datapoints at ingest, so this exporter-side enforcement was redundant. With this change, the exporter no longer drops these datapoints itself and only logs a debug message; the backend will now drop them. As a result, these datapoints now count toward [sf.org.numDatapointsDroppedInvalid](https://help.splunk.com/en/splunk-observability-cloud/monitor-infrastructure/metrics-pipeline-management/related-org-metrics-for-metrics-pipeline-management). - `pkg/kafka/configkafka`: Remove all previously deprecated Kafka client configuration options. (#50381) The following deprecated options are no longer accepted: - `resolve_canonical_bootstrap_servers_only` (no-op since franz-go migration) - `auth.sasl.version` (no-op since franz-go migration) - `group_rebalance_strategy` (use `group_rebalance_strategies` instead) - `processor/adaptive_tail_sampling`: Restructure sampler configuration around intent-based types with an optional algorithm field, and standardise trace/span terminology (#49311) Sampler types are renamed to state intent: `deterministic` is now `probabilistic` (matching the probabilistic_sampler processor; same hash-consistent fixed fraction), `ema_dynamic` is now `adaptive_percentage`, and `ema_throughput` / `windowed_throughput` merge into `adaptive_throughput` with an optional `algorithm` field (`ema`, the default, or `windowed`). Goal fields are renamed to match: `goal_sampling_percentage` is now `goal_percentage` and `goal_throughput_per_sec` is now `goal_throughput` (still spans per second). Docs now state the volume model explicitly: decisions are per trace, volume is measured in spans. Refinery migration mapping is included in the README. - `processor/adaptive_tail_sampling`: Require fingerprint_attributes entries to be scoped attribute selectors (#49311) Entries now have the form `.attributes[""]` where scope is one of resource, scope, span, root, or any. The resource/scope/span prefixes match OTTL's span-context path names; root reads from spans matching the configured root_span_condition and any searches resource, scope, and span attributes. Bare attribute names are rejected at validation with an error suggesting the scoped form. Migrating a bare name: use the scope the attribute actually lives at (e.g. resource.attributes["service.name"]), or any.attributes[""] to keep search-everywhere behaviour (which now also includes instrumentation-scope attributes). - `processor/adaptive_tail_sampling`: Rename the `dynamic_sampling` processor to `adaptive_tail_sampling`. There is no alias, the old name stops working. (#50367) The rename covers every surface that carried the old name: the config id (`dynamic_sampling` -> `adaptive_tail_sampling`), the sampler types (`dynamic_percentage` -> `adaptive_percentage`, `dynamic_throughput` -> `adaptive_throughput`), the metric prefix (`otelcol_processor_dynamic_sampling_*` -> `otelcol_processor_adaptive_tail_sampling_*`), the span attribute namespace (`otelcol.processor.dynamic_sampling.*` -> `otelcol.processor.adaptive_tail_sampling.*`), and the Go module path (`processor/dynamicsamplingprocessor` -> `processor/adaptivetailsamplingprocessor`). - `processor/adaptive_tail_sampling`: Rename the sampler `key_attributes` field to `fingerprint_attributes` (#49311) The fingerprint names the attributes that identify what kind of trace this is for sampling purposes. Semantics are unchanged: values are collected from resource attributes and from every span of the accumulated trace. The README documents the collection model and separators, and adds guidance on choosing fingerprint attributes that classify traffic rather than identify individual requests. - `processor/k8s_attributes`: Promote `processor.k8sattributes.telemetry.*` feature gates from alpha to beta (enabled by default). (#45871) The following feature gates are now enabled by default: - `processor.k8sattributes.telemetry.enableNewFormatMetrics`: enables new-format internal telemetry metrics. - `processor.k8sattributes.telemetry.disableOldFormatMetrics`: disables old-format internal telemetry metrics. Users relying on the old-format metrics should migrate to the new format before upgrading. - `processor/k8s_attributes`: Remove the deprecated `deployment_name_from_replicaset` option. (#45871) The `deployment_name_from_replicaset` key must be removed from all configs entirely. Because confmap rejects unknown keys, any config that still contains this setting — whether set to `true` or `false` — will cause a hard startup failure. Deployment names are always derived from the ReplicaSet name heuristic; the ReplicaSet informer still runs when `k8s.deployment.uid` is enabled or deployment/replicaset labels/annotations are extracted. Users that had this setting as `false` can get the same informer-based behaviour by following the respective documentation [section](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/k8sattributesprocessor/README.md#configuring-recommended-resource-attributes). - `receiver/systemd`: Add metrics for services' memory current and peak memory usage. (#50035) ### 🚩 Deprecations 🚩 - `exporter/awsemf`: Deprecate legacy `enabled` and `exclude_service_attributes` fields in `resource_to_telemetry_conversion` in favor of `included` and `excluded` patterns. (#48861) Introduces the `exporter.awsemf.DisableLegacyResourceToTelemetryConversion` feature gate to disable the legacy fields. When migrating from `enabled: true`, set `included: ["*"]`. - `exporter/prometheus`: Deprecate `resource_to_telemetry_conversion` in favor of `resource_constant_labels` and add feature gate `exporter.prometheus.DisableResourceToTelemetryConversion`. (#48861) - `exporter/prometheus_remote_write`: Deprecate `resource_to_telemetry_conversion` in favor of `resource_constant_labels` and add feature gate `exporter.prometheusremotewrite.DisableResourceToTelemetryConversion`. (#48862) - `receiver/icmp_check`: Rename `icmpcheckreceiver` receiver to `icmp_check` with deprecated alias `icmpcheckreceiver` (#45339) - `receiver/windows_perf_counters`: Rename the 'windowsperfcounters' receiver to 'windows_perf_counters'. The old 'windowsperfcounters' type remains available as a deprecated alias. (#45339) ### 🚀 New components 🚀 - `processor/signing`: Add `signingprocessor`, a new processor that computes a RFC 8785 (JCS) canonical hash and signs each log record, storing the base64-encoded signature as `audit.integrity.value` and setting `audit.integrity.algorithm` and `audit.integrity.certificate` as resource attributes. Supports RS256, RS512, ES256, EdDSA, and HMAC-SHA256. Designed for use with the OpenTelemetry Audit Logging signal to provide tamper-evident audit trails. (#50079, #50080) Key material can be loaded from a file, environment variables, a Kubernetes Secret, or an OpenBao (Vault-compatible) secret engine. ### 💡 Enhancements 💡 - `cmd/opampsupervisor`: Add support for `telemetry.resource.detection/development` in OpAMP Supervisor telemetry. (#45116) This follows the OpenTelemetry configuration schema by treating `telemetry.resource.detection/development.detectors` as detector selection. Currently supported detector entries are `container`, `host`, `process`, and `service`. See the OpenTelemetry Configuration Go support table and search for `ExperimentalResourceDetector` for current detector support: https://github.com/open-telemetry/opentelemetry-configuration/blob/main/language-support-status.md#go Example: telemetry: resource: attributes: - name: foo value: bar detection/development: detectors: - host: {} - `exporter/awss3`: Honor the S3 client's request checksum calculation setting (including the `AWS_REQUEST_CHECKSUM_CALCULATION` environment variable) when uploading objects. (#50184) The transfer manager previously always defaulted to calculating a CRC32 checksum, which is sent as an aws-chunked trailer that some S3-compatible backends reject. It now inherits the setting from the configured S3 client. - `exporter/kafka`: Allow sending more than one signal to the same Kafka topic with `signal_header`. (#50244) Set `signal_header: true` and point each signal's `topic` at the same name. You can enable the setting while topics stay separate. Existing receivers ignore the extra header, so current per-signal topics keep working. Do not write mixed signals to a receiver that does not have `signal_header` enabled. While this option is on, `otelcol.signal` cannot be set in `record_headers` or `include_metadata_keys`. - `exporter/load_balancing`: Avoid quadratic re-hashing when assembling per-endpoint metric batches, most visible with the streamID routing key on high-cardinality workloads. (#49725) Merging N routed batches into an endpoint's payload re-computed the identity hash of every already-merged ResourceMetrics/ScopeMetrics/Metric on each merge, making a ConsumeMetrics call O(N^2) in the number of routed batches. The identities of the accumulated payload are now cached while merging, which makes the assembly O(N). With 1000 resources (2 metrics x 2 datapoints each) routed by streamID across 5 endpoints, ConsumeMetrics goes from ~50ms to ~12ms; in production CPU profiles of a streamID-keyed load balancer, this re-hashing accounted for the majority of total CPU time. - `exporter/opensearch`: Add support for exporting metrics to OpenSearch in the `ss4o` and `otel-v1` mapping modes. (#30556, #48587) Each metric data point is exported as one document. All OpenTelemetry metric types are supported (gauge, sum, histogram, exponential histogram and summary). Documents follow the Simple Schema for Observability metrics schema (`ss4o` mode, default index `ss4o_metrics-{dataset}-{namespace}`) or the Data Prepper OTel v1 metrics schema (`otel-v1` mode, default index `otel-v1-metrics`). The new `metrics_index`, `metrics_index_fallback` and `metrics_index_time_format` options control dynamic index naming, mirroring the existing logs and traces options. - `exporter/prometheus`: Add `resource_constant_labels` option to transform OTLP resource attributes into Prometheus constant labels. (#48861) Supports specifying wildcard patterns via `included` and `excluded` lists to selectively transform resource attributes into labels in compliance with the OTel Prometheus specification. - `exporter/prometheus_remote_write`: Send the start timestamp of cumulative sums, histograms and summaries as `start_timestamp` when using the Remote Write 2.0 protobuf message. (#50089) - `exporter/prometheus_remote_write`: Add `resource_constant_labels` option to transform OTLP resource attributes into Prometheus constant labels. (#48862) Supports specifying wildcard patterns via `included` and `excluded` lists to selectively transform resource attributes into labels in compliance with the OTel Prometheus specification. - `extension/aws_logs_encoding`: Promote `extension.encoding.awslogsencoding.EmitV1RPCConventions` feature gate to beta. (#47549) The CloudTrail log unmarshaler now emits rpc.system.name (semconv v1.40.0) by default, alongside the deprecated rpc.system and rpc.service (semconv v1.38.0) attributes. The v1.38.0 attributes continue to be emitted while extension.encoding.awslogsencoding.DontEmitV0RPCConventions remains in alpha. - `extension/aws_logs_encoding`: Emit a fully-qualified `rpc.method` for CloudTrail logs when the `extension.encoding.awslogsencoding.EmitV1RPCConventions` feature gate is enabled. (#47549) Per the semconv v1.40.0 deprecation of rpc.service, the CloudTrail eventSource is folded into rpc.method as a fully-qualified name (e.g. ec2.amazonaws.com/StartInstances) instead of being dropped. This keeps the AWS service queryable via rpc.method once rpc.service is no longer emitted (extension.encoding.awslogsencoding.DontEmitV0RPCConventions). - `extension/bearertokenauth`: Add `retry_on_failure` and `wait_for_token_file` config to retry reading the token file during startup when it is not yet available. (#50122) Useful when the token file (e.g. a Kubernetes-mounted secret) is provisioned shortly after the collector starts. Configure `enabled`, `max_retries`, and `interval` under `retry_on_failure`. Set `wait_for_token_file` to block startup until the token file is read instead of retrying in the background. - `extension/opamp`: Avoid sending duplicate health status updates to the OpAMP server (#50197) - `pkg/fileconsumer`: Add opt-in `skip_unmodified_files` config option that skips opening and fingerprinting a file when its path and mtime match a previously tracked reader. (#47861) When `skip_unmodified_files` is set to `true`, the matcher stats each candidate path up front and consults the existing reader state (previousPollFiles and the `knownFiles` generation window) for a match on path+mtime. On match the tracked metadata is promoted into the current generation and the file is skipped entirely for this poll: no open, no fingerprint, no read. This avoids wasted IO on files that haven't been modified since the last poll. The option defaults to `false`, preserving the existing fingerprint-based behavior. The retention of the new `LastObservedPath` / `LastObservedMtime` fields follows the same lifecycle as the reader itself, so the skip coherence cannot outlive the reader metadata it relies on. - `pkg/ottl`: Improve syntax error messages to report the position and nearby source, and give odd-length byte literals a clearer error. (#50526) - `pkg/ottl`: Adds the clear function to OTTL. (#48714) - `pkg/resourcetotelemetry`: Add `Included` and `Excluded` pattern matching to `Settings`. (#48861, #48862) Supports wildcard patterns via `included` and `excluded` lists to selectively convert resource attributes to telemetry attributes, and deprecates `Enabled` and `ExcludeServiceAttributes`. - `processor/adaptive_tail_sampling`: Add `record_fingerprint` to stamp the matched rule's fingerprint on kept spans, raw or hashed (#49311) Off by default. `value` records the raw fingerprint, `hash` records the first 8 bytes of its SHA-256 as 16 hex characters (deterministic across instances, so grouping works fleet-wide). Recorded on every span of a kept trace, including late-arriving spans via the decision cache, under otelcol.processor.adaptive_tail_sampling.fingerprint. - `processor/adaptive_tail_sampling`: Add `span_limit` (default 10000) to bound per-trace buffering. A trace reaching the limit is decided immediately over the spans buffered so far, and later spans are stamped from the decision cache instead of being buffered. (#49311) `num_traces` and eviction bound how many traces are buffered, not how large any one of them grows, so a single giant trace could previously exhaust memory. Set `span_limit: 0` to disable the cap. Also adds decision observability: a new `trace_span_count` histogram records buffered span counts per trace at decision time (for sizing `span_limit`), every kept span now carries an `otelcol.processor.adaptive_tail_sampling.trigger` attribute recording which event triggered the decision, and limit-triggered decisions are counted on the decision-triggers metric under `trigger="span_limit"`. - `processor/adaptive_tail_sampling`: Add `initial_sampling_percentage` (default 10) to `adaptive_throughput`, making the cold-start sampling rate visible and configurable instead of a hidden library default. (#50538) A throughput goal cannot be converted to a sample rate before any volume has been observed, so the pre-warmup rate is an explicit bootstrap. The default matches the previous behavior of the `ema` algorithm (keep 10%). `adaptive_percentage` is unchanged: it already samples at the goal rate during cold start. - `processor/adaptive_tail_sampling`: Add a fingerprint_duration histogram recording per-decision fingerprint extraction time by rule (#49311) - `processor/k8s_attributes`: Add support for extracting labels and annotations from CronJobs. (#50386) - `processor/k8s_attributes`: Add support for extracting labels and annotations from ReplicaSets. (#50386) - `processor/resource_detection`: Add Azure App Service resource detector (#49616) - `processor/span_pruning`: Add random exemplar sampling. When enabled, ceil(precision_multiplier * sqrt(N)) spans are sampled from the top-level group of each aggregation tree and kept as whole subtrees (siblings of the summary span) with their CPS sampling threshold updated so cross-trace consumers can extrapolate via adjusted counts. (#49167) - `processor/tail_sampling`: Add Trace State support for `rate_limiting` and `bytes_limiting` policies. (#49710) - `processor/transform`: Add `shared_cache` option to statement lists (#50563) This allows sharing caches between multiple sets of statements, which provides the ability to do coordinated operations across multiple passes over a set of data. - `receiver/aws_cloudwatch`: add cloud.account.id to resource attributes (#45038) - `receiver/azure_functions`: Add Event Hub metrics support to the `azure_functions` receiver with per-binding encodings under `triggers.event_hub.metrics`. (#43507) - `receiver/docker_stats`: Add new metric `container.state.status` that reports number of containers in a given status. Disabled by default (#44428) - `receiver/docker_stats`: Add a new metric `container.state.health.status` that reports container health status with attribute `container.state.health.state` which can have values 'starting', 'healthy', or 'unhealthy'. Disabled by default. (#50063) - `receiver/elasticsearch`: Add `cluster_stats_master_only` and `index_stats_master_only` config options to optionally restrict cluster stats and index stats collection to the cluster's elected master node. (#49937) This is useful when running one receiver instance per node against the same cluster, to avoid every instance issuing the same cluster-wide calls on every collection interval. Both options default to `false`, preserving existing behavior. - `receiver/elasticsearch`: Add an opt-in `elasticsearch.cluster.uuid` resource attribute that uniquely identifies the cluster. (#50263) The attribute is disabled by default to preserve backward compatibility. Unlike `elasticsearch.cluster.name`, the cluster UUID is stable across restarts and unique across clusters, so it can be enabled to disambiguate clusters that share a name. - `receiver/host_metrics`: Add feature gates to opt into Process Semantic Conventions RC in the Process scraper (#49708) Two feature gates control the migration during the transition period: - `scraper.process.EmitV1SystemConventions` (disabled by default): when enabled, emits the metrics and attributes aligned with the latest semantic conventions. - `scraper.process.DontEmitV0SystemConventions` (disabled by default): when enabled, stops emitting the legacy metrics and attributes. Affected metrics include `process.cpu.time`, `process.cpu.utilization`, `process.disk.io`, `process.context_switches`, `process.paging.faults`, `process.threads`, `process.open_file_descriptors`, and `process.handles`. - `receiver/host_metrics`: Create receiver level feature gates for enabling v1 Semantic Conventions (#50252) Adds receiver-level feature gates to the host metrics receiver that enable all scrapers to emit v1 semantic conventions. These supersede the per-scraper v1 semantic convention feature gates. - `receiver/kafka`: Add opt-in independent partition processing with bounded per-partition mailboxes. (#50030) Independent partition processing requires `autocommit.enable` to be true. - `receiver/mongodb`: Add WiredTiger log, fsync, and concurrent-transaction ticket metrics (#50208) Five opt-in metrics (disabled by default) read from serverStatus.wiredTiger: mongodb.wt.log.write, mongodb.wt.log.operation.count, mongodb.wt.log.sync.time, mongodb.wt.fsync.count, and mongodb.wt.concurrent_transactions.in_use. All emit only on the WiredTiger storage engine. - `receiver/mysql`: Add MyISAM key cache metrics to the mysqlreceiver. (#50247) - `receiver/mysql`: Add InnoDB row-lock wait count and wait time metrics. (#50172) - `receiver/oracledb`: Add opt-in Automatic Storage Management (ASM) diskgroup and disk metrics (`oracledb.asm.disk_group.*`, `oracledb.asm.disk.*`). (#50487) All 5 metrics are disabled by default. Sourced from `V$ASM_DISKGROUP_STAT` and `V$ASM_DISK_STAT`, queried from the regular RDBMS connection (no `+ASM` instance connection required). Both views return zero rows, not an error, on instances that don't use ASM. - `receiver/statsd`: Add the `receiver.statsd.monotonicCounterDefault` feature gate, which when enabled changes the default value of `is_monotonic_counter` to true. (#14956) Most statsd counters are monotonic, but the receiver previously defaulted `is_monotonic_counter` to false, producing non-monotonic delta sums that some exporters (e.g. the Prometheus exporter) convert to gauges. Enabling this alpha feature gate makes counters monotonic by default; explicitly setting `is_monotonic_counter` in the receiver config always takes precedence over the gate. - `receiver/vcenter`: Add host memory metrics vcenter.host.memory.granted, vcenter.host.memory.active, and vcenter.host.memory.ballooned, all disabled by default. (#48800) - `receiver/windows_perf_counters`: Allow Windows performance counter wildcard queries to include their aggregation instance (#29054) Existing `instances: "*"` configurations continue to omit `_Total`. Use `instances: ["*", "_Total"]` to retain it. For a custom aggregate such as `_Global_`, set `aggregation_name` and list that name beside the wildcard to retain it. ### 🧰 Bug fixes 🧰 - `cmd/opampsupervisor`: Fix the OpAMP supervisor so that the full effective config map (all named config files) is forwarded to the OpAMP server instead of only the empty-string ("") key (#49902) - `cmd/opampsupervisor`: Fix a data race in the commander when the agent process has to be killed after it ignores the graceful shutdown signal. (#49929) - `cmd/opampsupervisor`: Fix Supervisor startup failing with `could not get bootstrap info from the Collector` when another process is already using `localhost:8888` (#50608) The Collector started during bootstrap is only used to report its AgentDescription and is stopped immediately afterwards, but it applied the default internal telemetry configuration and bound a Prometheus reader on `localhost:8888`. When that port was already in use the Collector exited before connecting back to the Supervisor, and startup failed with `could not get bootstrap info from the Collector`. The bootstrap Collector's internal metrics are never collected, so they are now disabled for that invocation only. - `cmd/opampsupervisor`: Ignore non-positive HeartbeatIntervalSeconds from OpAMP connection settings and revert the heartbeat interval when reconnecting with new settings fails (#50268) Previously a ConnectionSettingsOffers message that left HeartbeatIntervalSeconds unset overwrote the supervisor's current interval with zero, which opamp-go rejects for HTTP transport and treats as "disable heartbeats" for WebSocket transport. On the HTTP path the subsequent reconnect failed, and because the old interval was not restored the fallback reconnect failed the same way, leaving the supervisor permanently disconnected. Non-positive intervals are now ignored and the previous interval is restored when reconnecting with new settings fails. - `cmd/opampsupervisor`: Fix config validation so effective config cannot mask invalid remote configs. (#50153) - `connector/service_graph`: Support span links for asynchronous messaging correlation in the service graph connector. (#48610) - `exporter/elasticsearch`: Fix `timeoutInterceptor` immediately cancelling all requests when `timeout=0` (#50469) Added a `perRequestTimeout <= 0` guard to skip the timeout wrapping when no timeout is configured. - `exporter/elasticsearch`: Sanitize `elasticsearch.index` attribute in dynamic router to prevent routing bypasses (#49219) - `exporter/elasticsearch`: Fix ignored `timeout` config regression (#50316, #50329, #50388) - `exporter/honeycomb_marker`: Add start_time to Honeycomb marker requests (#50544) Honeycomb marker requests now use the log timestamp for start_time, falling back to the observed timestamp when the log timestamp is unset. The field is omitted when neither timestamp is available. - `exporter/prometheus`: Preserve leading and consecutive underscores in metric and target_info label names when `PermissiveLabelSanitization` feature gate is enabled. (#50435) - `exporter/prometheus_remote_write`: Preserve UTF-8 characters in `external_labels` names when using `NoTranslation` or `NoUTF8EscapingWithSuffixes`. (#50435) - `extension/file_storage`: Fix nil pointer crash when bbolt database compaction fails during startup after database corruption (#49735) The file_storage extension now catches panics during on_start compaction and returns an error instead of crashing the collector. This allows the collector to continue operating with existing database recovery mechanisms. - `extension/oidc`: Reload `public_keys_file` on any change in its parent directory so projected-secret style key rotations take effect without a collector restart. (#0) The JWKS file watcher previously only triggered a reload when an fsnotify event's name exactly matched the configured `public_keys_file` path. Kubernetes-style projected-secret rotations swap a `..data` symlink target rather than rewriting the leaf file, so the leaf path never appears in any event and the verifier remained stale until the collector was restarted. As a result, tokens signed by a revoked or rotated key continued to be accepted across a rotation. The watcher now refreshes every provider whose `public_keys_file` resides in a watched directory whenever any relevant filesystem event occurs in that directory, so symlink-based rotations are picked up immediately. Reloading also no longer mutates the `oidc.Config` shared with the verifier it replaces, which was a data race against in-flight token verification. - `extension/opamp`: Avoid requiring host ID when building os.description so OpAMP can start on Windows containers. (#46965) getOSDescription now uses gopsutil PlatformInformation instead of host.Info, which fails on Windows containers when MachineGuid is unavailable. - `pkg/ottl`: The `IntLikeGetter` now returns an error when a string value cannot be parsed as an int (#50564) - `pkg/ottl`: Reject malformed list literals that are missing commas between elements or have a leading comma. (#50530) - `pkg/translator/prometheusremotewrite`: Fix target_info metric label name translation in PRW exporter to respect UTF-8 / NoTranslation settings. (#50435) - `processor/adaptive_tail_sampling`: Re-read the stopped flag before forwarding evicted and late traces so a concurrent shutdown is honoured (#49311) - `processor/adaptive_tail_sampling`: `adaptive_throughput` with `algorithm: windowed` kept 100% of traffic during cold start and for fingerprints it was not tracking (including `max_keys` overflow); it now samples them at `initial_sampling_percentage`. (#50538) The windowed sampler reports no rate for keys outside its computed window, and the processor previously treated that as keep-everything. The `ema` algorithms are unaffected; their `max_keys` overflow behavior still keeps overflow traffic and needs upstream library support to change, tracked in the same issue. - `processor/k8s_attributes`: Reject configurations with duplicate `pod_association` rules during validation. (#49269) Two associations that resolve to the same set of sources (ignoring source order) now cause a validation error. This enforces the uniqueness of `PodIdentifier`s that the cache relies on. - `receiver/cloudflare`: Apply `max_request_body_size` to the decompressed size of gzip-encoded request bodies (#49232) `max_request_body_size` was enforced with `http.MaxBytesReader`, which bounds the compressed bytes only. A small gzip-encoded request could therefore still expand without limit while being buffered in memory. The decompressed stream is now bounded by the same setting, and a request whose decompressed body exceeds it is rejected with 422 rather than read in full. - `receiver/oracledb`: Emit `oracledb.plan_hash_value` as the raw value returned by Oracle rather than hex-encoding the string, making it directly correlatable with `V$SQL.PLAN_HASH_VALUE`. (#50307) Previously, `oracledb.plan_hash_value` was emitted as a hex-encoding of the ASCII bytes of the string value (e.g. `4199919568` became `34313939393139353638`), making it impossible to correlate directly with `V$SQL.PLAN_HASH_VALUE` in Oracle. - `receiver/postgresql`: Honor `exclude_databases` in the top query and query sample collectors (#50046) Previously only the metrics path applied `exclude_databases`. Statements from excluded databases were still collected, and the top query collector connected to each one to run EXPLAIN -- which managed providers reject, for example `rdsadmin` on Amazon RDS, logging an error on every plan cache expiry. Both collectors now filter excluded databases server side and no longer connect to them to run EXPLAIN. - `receiver/prometheus_remote_write`: Only convert exemplar `trace_id` and `span_id` labels that are valid IDs, and keep the rest as filtered attributes (#50547) A `trace_id` or `span_id` label with an invalid length was previously zero padded or truncated before being stored in the exemplar. This could create an ID that the sender never wrote, while the original value was lost. The receiver now converts only valid IDs with the expected OpenTelemetry width and preserves an invalid value unchanged as a filtered attribute. - `receiver/prometheus_remote_write`: Stop native histogram bucket spans from driving unbounded memory and CPU use. (#50286) A remote write request could describe a gap of billions of histogram buckets in a few bytes, and the receiver reserved memory and iterated in proportion to that gap. Bucket spans are now validated before conversion, and a native histogram is dropped when its spans are invalid, when it would expand to more than 16384 buckets, or when a request has already used its budget of 4194304 buckets. - `receiver/prometheus_remote_write`: Drop the Prometheus overflow bucket when converting native histograms, instead of translating it. (#50292) The last bucket that maps to a finite OpenTelemetry bucket is 1024*2^schema. The bucket above it is the Prometheus overflow bucket, which covers values past the IEEE float range, and the Prometheus compatibility specification requires overflow buckets to be dropped and left out of the count. It was previously translated as an ordinary bucket. Buckets above the overflow bucket are not allowed at all, and a histogram containing one is now dropped. - `receiver/sqlserver`: Ensure `service.instance.id` uniquely identifies SQL Server named instances when using dynamic ports. (#50535) - `receiver/sqlserver`: Skip emitting query sample and top query events whose text is empty or a comment-only placeholder, except idle blocker query samples which are still emitted. (#50219) SQL Server returns a placeholder line comment (e.g. `--*UPDATE----`) in place of data-modifying OPENROWSET statements that carry inline credentials. The obfuscator strips line comments, leaving an empty query text, so these rows previously emitted empty query sample and top query events. Such rows are now skipped, with one exception: idle blocker query samples (command = IDLE_BLOCKER) are still emitted even when their query text is empty, so the blocking-session information they carry is preserved. - `receiver/vcenter`: Emit VM CPU metrics for idle VMs instead of dropping them (#49643) A CPU usage of 0 MHz was treated as the VM being unavailable, so `vcenter.vm.cpu.usage`, `vcenter.vm.cpu.utilization` and `vcenter.vm.cpu.readiness` were silently dropped for every powered on but idle VM. 0 MHz is a valid reading for an idle VM, so availability is now determined by the VM power state instead. - `receiver/vcenter`: added logic so that if a query fails due to a bad object it does not fail the entire scrape (#46977) ## v0.159.0 ### 🛑 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 Container Apps resource detector (#48239) - `processor/resource_detection`: Add the `processor.resourcedetection.consul.prefixMetaAttributes` feature gate, which emits Consul node metadata as `consul.meta.` resource attributes. (#49988) The gate is alpha and disabled by default, so Consul meta attribute names are unchanged unless the gate is enabled. This namespaces Consul meta consistently with the other detectors that expose user-defined key/value data, such as `ec2.tag.` and `openstack.nova.meta.`. - `processor/tail_sampling`: Add `num_shards` config option to run N parallel event loops, sharding traces by trace ID to reduce contention under high load. (#48699) The single event loop can become a bottleneck under high throughput because trace ingestion starves sampling decision evaluation. Setting `num_shards` to a value greater than 1 distributes traces across independent goroutines, each with its own storage and decision batcher. The default value of 1 preserves the original single-loop behavior. To keep aggregate behavior consistent with the configured values, `num_traces`, `expected_new_traces_per_sec`, `decision_cache` sizes, and per-second rate limits in policies (`rate_limiting`, `bytes_limiting`, and composite `max_total_spans_per_second`) are divided evenly across shards. Limiter `burst_capacity` is not divided so that single large traces remain admissible regardless of the shard count. The `sampling_traces_on_memory` metric reports the total across all shards. - `processor/transform`: Add support for semconv `1.41.0`, `1.42.0` and `1.43.0` in the `set_semconv_span_name()` function. (#50198) - `receiver/apache`: Change the `apache.worker.limit` metric type from a gauge to a non-monotonic cumulative sum (UpDownCounter) (#47061) An UpDownCounter better represents the configured worker slots, which can go up or down over time. - `receiver/apache`: Add an opt-in migration to new, more consistent metric and attribute names behind feature gates (#47327) The original metric and attribute names remain the default. Enable `receiver.apache.enableNewFormatMetrics` to also emit the new names, and additionally enable `receiver.apache.disableOldFormatMetrics` to emit only the new names. See the receiver's README for the migration guide and full mapping. Renamed metrics: - `apache.current_connections` -> `apache.connection.active` - `apache.connections.async` -> `apache.connection.status` - `apache.requests` -> `apache.request.count` - `apache.scoreboard` -> `apache.worker.status` - `apache.workers` -> replaced by `apache.worker.active` and `apache.worker.idle` Renamed attributes: - `connection_state` -> `apache.connection.state` - `state` (on the scoreboard metric) -> `apache.worker.state` - `level` (on `apache.cpu.time`) -> `apache.process.level` - `mode` (on `apache.cpu.time`) -> `cpu.mode` - `receiver/apache`: Add `apache.request.rate`, `apache.traffic.rate` (disabled by default), and `apache.worker.limit` metrics (#47061) - `receiver/aws_lambda`: Add the `aws.log.subscription_filter.names` resource attribute to CloudWatch Logs decoded by the built-in decoder (#49923) The subscription filter name is the CloudWatch-managed link between a log group and the destination function, so it can carry per-source identity when multiple log groups fan into a single Lambda. The attribute is only added when the event contains subscription filters. - `receiver/dns_check`: Add complete scraping implementation for the DNS Check Receiver, including metrics and resource attributes. (#49561) Replaces skeleton implementation with full production-ready collector functionality. Includes metrics metadata and completed configuration. Includes real scraper implementation that performs DNS checks and emits metrics and resource attributes. Includes README docs. - `receiver/googlecloudpubsubpush`: Promote logs support to alpha stability (#50112) - `receiver/kubelet_stats`: Add optional k8s node filesystem inode count/free metrics. (#48926) Adds the following optional metrics to kubeletstatsreceiver: - k8s.node.filesystem.inode.count - k8s.node.filesystem.inode.free - `receiver/mysql`: Add replica thread running and open temporary table metrics to the mysqlreceiver. (#50132) - `receiver/mysql`: Add mysql.file.open, mysql.table.open, and mysql.thread.slow_launch metrics, disabled by default. (#49867) - `receiver/mysql`: Add `alter_table`, `create_index`, `create_table`, and `optimize` command types to the `mysql.commands` metric. (#49863) - `receiver/mysql`: Add InnoDB data I/O and pending operation metrics. (#50138) - `receiver/oracledb`: Use the go-sqllexer `ObfuscateAndNormalize` engine to obfuscate SQL in the top query and query sample collectors, and upgrade `github.com/DataDog/datadog-agent/pkg/obfuscate` to v0.82.0 (#50231) The obfuscated `db.query.text` is now normalized (whitespace collapsed, comments stripped, punctuation spaced, trailing semicolon removed), which yields stable query signatures across semantically identical statements that previously differed only in formatting. Leading SQL comments are no longer rendered as a leading `?`; the previous two-pass comment-anonymization behavior has been removed. Comment tags are still extracted from the raw SQL and emitted via `db.query.comment_tags`. Identifier quotation is preserved (`KeepIdentifierQuotation`) so a quoted identifier such as `"a b"` does not collide with the unquoted `a b`. This is a one-time change to the obfuscated output format and may alter any downstream identifiers derived from `db.query.text`. The obfuscate library upgrade to v0.82.0 (with `github.com/DataDog/go-sqllexer` v0.2.4) also normalizes qualified identifiers consistently. - `receiver/oracledb`: Add tablespace health metrics (#48399) All 3 new metrics are opt-in (disabled by default) and support oracle.db.pdb on CDB-root and direct-PDB connections. Note: oracle.db.pdb is itself opt-in - if it is not also enabled on a CDB root with multiple PDBs, same-named tablespaces in different PDBs will be aggregated together rather than reported per PDB, matching the existing behavior of every other opt-in oracle.db.pdb metric in this receiver. - `receiver/oracledb`: Add wait event timeout count to the session wait sample event (#49934) - `receiver/splunk_enterprise`: added dimensions to kvstore metrics (#50189) - `receiver/sqlserver`: Use the go-sqllexer `ObfuscateAndNormalize` engine to obfuscate SQL in the top query and query sample collectors, and upgrade `github.com/DataDog/datadog-agent/pkg/obfuscate` to v0.82.0 (#50210) Comment-only statements (e.g. Blue Prism banners) no longer produce a "result is empty" error or repeated error logs; they now obfuscate to an empty string. Statements the legacy tokenizer could not parse are obfuscated instead of being dropped. The obfuscated `db.query.text` is now normalized (whitespace collapsed, comments and aliases removed), which changes the obfuscated output format; this is a one-time change and may alter any downstream identifiers derived from the obfuscated query text. The obfuscate library upgrade to v0.82.0 also normalizes qualified identifiers consistently (e.g. `schema.table` no longer renders with a spurious space after the dot), which contributes to the same one-time change in obfuscated output. The transitive `github.com/DataDog/go-sqllexer` dependency is pinned to v0.2.4, which fixes obfuscation of string literals containing a backslash (e.g. `REPLACE(@@SERVERNAME, '\', ':')`). - `receiver/sqlserver`: Share a single, tunable database connection pool across all scrapers of a metrics or logs receiver instead of opening one pool per query. (#47219) Previously each enabled query created its own *sql.DB connection pool to the same instance. All scrapers now share one pool per receiver instance — the metrics and logs receivers each own their own pool — that is owned by the receiver and closed on shutdown, reducing connection and memory overhead as more queries are enabled. The pool can be tuned via a new optional `connection_pool` config block (`max_open`, `max_idle`, `max_lifetime`, `max_idle_time`); by default `max_open` and `max_idle` are derived from the number of scrapers, replacing the sub-optimal Go driver defaults. Emitted telemetry is unchanged. ### 🧰 Bug fixes 🧰 - `exporter/awscloudwatchlogs`: Resolve the `{PodName}` placeholder in `log_group_name`/`log_stream_name` from the `k8s.pod.name` resource attribute as well as the legacy `pod` attribute. (#46202) The `k8sattributesprocessor` sets the semantic convention attribute `k8s.pod.name`, not the legacy `pod` attribute that `{PodName}` previously looked up. This left `{PodName}` resolving to `undefined` for standard EKS pipelines unless users added an extra processor to rename the attribute. - `exporter/datadog`: Fix log misrouting when a batch contains multiple ResourceLogs with different scopes, which previously routed the whole batch based on only the first ResourceLogs' scope, via the `github.com/DataDog/datadog-agent` dependency bump to v0.82.0. (#50069, #49322) - `exporter/datadog`: Fix a goroutine hang on shutdown and swallowed errors when consuming regular logs, via the `github.com/DataDog/datadog-agent` dependency bump to v0.82.0. (#50069) - `exporter/datadog`: Fix an unbounded loop in the histogram-to-sketch conversion that could drive the exporter to OOM when ingesting an OTel explicit-bucket histogram with a very large finite upper bound, via the `github.com/DataDog/datadog-agent` dependency bump to v0.82.0. (#50069) - `exporter/datadog`: Map the `Rate` metric intake type in legacy metric clients so delta-sum datapoints carrying `datadog.metric.as_type=rate` are no longer silently dropped. (#50119) `toDataType` previously mapped only `Count` and `Gauge`, so a `Rate` datatype fell through to `METRICINTAKETYPE_UNSPECIFIED` and the series was rejected by the intake. - `exporter/prometheus_remote_write`: Fix context.DeadlineExceeded being incorrectly treated as a permanent error, which caused metrics to be dropped instead of retried on timeout. (#49691) context.DeadlineExceeded indicates a transient timeout and should result in a retry. Only context.Canceled (explicit user/component shutdown) should be treated as permanent. - `exporter/prometheus_remote_write`: Flush buffered WAL entries when the exporter is idle so data is not stalled until the next write. (#49130) - `internal/aws`: Fix `eventBatch.exceedsLimit` rolling batches at the per-event truncation cap (256 KiB) instead of the 1 MiB per-request PutLogEvents limit. Batches now pack up to the actual service ceiling. (#48559) This is a pre-existing inefficiency unrelated to the new `max_event_payload_bytes` config field. `eventBatch.exceedsLimit` has compared cumulative batch bytes against `maxEventPayloadBytes` (256 KiB) rather than `maxRequestPayloadBytes` (1 MiB) since the original 2022 code. The result: batches have been rolling at ~25% of the PutLogEvents request limit. Workloads with average event size above ~25 KiB will see roughly 3-4x fewer PutLogEvents calls for the same data volume after this fix, with no config change required. The fix is also load-bearing for the new configurable per-event cap shipping in the same PR: without it, opted-in users with >256 KiB events would ship each event in its own PutLogEvents call rather than packing up to the 1 MiB service ceiling. The new threshold matches the service-documented batch-size accounting: `sum(message bytes UTF-8) + 26 * num_events`. That is exactly what `byteTotal` already sums (`eventPayloadBytes()` includes the 26-byte `perEventHeaderBytes`), so no envelope-overhead margin is needed. - `pkg/datadog`: Stop setting the removed Agent config key `enable_sketch_stream_payload_serialization`, which fixes a spurious `unknown key` ERROR logged at Agent startup. The key was a no-op, so this changes no behavior. (#50238) - `pkg/translator/prometheusremotewrite`: Preserve consecutive underscores in label names when the permissive label sanitization feature gate is enabled. (#48991) When the pkg.translator.prometheus.PermissiveLabelSanitization feature gate was enabled, label names with consecutive underscores (e.g. a__b) were still collapsed to a single underscore because the converter did not set PreserveMultipleUnderscores on the label namer. The gate now preserves them as intended. - `processor/coralogix`: Only start a new transaction for SERVER/CONSUMER spans when they cross into a different service from their parent, instead of unconditionally, so in-process phases (e.g. a queue-wait span) are no longer misclassified as separate transaction roots. (#50048) Previously any SERVER or CONSUMER span nested under an existing local transaction was always split off into its own transaction root, even when it came from the same service as its parent. Root detection now compares the span's resource `service.name` against its parent's, and only treats the SERVER/CONSUMER span as a new entry point when the service actually changes. - `processor/isolationforest`: Produce differentiated anomaly scores and honor the configured `contamination_rate`. (#46988) The online isolation forest trees never split, so every record received a near-identical anomaly score and nothing was ever flagged. Trees now grow once they accumulate enough samples. The adaptive threshold also ignored `contamination_rate` (the percentile was hardcoded to 0.9); it is now derived as `1 - contamination_rate`. A `contamination_rate` of exactly 0.0 or 1.0 is now rejected during configuration validation instead of being silently replaced with a default. - `processor/k8s_attributes`: Fix memory leak and incorrect deletion for custom association identifiers (labels, annotations) that go through active->stale->active transitions. (#48588) - `processor/metrics_transform`: combine action no longer silently drops data points when a single Summary metric matches the transform. The operation is now skipped with a warning log instead. (#49693) - `processor/tail_sampling`: Drop processor state when `TailStorage.Take` fails so failed fetches do not leave stranded traces or forward incomplete batches. (#49907) - `processor/tail_sampling`: In the composite policy, a sub-policy omitted from `rate_allocation` now receives its default equal share of the budget instead of a zero sampling rate that permanently blocked it from sampling. (#49828) - `receiver/datadog`: Set the `datadog.metric.as_type` datapoint attribute on series submitted with type `rate` (#50120) A Datadog `rate` series is translated to a delta Sum, which was previously indistinguishable from one produced by a `count` series, making the original type unrecoverable downstream. Datapoints from `rate` series now carry `datadog.metric.as_type: rate`, the attribute the Datadog exporter reads to map such a Sum back to a Datadog rate. Other metric types are unchanged. - `receiver/elasticsearch`: Record deleted document counts for the index-level `elasticsearch.index.documents` metric, matching existing node-level behavior. (#49996) - `receiver/icmpcheckreceiver`: Enable privileged ICMP mode on Windows so pings succeed without requiring elevated privileges. (#50215) - `receiver/postgresql`: Fix EXPLAIN failing on queries with a repeated placeholder or a `$N`-looking string literal, by counting real bind parameters from `pg_prepared_statements` instead of regex-matching `$N` in the query text. (#50054) - `receiver/postgresql`: Fix `postgresql.total_exec_time` and `postgresql.total_plan_time` docs on the `db.server.top_query` event to correctly state seconds instead of milliseconds. (#50113) pg_stat_statements reports these columns in milliseconds, and the receiver correctly converts to seconds before emitting them, per OTel semantic conventions (durations SHOULD use seconds). metadata.yaml incorrectly documented the emitted unit as milliseconds; this updates the docs to match the actual (and semconv-compliant) behavior. No emitted values change. - `receiver/prometheus`: Prevent the Prometheus receiver from dropping classic histograms without explicit bucket boundaries when `convert_classic_histograms_to_nhcb` is enabled and classic histograms are not retained. (#49893) - `receiver/snowflake`: Close sql.Rows in all Fetch* methods so the underlying driver connection is released back to the pool. (#49707) Previously, none of the 8 Fetch* methods in client.go called rows.Close() after iterating sql.Rows returned by readDB(). This leaked a database connection per query per scrape interval, eventually exhausting the connection pool. Also adds rows.Err() checks after each rows.Next() loop to surface iteration errors. - `receiver/sqlserver`: Fix query sample events silently omitting sessions blocked on schema locks. (#49983) - `receiver/sqlserver`: Fix the receiver dropping the entire query plan when obfuscating a single attribute fails (#50065) All Unicode format characters (Cf category, e.g. zero-width space U+200B) are stripped from SQL before obfuscation so queries containing them are not dropped. - `receiver/yang_grpc`: Fix walking the value tree and recording metrics (#50109) ## v0.158.0 ### 🛑 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 ``), stabilising the tree on high-cardinality values. Each masked position writes a dynamic attribute at `.` (default prefix `log.record.template.parameter`), matching the OTel semantic-convention pattern used by `http.request.header.` and `db.query.parameter.`. 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..`); 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..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, each OTLP explicit-bucket histogram is converted to a single NHCB series (schema -53) carrying the bounds as CustomValues, instead of the classic `_bucket`/`_sum`/`_count` fan-out. Setting `keep_classic_histograms: true` additionally emits the classic series so a migration can run both in parallel. Implemented for both the RW1 and RW2 write paths; reuses Prometheus' `util/convertnhcb` converter for wire-compatible encoding. - `exporter/prometheus_remote_write`: Add `include_metadata_keys` to `remote_write_queue` configuration to forward client metadata as HTTP headers. (#47317) - `pkg/jaeger`: Migrate http.status_code (v1.25.0) semantic convention to http.response.status_code (v1.40.0) (#45036) The migration is gated behind two alpha (disabled by default) feature gates: enable `pkg.translator.jaeger.EmitV1HttpConventions` to emit `http.response.status_code`, and additionally enable `pkg.translator.jaeger.DontEmitV0HttpConventions` to stop emitting the deprecated `http.status_code`. Both gates will graduate to beta (enabled by default) and eventually be removed, after which the translator will only emit `http.response.status_code`. That removal is a breaking change for anything still relying on `http.status_code`, so please migrate your dashboards, alerts and queries now. - `pkg/stanza`: Change `connection_idle_timeout` on the `tcp_input` operator to a duration field that defaults to no idle timeout, apply it independently of `max_connections`, and add a `tcp_input_refused_connections` metric. (#49610) - `pkg/stanza`: Add `max_connections` and `connection_idle_timeout` options to the `tcp_input` operator to limit the number of concurrent TCP connections. (#49610) - `processor/dynamic_sampling`: Evicted traces now receive a real sampling decision instead of being dropped silently, with a configurable `eviction` policy. (#49311) When `num_traces` is full the oldest pending trace is evicted and decided immediately. `eviction.policy: evaluate` (default) runs the normal rules on the spans seen so far; `eviction.policy: probabilistic` decides with a threshold derived from `eviction.sampling_percentage` in constant time, shedding load under pressure. Both modes record the decision for late spans and stamp kept traces with a correct `ot=th`. - `processor/dynamic_sampling`: Add configurable `root_span_condition` OTTL expression to control which spans trigger the trace decision. (#49311) Defaults to `IsRootSpan()`, preserving prior behaviour. Operators can override with any OTTL boolean expression evaluated in the `ottlspan` context (e.g. accepting a producer-supplied hint attribute or a cross-process server span). Evaluation errors are counted on `processor_dynamic_sampling_ottl_eval_errors` under the sentinel `rule="_root_span_condition"` label. - `processor/oracleclouddetector`: Add `cloud.resource_id` resource attribute to the Oracle Cloud detector, set to the compute instance OCID. (#49832) - `processor/resource_detection`: Add top-level `fail_on_missing_metadata` to make unreachable metadata services a hard failure (#46579) When `true`, network-based detectors return an error instead of silently returning an empty resource when their metadata service is unreachable. Supersedes the per-detector `fail_on_missing_metadata` fields, which are now deprecated. - `processor/resource_detection`: Add cloud.region to GKE resource detection by deriving it from cloud.availability_zone (#49694) - `processor/span_pruning`: Preserve whole outlier subtrees instead of individual spans and detect outliers at every aggregation level, so a slow interior span (e.g. one slow handler among many) keeps its entire subtree. (#49324) - `processor/span_pruning`: Add optional OTTL `conditions` filtering so span pruning only applies to traces with at least one matching span (empty conditions still prune all traces), and add the `otelcol_processor_spanpruning_traces_skipped` metric for traces skipped when no conditions match. (#49026) - `processor/transform`: Add `ParseELF` function to parse W3C Extended Log Format (ELF) log blocks into structured maps. (#48352) `ParseELF(target)` parses a complete ELF text block and returns a `pcommon.Map` with directive metadata (version, software, date, start_date, end_date, remark), a fields slice, and an entries slice keyed by field name. Multiple #Fields directives and double-quoted values (IIS-style) are supported. - `receiver/awsxray`: Migrates v1.20.0 (http.client_ip) semantic convention to v1.42.0 (client.address) (#45085) - `receiver/awsxray`: Migrated HTTP semantic conventions from v1.25.0 to v1.42.0 (#45084) - `receiver/kafka_metrics`: Add `kafka.cluster.id` resource attribute, auto-discovered from cluster metadata. Disabled by default; opt in via `resource_attributes`. (#48892) The attribute is disabled by default. When enabled, it complements the existing user-configured `kafka.cluster.alias` resource attribute. - `receiver/kubelet_stats`: Add the `receiver.kubeletstats.cpuUsageScrapeBased` feature gate. When enabled, `container.cpu.usage`, `k8s.pod.cpu.usage` and `k8s.node.cpu.usage` (and the cpu utilization metrics derived from them) are calculated as the rate of the corresponding `*.cpu.time` counter between consecutive scrapes, instead of being read directly from the kubelet's `UsageNanoCores` value. (#49477) - `receiver/memcached`: Add `tls` configuration to support connecting to memcached over TLS. (#49146) TLS is disabled by default (`insecure: true`), so existing plaintext configurations are unaffected. - `receiver/mongodb`: Add `db.server.top_query` slow query event collection to the MongoDB receiver. (#49623) Emits the top N slowest query executions per scrape window as `db.server.top_query` log events, including obfuscated query text, execution stats, and optional explain plans. Configurable via the new `top_query_collection` config block. The `logs` signal is at `development` stability; attribute names may change until OTel `db.server.top_query` conventions stabilize. - `receiver/mongodb`: Add `service.name` and `service.namespace` opt-in resource attributes and allow overriding any resource attribute via `override_value`. (#49812) When `service.name` is enabled, the receiver sets it to `unknown_service:mongodb` per OTel specification. When `service.namespace` is enabled, it defaults to an empty string until set via configuration. Each resource attribute now accepts an `override_value` under `resource_attributes`, letting users pin values such as `service.name`, `service.namespace`, or `service.instance.id` to uniquely identify database instances across environments. - `receiver/netflow`: Add interface, IP header, L2, ICMP, routing, and IPFIX observation attributes to parsed flow log records (#49946) Added the following attributes decoded by goflow2 but previously not included in log records: flow.in_if, flow.out_if, flow.ip_tos, flow.ip_ttl, flow.ip_flags, flow.fragment_id, flow.fragment_offset, flow.ipv6_flow_label, flow.icmp_type, flow.icmp_code, flow.src_mac, flow.dst_mac, flow.src_vlan, flow.dst_vlan, flow.vlan_id, flow.next_hop, flow.next_hop_as, flow.src_as, flow.dst_as, flow.bgp_next_hop, flow.src_net, flow.dst_net, flow.forwarding_status, flow.observation_domain_id, flow.observation_point_id. - `receiver/oracledb`: Add real-time workload rate metrics. (#49749) - `receiver/oracledb`: Speed up query-sample collection by splitting it into two queries so the SQL text/plan lookup no longer joins V$SESSION against the entire cursor cache. (#49874) The session query no longer joins V$SQL (which forced Oracle to scan the whole shared-pool cursor cache and materialize SQL_FULLTEXT for every cursor). Instead, the receiver collects the active sessions first, then fetches SQL_FULLTEXT / CHILD_ADDRESS / PLAN_HASH_VALUE from V$SQL for only those sql_ids via WHERE SQL_ID IN (...), and joins the results in the collector. Sessions whose cursor has aged out of the shared pool are skipped, preserving the previous inner-join semantics. Note: the two queries are issued at slightly different SCNs; for actively-executing cursors this is immaterial (they are pinned in the shared pool), but cursors that age out between Pass-1 and Pass-2 will not appear in the output, which matches the previous inner-join semantics. - `receiver/oracledb`: Add PDB auto-discovery and per-PDB metrics for Oracle multitenant (CDB) deployments via a single CDB root connection. (#48643) When connected to an Oracle CDB root (Oracle 12c+), the receiver automatically detects all PDBs and tags per-PDB metrics with the opt-in `oracle.db.pdb` data point attribute. The attribute is also populated for direct-PDB connections so the metric hierarchy is consistent regardless of how the collector connects. Non-CDB instances and Oracle <12c are unaffected (the attribute is left empty). - `receiver/oracledb`: Add real-time I/O rate metrics. (#49748) All metrics are disabled by default with development stability. - `receiver/postgresql`: Add the optional `postgresql.query.execution.time` metric. (#49822) - `receiver/postgresql`: Adopt `dbauth` config in postgresql receiver. (#49044) - `receiver/postgresql`: Add opt-in pgvector metrics. (#49576) Adds opt-in metrics for pgvector similarity-search and insert activity, all disabled by default. - `receiver/receiver_creator`: Add support for os detection in rules (#49975) ``` receiver_creator: watch_observers: [host_observer] receivers: windows_service: # Enable this receiver if the OS is Windows. rule: type == "hostport" && os == "windows" config: include_services: - MSSQLSERVER collection_interval: 10s ``` - `receiver/redis`: Add pub/sub metrics (redis.pubsub.channels, redis.pubsub.patterns, redis.pubsub.shard_channels, redis.pubsub.clients) scraped from Redis INFO stats fields. (#49147) - `receiver/sqlserver`: Add opt-in metrics for monitoring SQL Server Always On Availability Group database replicas. (#49633) - `sqlserver.availability_group.database_replica.secondary_lag` - `sqlserver.availability_group.database_replica.queue.size` - `sqlserver.availability_group.database_replica.queue.rate` - `receiver/sqlserver`: Add opt-in metrics for monitoring host-level CPU, memory, and disk I/O as observed by SQL Server. (#49862) - `sqlserver.cpu.utilization` - `sqlserver.host.memory.limit` - `sqlserver.host.memory.usage` - `sqlserver.disk.io` - `sqlserver.disk.operations` - `receiver/sqlserver`: Support server properties query on Azure SQL Managed Instance (#49444) - `receiver/udp_log`: Add the `stanza.udp.useStableNetworkAttributes` feature gate to emit stable network semantic convention attributes when `add_attributes` is enabled. (#49050) When the `stanza.udp.useStableNetworkAttributes` feature gate is enabled, the `add_attributes` option emits the stable network attributes (`network.transport`, `network.local.address`, `server.port`, `server.address`, `network.peer.address`, `client.port`, `client.address`) instead of the deprecated ones (`net.transport`, `net.host.ip`, `net.host.port`, `net.host.name`, `net.peer.ip`, `net.peer.port`, `net.peer.name`). ### 🧰 Bug fixes 🧰 - `exporter/elasticsearch`: Fix Elasticsearch retry attempts incorrectly sharing a single `timeout` deadline (#45747) The configured timeout now applies independently to each HTTP request attempt. - `exporter/load_balancing`: Fix a memory leak in the Kubernetes resolver where pod hostnames were retained indefinitely after pods churned when `return_hostnames` is enabled. (#49757) During a rolling update a pod frequently appears in an EndpointSlice a moment before its Hostname field is populated. With `return_hostnames: true`, the resolver previously discarded the entire update whenever any endpoint in the slice lacked a hostname, so pods that churned out in that same event were never removed from the endpoint store. Over many pod rolls the store, the hash ring, and the per-endpoint exporter map grew without bound. Endpoints missing a hostname are now skipped individually while the rest of the slice is still processed, so churned-out pods are removed promptly. - `extension/text_encoding`: Fix a bug in the text encoding extension where logs were silently truncated if the input had more than 1000 records. (#49818) - `pkg/datadog`: Fix `agentcomponents.WithAPIConfig` silently discarding its configured `api_key`/`site` in favor of `DD_API_KEY`/`DD_SITE` environment variables when they are present in the process environment. (#49957) - `pkg/stanza`: Discard partial log lines instead of emitting them as truncated entries when the TCP input is shut down mid-transmission. (#49622) On graceful shutdown the operator force-closes in-flight connections. Previously any partial (non-delimited) data left in the receive buffer was flushed as a complete log entry, producing truncated records. It is now discarded, while a final line without a trailing delimiter is still emitted when the client closes the connection cleanly. - `pkg/winperfcounters`: Fix batch scrape failures caused by transient PDH errors during wildcard queries. (#49416) Skips performance counter instances that return PDH_INVALID_DATA, PDH_NO_DATA, or PDH_CALC_NEGATIVE_DENOMINATOR instead of failing the entire metric batch. This prevents errors when monitoring ephemeral processes. - `processor/redaction`: Apply `blocked_values` patterns in the order they are listed in the configuration instead of a nondeterministic order (#49858) Previously the patterns were applied in Go map iteration order. When two patterns could match overlapping parts of the same value, the result changed from run to run, and some orders left data unmasked that another order would have redacted. - `receiver/azure_monitor`: Fix metric data loss and incorrect timestamps (#49532) - `receiver/datadog`: Add support for the v3 series intake (`/api/intake/metrics/v3/series`), the default metrics endpoint for Datadog Agent 7.81.0+ (#49698) Datadog Agent 7.81.0 and 7.81.1 submit series metrics to `/api/intake/metrics/v3/series` by default. The receiver had no handler for that path, so series from those agents fell through to the catch-all route and were acknowledged with 200 OK but silently discarded. The v3 payload is a columnar, dictionary-encoded protobuf format distinct from v2; it is now decoded and translated to OTLP through the same path as v2 series. The v3beta route used by shadow/validation traffic is also handled. - `receiver/elasticsearch`: Report `elasticsearch.cluster.state_queue` with `state: pending` using the pending count instead of the committed count (#49652) The data point for the `pending` state was recorded from the committed queue count, so it always mirrored the `committed` data point. It now uses the pending count from the node discovery stats. - `receiver/fluent_forward`: Delay Fluent Forward chunk acknowledgments until logs are successfully consumed downstream. (#46973) - `receiver/googlecloudmonitoring`: CUMULATIVE metrics from Cloud Monitoring will now be properly marked as monotonic upon conversion (#49804) - `receiver/postgresql`: Fixes a bug in `explainQuery` so that it honors context cancellation (#49632) The DEALLOCATE PREPARE cleanup now runs on a detached, time-bounded context so prepared statements are still released from pooled connections even when the scrape context is canceled. - `receiver/sqlserver`: Populate `service.instance.id` in Windows Performance Counter mode. (#49878) Previously, `service.instance.id` was only set by the direct connection scraper and was absent from all metrics emitted in Windows Performance Counter mode, despite being `enabled: true` in the default config. The Windows PC scraper now computes `service.instance.id` at initialization using the same logic as the direct connection scraper: `:1433` when `computer_name` is configured (remote monitoring), or `:1433` when monitoring the local machine. Port 1433 is used as a default since Windows Performance Counter mode does not establish a TCP connection. - `scraper/nfs`: Linux implementation no longer errors if NFS /proc files are unavailable, as this is expected when the client and/or server is inactive (#49688) ## v0.157.0 ### 🛑 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: ```yaml 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: ```yaml 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 configuration. - `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](https://github.com/DataDog/datadog-agent/pull/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 map keys with a lambda key mapper. (#49187) - `pkg/ottl`: Add `IsEmpty` converter that returns `true` when the given value is nil or an empty value. (#49635) - `pkg/ottl`: Add the `All` OTTL converter for testing whether every slice or map element matches a lambda predicate. (#49188) - `pkg/ottl`: Add the `Any` OTTL converter for testing whether any slice or map element matches a lambda predicate. (#49188) - `pkg/ottl`: Add the `Filter` OTTL converter for filtering slice and map values with a lambda predicate. (#49184) - `pkg/ottl`: Add the `Reduce` OTTL converter for folding slice and map values with a lambda accumulator. (#49191) - `pkg/ottl`: Add an optional `truncation_marker` argument to the `truncate_all` function to append a marker to truncated values (#49319) - `pkg/ottl`: Add the `Find` OTTL converter for returning the first matching slice or map value from a lambda predicate, with an optional mapper to transform the result. (#49190) - `pkg/ottl`: Add the `MapEach` OTTL converter for transforming slice and map values with a lambda mapper. (#49186) - `pkg/stanza`: The `csv_parser` operator now processes batches of entries without splitting them, improving performance. (#42390) - `pkg/translator/pprof`: reduce redundant work in sample conversion (#49454) - `pkg/translator/pprof`: Support translating OTLP sample attributes to pprof sample labels (#49480) - `processor/drain`: Add positional parameter extraction for matched templates. (#48914) When `extract_parameters` is true, the body tokens at `<*>` positions of the matched template are written as a string slice attribute (default `log.record.template.params`), one entry per `<*>` in template order. - `processor/dynamic_sampling`: Honour incoming W3C tracestate sampling threshold (`ot=th`) and randomness (`ot=rv`) when deciding and emitting. (#49311) The processor now reads any upstream `ot=th` on incoming spans, applies equalizing composition (`min(P_upstream, 1/rate)`, matching `probabilisticsamplerprocessor`'s equalizing mode) and emits the effective threshold so downstream metric consumers reconstruct the correct adjusted count for the original population. Randomness is sourced from `ot=rv` if present, falling back to the trace ID. - `processor/gen_ai_normalizer`: Add an opt-in `overwrite_schema_url` setting to replace an existing scope schema URL after normalization writes an attribute. (#48280) - `processor/lookup`: Add `reload_interval` to the `yaml` lookup source to periodically re-read the file without a collector restart. (#41816) On a failed reload the previously loaded data is kept and a warning is logged. Reload outcomes are recorded by the `lookup_source_reloads` and `lookup_source_reload_failures` metrics. - `processor/lookup`: Add a `csv` lookup source supporting headered and headerless files, scalar or whole-row (map) values, and optional periodic reload. (#41816) Columns may be selected by header name (`key_column`/`value_column`) or by 0-based index (`key_column_index`/`value_column_index`). Set `reload_interval` to re-read the file without a collector restart. - `processor/resource_detection`: Add internal telemetry to observe resource detection, in support of promoting the processor to stable. (#44595) Adds three metrics: `otelcol.resourcedetection.detector.results` (count of detection results), `otelcol.resourcedetection.detector.duration` (per-detector latency), and `otelcol.resourcedetection.attributes.detected` (attributes in the detected resource). - `processor/span_pruning`: Add opt-in enable_bytes_metrics configuration and emit bytes_received, bytes_emitted, bytes_processed_input, and bytes_processed_output telemetry counters. (#49008) - `processor/tail_sampling`: Add the `processor.tailsamplingprocessor.usetracestate` alpha feature gate, which makes the `probabilistic` policy use W3C `tracestate` randomness for its sampling decision and rewrites the outgoing `th` to the effective sampling threshold across matched policies. (#48865) - `processor/transform`: Add `ParseCEF` function for parsing Common Event Format (CEF) security event data. (#48351) - `receiver/awsecscontainermetrics`: Migrate container.image.tag (v1.21.0) semantic convention to container.image.tags (v1.42.0) (#45087) - `receiver/datadog`: Map the Datadog `kube_app_*` tags to the Kubernetes recommended `app.kubernetes.io/*` semantic-convention attributes. (#49530) `kube_app_name`, `kube_app_instance`, `kube_app_version`, `kube_app_component`, `kube_app_part_of` and `kube_app_managed_by` are now translated to `app.kubernetes.io/name`, `.../instance`, `.../version`, `.../component`, `.../part-of` and `.../managed-by`. The tag mapping table is shared across traces, metrics and logs, so these tags are now recognized as resource attributes for all three signals instead of passing through unchanged. - `receiver/datadog`: Translate Datadog span links and span events, including the native `span_links` and `span_events` fields sent by tracers. (#49528) Span links were previously read only from the `_dd.span_links` meta tag and required hex-encoded ids, so links from Datadog tracers (which use the native `span_links` field with a 128-bit `trace_id_high` and W3C flags, or a decimal `_dd.span_links` meta form) were dropped. Span events (native `span_events` field or the `events` meta fallback) were not translated at all. Native representations take precedence over the meta form when both are present. - `receiver/file_stats`: Add an opt-in `file.include` attribute to the `file.count` metric (#49556) - `receiver/journald`: Add the 'include_log_record_original' configuration option to allow adding the raw data read from journalctl as the 'log.record.original' attribute. (#47921) - `receiver/mysql`: Add `service.instance.id`, `service.name`, and `service.namespace` resource attributes to metrics and logs (#46605) `service.instance.id` is a deterministic UUID v5 derived from the endpoint and is enabled by default. `service.name` (defaults to `unknown_service:mysql`) and `service.namespace` are disabled by default and can be enabled and overridden via the `resource_attributes` configuration. - `receiver/mysql`: Add db.system.version and db.system.name as optional resource attributes (#47414) - `receiver/oracledb`: Add OS-level metrics for the Oracle server (#48458) Adds the opt-in metrics `oracledb.system.cpu.count`, `oracledb.system.memory.limit`, and `oracledb.system.process.count`. - `receiver/oracledb`: Add transaction, lock, and recovery metrics (#49064) The new metrics are disabled by default and add no new database queries. - `receiver/oracledb`: Add `db.namespace` attribute to `db.server.session.wait_sample` event (#49603) - `receiver/oracledb`: Add real-time database health and efficiency indicator metrics. (#49087) All metrics are disabled by default with development stability. - `receiver/oracledb`: Add SGA component memory metrics (#48540) Adds the opt-in metrics `oracledb.sga.usage` and `oracledb.sga.limit`. - `receiver/oracledb`: Add session, in-database JVM, and OS resource metrics (#49065) The new metrics are disabled by default and add no new database queries. - `receiver/postgresql`: Add the postgresql.query.conflicts metric reporting queries canceled due to recovery conflicts on standby servers. (#49303) The metric is disabled by default. Conflicts only occur on standby servers; the metric will be zero on primary servers. - `receiver/postgresql`: Align resource and metric attributes with OpenTelemetry semantic conventions behind the receiver.postgresql.useOTelSemconv feature gate (alpha, disabled by default). (#45347) - When gate enabled: single resource per server with server.address, server.port, service.instance.id (UUID v5) - When gate enabled: db.namespace, db.collection.name, postgresql.index.name added as metric-level attributes - When gate disabled (default): legacy per-entity resource model with postgresql.database.name, etc. - receiver.postgresql.separateSchemaAttr kept at StageAlpha; mutually exclusive with useOTelSemconv - `receiver/pprof`: Set instrumentation scope name and version on pprof profiles based on the scraper mode (file, http client, http server, self). (#49209) Each scraper now sets the instrumentation scope name using the receiver's ScopeName and a per-mode suffix, and the scope version from BuildInfo.The translator function is unchanged. - `receiver/rabbitmq`: Add exchange-level metrics (`rabbitmq.exchange.messages.published_in` and `rabbitmq.exchange.messages.published_out`) scraped from the `/api/exchanges` endpoint, with `rabbitmq.exchange.name` and `rabbitmq.exchange.type` resource attributes. These metrics are disabled by default. (#49552) - `receiver/sqlquery`: Honor the `timeout` setting for the logs collection path so that a slow or blocked query no longer waits indefinitely. (#47114) The metrics path already applied `timeout` through the scraper controller; the logs path previously ignored it and used an unbounded context. Setting `timeout` to a positive duration now bounds each log query execution. - `receiver/sqlserver`: Add more lock and connection management metrics (#48925) Adds the following metrics, all disabled by default: - `sqlserver.connection.reset.rate` - `sqlserver.error.rate` - `sqlserver.lock.block.count` - `sqlserver.lock.escalation.rate` - `sqlserver.lock.memory` - `sqlserver.lock.request.rate` - `sqlserver.lock.wait_time.total` - `receiver/sqlserver`: Add index physical stats metrics (#49350) Adds the following metrics, all disabled by default: `sqlserver.index.fragmentation`, `sqlserver.index.page.count`, `sqlserver.index.size`, `sqlserver.index.page.utilization`, and `sqlserver.index.record.count`. Collecting these metrics requires the `CONNECT ANY DATABASE` and `VIEW ANY DEFINITION` permissions in addition to the existing direct-connection permissions. - `receiver/sqlserver`: Add 10 new opt-in metrics for cursor management, worker threads, CLR execution, Service Broker task activation, and stored procedure monitoring. (#49257) - `sqlserver.cursor.count` - `sqlserver.cursor.memory.usage` - `sqlserver.cursor.plan.count` - `sqlserver.cursor.request.rate` - `sqlserver.worker.thread.count` - `sqlserver.worker.request.count` - `sqlserver.clr.execution.time` - `sqlserver.task.count` - `sqlserver.task.rate` - `sqlserver.stored_procedure.invocation.rate` - `receiver/webhook_event`: Add support for HMAC signature verification on incoming webhook requests (#47188) ### 🧰 Bug fixes 🧰 - `cmd/opampsupervisor`: Pass agent CLI args to startup fallback config validation (#49609) This should ensure the startup fallback configuration validation works taking into account potential feature gates that may be enabled or disabled. - `exporter/clickhouse`: Respect configured database when create_schema is false instead of always connecting to the default database. (#48050) - `exporter/coralogix`: Fix domain_settings.compression being ignored when merging signal-level transport settings, so settings like zstd are correctly applied to logs, metrics, traces, and profiles. (#49662) - `exporter/file`: Added 0644 permissions to created export files when rotation is enabled. (#49677) When rotation is enabled, files are created with 0640 permissions as we did not pass FileMode to TimberJack (defaults to 0640). After this change, file creation for both rotation enabled or disabled is done with 0644 permissions. - `exporter/file`: Migrate lumberjack-format rotated backup files to timberjack naming convention on startup to prevent unbounded disk usage after upgrade. (#47674) After the migration from natefinch/lumberjack to DeRuina/timberjack (#45900), rotated backup files created by the previous lumberjack-based exporter used a different filename pattern (name-timestamp.ext) that timberjack does not recognise, causing them to be excluded from max_backups and max_days enforcement and accumulate indefinitely on disk. On startup, the file exporter now scans the log directory and renames any lumberjack-format backup files to the timberjack convention (name-timestamp-size.ext), after which timberjack manages their lifecycle normally. - `exporter/load_balancing`: Improve endpoint distribution across large backend sets by increasing hash ring size, virtual node count, and removing endpoint-order bias during ring construction. (#41200) This update raises the default virtual node count from 100 to 200 and the ring coordinate space from 36000 to 131071. It also changes ring construction so all virtual points are generated first and assigned globally, instead of letting earlier endpoints claim scarce positions before later endpoints are processed. Together with the existing linear-probing collision handling, this reduces skew for large endpoint sets and keeps ring assignment stable when the same endpoints are provided in a different order. - `exporter/opensearch`: Reject attribute values substituted into dynamic index names when they would redirect writes to a system index or another index via a `.` prefix or `..` segment. (#49225) A value substituted into a `%{placeholder}` index name that is empty, starts with `.`, or contains `..` is skipped in favor of the next attribute in the precedence order and then the configured fallback, matching the existing missing-key behavior. Values that are merely invalid to OpenSearch (for example uppercase) are still substituted as-is and rejected by OpenSearch at index time, so that failure remains visible rather than being silently rerouted to the fallback index. - `exporter/splunk_hec`: Use `buildInfo.Version` as fallback for `__splunk_app_version` header when `splunk_app_version` is not configured. (#49511) - `extension/azure_encoding`: Fix NDJSON format detection failing for Azure blobs that use CRLF line endings. (#49608) Azure Blob Storage exports may use Windows-style CRLF line endings. The NDJSON detection heuristic checked for '}' immediately before '\n', but with CRLF the byte before '\n' is '\r', causing the detection to fail with "unable to detect JSON format". The fix also accepts '}\r' before '\n' as a valid NDJSON marker. - `internal/sqlquery`: Close sql.Rows in QueryRows so the underlying driver connection is released on early-return and error paths. (#49462) Fixes a memory leak in consumers of internal/sqlquery (sqlserver, postgresql, mysql, oracledb, sqlquery receivers). Previously, when ColumnTypes or row scanning returned early with an error, or when the context was cancelled mid-iteration, sql.Rows was never closed, so the underlying connection stayed marked in-use in the *sql.DB pool. On drivers that allocate per-connection buffers (e.g. go-mssqldb's 64 KiB TDS buffer), this manifested as steady RSS growth under long-running scrapes. - `pkg/azurelogs`: Add support for additional time and property fields in Azure Resource Logs (#46162) Azure resource logs are not standard. This change expands support for different resource types by adding support for additional time and property fields that are less commonly used in Azure resource logs. - `pkg/fileconsumer`: Fix fingerprint generation for gzip-compressed files when the file descriptor is positioned at a non-zero offset. (#49473) - `pkg/translator/jaeger`: Preserve the sampled flag when translating spans between Jaeger and OTLP. (#48247) The Jaeger to OTLP translators (proto and thrift) now map the Jaeger SampledFlag to bit 0 of the OTLP Span.flags field (the W3C Trace Context sampled bit), and the OTLP to Jaeger translator maps it back. Previously the sampled bit was always dropped in both directions, so downstream sampling-aware components lost that information whenever a Jaeger receiver or exporter was in the pipeline. - `processor/metrics_transform`: Fix submatch_case config option having no effect at runtime by copying the field into the internal transform struct during config building. (#49171) - `processor/metrics_transform`: aggregate_labels and aggregate_label_values operations no longer silently drop all data points when applied to Summary metrics. The operation is now skipped with a warning log instead. (#49456) - `processor/tail_sampling`: Fix race condition where SetMaximumTraceSizeBytes updates could be applied after incoming traces are evaluated, causing traces to be incorrectly dropped as too large. (#48887) In the iter loop, pending configuration updates (SetMaximumTraceSizeBytes and SetSamplingPolicy) are now drained before processing incoming trace batches. This prevents a non-deterministic Go select from picking the workChan case before a config update channel, which previously caused TestDropLargeTraces to fail flakily on CI. - `processor/tail_sampling`: Treat `threshold_ms` as an exclusive lower bound when `upper_threshold_ms` is not set. (#49593) - `receiver/aws_lambda`: Fix S3 service usage of the error replaying (#49671) - `receiver/datadog`: Reconstruct the full 128-bit trace ID for every span in a payload instead of only for spans that appear after the one carrying `_dd.p.tid`. (#49496) Only the chunk-local root span carries `_dd.p.tid`, and Datadog does not order spans root-first, so spans that preceded their root (within a chunk or across separately flushed chunks) kept a 64-bit zero-padded trace ID and no longer correlated with the rest of the trace, or with logs reconstructed from the same `dd.trace_id`/`_dd.p.tid`. Requires the `receiver.datadogreceiver.Enable128BitTraceID` feature gate (beta, enabled by default). - `receiver/github`: Process pull-requests in reverse order to adhere to chronological ordering (#48578) - `receiver/k8s_objects`: Fix panic and data race in stopperChanList during leader election re-acquisition (#49601) - `receiver/macos_unified_logging`: Register the `macosunifiedlogging` deprecated type alias for non-darwin platforms (#49558) This allows the available components reported over OpAMP to be consistent across platforms. - `receiver/mongodb`: Ignore the `$indexStats` scrape error that occurs when scraping views (#49494) - `receiver/podman_stats`: Report `container.blockio.io_service_bytes_recursive.read`/`.write` with unit `By` instead of `{operations}` (#49580) These metrics record byte counts (from `stats.BlockInput`/`BlockOutput`) and describe themselves as bytes, but declared the operation-count unit `{operations}`. This aligns them with the equivalent dockerstats receiver metric and with podman's own other byte-valued metrics. - `receiver/postgresql`: Prevent table and index metrics collection from blocking when a PostgreSQL relation has an AccessExclusiveLock. (#49351) - `receiver/splunk_hec`: Fix the receiver silently ignoring the `read_header_timeout` and `write_timeout` settings, which were overridden by a hard-coded 20s timeout (#49483) - `receiver/statsd`: Fix explicit bucket histogram mapping for StatsD timing metrics. (#49747) - `receiver/vcenter`: Fix `vcenter.vm.cpu.readiness` always reporting 0 by adding the missing `summary.quickStats.overallCpuReadiness` property to the vSphere Retrieve call in `VMs()` (#48487) ## v0.156.0 ### 🛑 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](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/ottl/contexts/ottlotelcol/README.md). 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](https://github.com/DataDog/datadog-agent/pull/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](https://github.com/DataDog/datadog-agent/pull/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` - `sqlserver.worktable.cache.hit_ratio` - `receiver/syslog`: Add support for RFC6587 Octet Counting framing with RFC3164 message format. (#45216) ### 🧰 Bug fixes 🧰 - `connector/routing`: Fix duplicate routing table entry handling to correctly ignore duplicates instead of overwriting the original route (#44762) Previously, when duplicate routing table entries were encountered, the warning message indicated that the duplicate would be ignored, but in fact the original entry was being overwritten by the duplicate. This fix ensures that duplicates are properly ignored and the original route's consumer is preserved. - `exporter/awsxray`: Use local service name for Consumer local root segment names, falling back to resource service name when aws.local.service is absent. (#43432) Consumer spans promoted to X-Ray Segments after #42633 were named using the span (operation) name instead of the local service name. The fix mirrors the existing Server span naming behavior. - `exporter/datadog`: Compress the metric sketches payload with gzip in the legacy metric API client, matching the metric series payload. Previously sketches were sent uncompressed, increasing egress for distribution/histogram metrics. (#49313) - `exporter/datadog`: Fix CPU core count fields (`cpu_cores`, `cpu_logical_processors`) missing from host metadata payloads for remote hosts in OTel gateway topologies. (#49320) CPU data arrives via `system.cpu.physical.count` / `system.cpu.logical.count` metrics and was never forwarded to the host metadata reporter in the serializer exporter path. See [DataDog/datadog-agent#51893](https://github.com/DataDog/datadog-agent/pull/51893). - `exporter/datadog`: Fix host metadata collection no longer aborts the entire batch when one resource fails; errors are accumulated and processing continues for remaining resources (#49153) See [DataDog/datadog-agent#51893](https://github.com/DataDog/datadog-agent/pull/51893). - `exporter/datadog`: Metrics from the Podman stats receiver now report the correct Datadog metric origin (`opentelemetry_collector_podmanreceiver`) instead of falling through to `opentelemetry_collector_unknown`. (#49320) See [DataDog/datadog-agent#52594](https://github.com/DataDog/datadog-agent/pull/52594). - `exporter/file`: Fix path traversal vulnerability on Windows when using grouping file exporter (#49194) - `exporter/opensearch`: Preserve LogRecord EventName field in all log encoding modes. (#49314) - `extension/datadog`: Skip cloud metadata source provider probe when hostname is already set in config, avoiding spurious GCP metadata server requests on non-GCP hosts. (#49241) - `pkg/translator/pprof`: Wrong conversion of labels from pprof to OTLP profiles (#49449) - `processor/cumulativetodelta`: Align reset detection and dropping on histograms and exponential histograms (#48278) Histograms and exponential histograms where there is a drop in total count or on any bucket counts are now treated as a reset and dropped. - `processor/cumulativetodelta`: Fix non-deterministic order of valid metric types in error messages for invalid `metric_types` config values. (#49120) - `processor/gen_ai_normalizer`: Fix OpenInference message normalization for flattened indexed attributes (#48421) Reconstruct gen_ai.input.messages and gen_ai.output.messages from OpenInference flattened indexed span attributes (llm.{input,output}_messages.N.message.*). - `processor/k8s_attributes`: Fix cache key memory leak in k8sattributesprocessor when a Pod's IP is missing or cleared from the delete event (#48986) When a Pod is deleted, if its IP address is missing or already cleared from the delete event status, the processor now looks up the cached pod by its UID to retrieve the stored IP and correctly queue all associated keys for deletion. - `processor/resource_detection`: Fix Docker resource detection failing to start when optional resource attributes are disabled, including container attributes when the hostname does not match a Docker container name. (#46275) - `processor/spanpruning`: Fix non-deterministic depth of preserved outlier spans by grouping leaves and parents by tree depth, so same-named ancestors at different depths are no longer merged. (#49323) - `receiver/aws_cloudwatch`: Fix logs being skipped when AWS pagination returns an empty page (#48577) - `receiver/github`: Capture the datapoint timestamp per repository instead of once at scrape start, so per-repository metrics carry a timestamp close to when each repository was observed. (#48497) - `receiver/prometheus`: Prometheus API server config/targets stay in sync with Target Allocator changing it if both are enabled. (#48040) Previously, the API server config and targets did not get the updates from the Target Allocator. - `receiver/tcp_log`: Fix tcp input operator emitting partial log data after a connection read error when `one_log_per_packet` is enabled (#49199) Previously, if a TCP connection was reset mid-read while `one_log_per_packet` was set to true, the partial buffer was still processed and emitted as a log entry. Now the read error causes the message to be discarded instead. ## v0.155.0 ### 🛑 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. This change doesn't have any impact unless any of `cpu.*` metrics are explicitly enabled with the `cpu` attribute in signalfx exporter with configuration like this: ```yaml exporters: signalfx: include_metrics: - metric_name: cpu.idle dimensions: cpu: ["*"] ``` In that case, the same metrics can be restore by applying the transform processor the following way: ```yaml 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. This change doesn't have any impact unless `cpu.utilization_per_core` metric is explicitly enabled in signalfx exporter with configuration like this: ```yaml exporters: signalfx: include_metrics: - metric_name: cpu.utilization_per_core ``` In that case, the same metric can be restore by applying the transform processor the following way: ```yaml 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 6fd0eb64. 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.-*`, 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) - `exporter/kafka`: Add `producer.max_broker_write_bytes` config (#47492) The maximum size of a single write to a broker was previously fixed at the underlying franz-go default of 100 MiB and could not be configured. As a result, setting `producer.max_message_bytes` above 100 MiB passed configuration validation but caused the collector to fail on startup with an unrecoverable error ("max broker write bytes ... is erroneously less than max record batch bytes ..."). The new `producer.max_broker_write_bytes` setting (default 104857600, i.e. 100 MiB) exposes this limit. To send messages larger than 100 MiB, raise it so it is greater than or equal to `max_message_bytes`. Configuration is now validated up front: the collector reports a clear error if `max_broker_write_bytes` is below the 100 MiB minimum or smaller than `max_message_bytes`, rather than failing at runtime. - `exporter/load_balancing`: Reduce CPU usage and memory allocations when routing traces by `traceID` (the default routing key) (#48983) Routing decisions are unchanged. Spans are now regrouped per backend, so the exact ResourceSpans/ScopeSpans grouping of exported traces may differ from the input. If a downstream consumer is sensitive to this, a groupbyattrsprocessor on the receiving end can recompact the ResourceSpans. - `exporter/splunk_hec`: Support exporting profiles (#48598) - `extension/azure_encoding`: Map `schemaVersion` and `resourceType` fields of Azure Storage Blob logs to `azure.storage.schema_version` and `azure.resource.type`. (#48753) - `extension/azure_encoding`: Support statusMessage on Administrative Activity Logs (#48932) The properties.statusMessage field on Azure Administrative activity logs is now parsed. When it contains JSON (the common case for VM ScaleSet operations etc.), the structured object is stored under the azure.administrative.status_message attribute. Plain-string values are stored as-is. - `pkg/coreinternal`: Migrate messaging.destination (v1.16.0) semantic convention to messaging.destination.name (v1.40.0) (#45077) - `pkg/coreinternal`: Migrate semantic conventions from v1.18.0 to v1.40.0 (#45293) Introduced feature gates for the migration of two deprecated semantic conventions: - **FaaS Execution (`faas.execution`)**: Added `internal.coreinternal.goldendataset.EmitV1FaaSConventions` to opt-in to the new `faas.invocation_id` attribute. - **HTTP User Agent (`http.user_agent`)**: Added `internal.coreinternal.goldendataset.EmitV1HTTPConventions` to opt-in to the new `user_agent.original` attribute. - `pkg/coreinternal`: Improved `strptime` compatibility for time parsing (#43842) Time parsing interfaces (such as the OTTL `Time` function and the `timestamp` operator) accept `strptime`-style format strings. This PR makes several changes to the parsing logic to better match the behavior of `strptime`. (Most notably, leading zeros are now optional for numbers, whitespace is ignored before most elements, and more ISO 8601 timezone formats are accepted for `%z`.) - `pkg/faro`: Migrate deployment.environment (v1.26.0) semantic convention to deployment.environment.name (v1.40.0) (#45074) - `pkg/ottl`: Add `stringify_all` editor that converts all non-string values in a map to their string representation (#48044) - `pkg/ottl`: Add support for dynamic keys in converters results. (#48834) Converter results can now be indexed with dynamic keys expressions that evaluate to a string or integer. For example: `Split(...)[Len(attributes["items"])]` or `Split(...)[attributes["index"]]`. Previously, only literal keys (e.g. `[0]` or `["index"]`) were supported. - `pkg/translator/pprof`: Add support for OTel Profiles to pprof conversion across all three message Sample value/timestamp combinations (#48864) - `pkg/zipkin`: Migrated semantic convention from v1.18.0 to v1.40.0 (#45080) - `processor/coralogix`: Add critical path trace annotations. (#48824) New `critical_path.enabled` config computes and writes span attributes `cgx.critical_path.is_on_path`, `cgx.critical_path.exclusive_duration_ns`, and `cgx.critical_path.inclusive_duration_ns`. Feature expects complete traces, so `groupbytrace` should run before `coralogixprocessor` in the pipeline. Example: `processors: coralogix: critical_path: enabled: true` - `processor/geoip`: Add `error_mode` configuration option to control how geolocation lookup errors are handled. (#35069) The `error_mode` option supports `propagate` (default, preserves existing behavior), `ignore` (logs the error and continues), and `silent` (continues without logging). - `processor/log_dedup`: Add `metadata_keys` and `metadata_cardinality_limit` options to support multi-tenant pipelines by aggregating logs into separate buckets per unique metadata combination and preserving request context for downstream extensions. (#47521) - `processor/resource_detection`: Add GCP Cloud Run Worker Pool detector to the resource detection processor (#48931) - `processor/schema`: Add support for the Schema v2 file formats (`manifest/2.0` and `resolved/2.0`) defined by OTEP (#48189) The processor now auto-detects the schema document format via the `file_format` field and dispatches to a v1.1 or v2 code path accordingly. When the schema URL serves a `manifest/2.0`, the processor follows `resolved_registry_uri` through the existing provider chain (so caching, retry, and storage all apply to both fetches) and constructs a single-hop translator from the resolved registry. Renames are extracted from `deprecated.renamed_to` entries in `attribute_catalog` and `registry.{metrics,spans,events}`. `diff/2.0` and `definition/2` are recognised but not yet supported. - `processor/spanpruning`: Add duration outlier detection, attribute correlation, and outlier preservation to span aggregation (#48984) Enabled with `enable_outlier_analysis` and configured via `outlier_analysis.*`. Detects slow spans within an aggregation group using IQR (default) or MAD, reports attribute values correlated with outliers, and can optionally preserve outliers as individual spans instead of aggregating them. Adds the `processor_spanpruning_outliers_detected`, `processor_spanpruning_outliers_preserved`, and `processor_spanpruning_outliers_correlations_detected` metrics. Behavior is unchanged when disabled. - `processor/transform`: Improve `merge_histogram_buckets` with `method="limit_buckets"` to compact buckets closer to the configured limit. (#49020) - `processor/transformprocessor/internal/logparsingfuncs`: Add `ParseLEEF` function to parse Log Event Extended Format (LEEF) messages. (#44908) - `processor/transformprocessor/internal/logparsingfuncs`: Add `ParseCLF` function for parsing Common Log Format (CLF) HTTP access log entries. (#48349) `ParseCLF` is available in log statements and returns a map with the parsed `clf.remote_host`, `clf.rfc931`, `clf.auth_user`, `clf.timestamp`, `clf.request`, `clf.method`, `clf.request_uri`, `clf.protocol`, `clf.status`, and `clf.bytes` fields. An optional `format` parameter selects between the strict `"clf"` format (default) and the NCSA `"combined"` format, which additionally parses `clf.referer` and `clf.user_agent`. - `receiver/aws_lambda`: Introduce Custom Handler support for AWS Lambda Receiver. The custom handler allows the receiver to bind a signal-agnostic extension. (#49160) - `receiver/awscloudwatch`: Adds a new configuration option `initial_lookback` to the AWS CloudWatch Logs receiver for specifying how far back from the collector's startup time to begin collecting logs. (#47754) - `receiver/azure_event_hub`: Add the ability to use encoding extensions to the Azure Event Hub receiver. (#48753) - `receiver/datadog`: Support zstd-compressed request payloads (#49101) Recent Datadog Agents (7.59+) zstd-compress HTTP payloads by default. The receiver now decompresses both gzip and zstd request bodies. - `receiver/datadog`: Add feature gate to stop emitting deprecated rpc.service attribute (#22095) The feature gate receiver.datadogreceiver.DontEmitDeprecatedRPCServiceAttr (disabled by default) allows users to opt out of the deprecated rpc.service attribute on gRPC spans. The service name is already captured in the span name (service/method) and rpc.method attribute. - `receiver/file_log`: Improve polling performance when watching many files by indexing fingerprint matching. (#27404) - `receiver/googlecloudmonitoring`: Add `universe_domain` config option to support Sovereign Google Cloud regions. Setting this field passes `option.WithUniverseDomain` to the underlying Google API client. (#48924) - `receiver/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) - `receiver/host_metrics`: Enable the Android platform in the `process` scraper. (#47296) - `receiver/host_metrics`: Add AIX-specific process scraper implementation. (#47095) Implements AIX versions of the platform-specific process scraper hooks (CPU time/utilization recording, process name, executable, and command extraction), replacing the previous empty stubs that the "others" fallback provided. - `receiver/oracledb`: Enhance SQL obfuscation to anonymize comments while preserving query structure (#48508) - Query structure, formatting, and whitespace are now preserved during obfuscation for improved readability. - `receiver/oracledb`: Add additional attributes to the Oracle query execution plan. (#48965) Extend the execution plan with five additional attributes: - `OBJECT_NAME`: Name of the object referenced by the plan step - `OBJECT_TYPE`: Type of the referenced object (e.g., table, index) - `FILTER_PREDICATES`: Predicates applied as a filter during the step - `PARTITION_START`: Starting partition for partitioned access - `PARTITION_STOP`: Ending partition for partitioned access - `receiver/oracledb`: Add `oracledb.plan.first_load` attribute to the `db.server.top_query` event (#48998) - `receiver/oracledb`: Add SQL comment extraction support. Users can now configure `allowed_comment_keys` to extract key-value pairs from leading SQL block comments and include them as the `db.query.comment_tags` telemetry attribute. (#48338) - `receiver/prometheus`: Add `scrape_on_shutdown`, `discovery_reload_on_startup`, and `initial_scrape_offset` configuration options to allow tuning startup and shutdown scrape behavior in serverless environments. (#48979) - `scrape_on_shutdown` (default: false): Enables a final scrape before the receiver closes. - `discovery_reload_on_startup` (default: false): Enables discovering targets immediately on startup. - `initial_scrape_offset` (default: 0s): Adds a fixed delay before the initial scrape of targets. - `receiver/sqlserver`: Add `sqlserver.query.plan.creation_time` attribute to the `db.server.top_query` event. (#49018) - `receiver/sqlserver`: Add `service.name` and `service.namespace` opt-in resource attributes and allow overriding any resource attribute via `override_value`. (#46176) When `service.name` is enabled, the receiver sets it to `unknown_service:microsoft.sql_server` per OTel specification. When `service.namespace` is enabled, it defaults to an empty string until set via configuration. Each resource attribute now accepts an `override_value` under `resource_attributes`, letting users pin values such as `service.name`, `service.namespace`, or `service.instance.id` to uniquely identify database instances across environments. ### 🧰 Bug fixes 🧰 - `cmd/opampsupervisor`: Normalize merged `service.telemetry.resource` settings so mixed legacy inline attributes and declarative `attributes` entries do not produce invalid effective Collector configs (#48365) - `connector/failover`: Stop the connector's wrapped exporterhelper from imposing its default 5s timeout on the downstream pipeline when `sending_queue` is enabled. (#48567) Previously, enabling `sending_queue` caused the connector to wrap itself in `exporterhelper.NewLogs/Traces/Metrics`, which silently installs a `timeoutSender` with the 5s default `TimeoutConfig.Timeout`. That deadline propagated through to downstream exporters via `ctx.Deadline()`, capping their configured timeouts (e.g., a downstream exporter configured with `timeout: 30s` would only see ~5s of budget at its `pushLogsData`). The connector now passes `WithTimeout(TimeoutConfig{Timeout: 0})` explicitly, matching the pattern used by signalfxexporter and splunkhecexporter. A user-facing `timeout` config field on the connector may be added separately if there is demand for connector-level hang-protection. - `exporter/elasticsearch`: Skip `error.grouping_name` when encoding ECS span events, as it is a scripted field in the `logs-apm.error` index template and cannot be indexed directly. (#49216) - `exporter/load_balancing`: Fix Kubernetes resolver initialization to allow exporter creation outside k8s cluster by deferring client creation to start time (#42293) - `exporter/load_balancing`: Fix a wait-group leak on the trace routing path that could cause Shutdown to hang when backend resolution fails partway through a batch (#48983) - `extension/datadog`: Fix `tls.insecure_skip_verify` being ignored (#48992) - `extension/google_cloud_logentry_encoding`: Accept short ALPN protocol tokens (e.g. `h2`, `h3`) in `httpRequest.protocol` that do not contain a `/`; previously any protocol string without a slash was rejected with an error, causing log entries from Google Cloud Load Balancers that switched to reporting `h2` for HTTP/2 to be silently dropped. (#45214) - `pkg/ottl`: Fix `replace_pattern` and `replace_all_patterns` using a `Function` argument so each match is replaced only at its position, instead of everywhere the matched text appears. (#48437) - `pkg/stanza`: Fix stanza container operator logging errors at ERROR level when `on_error` is set to a quiet mode (#42646) Previously, the `container` operator logged entry-level processing errors at ERROR level even when `on_error` was set to `drop_quiet` or `send_quiet`. These errors are now logged at DEBUG level in quiet modes, matching the documented behavior. Downstream delivery failures continue to propagate so the pipeline can react to them. - `pkg/translator/pprof`: Fix the wrong timestamp conversion. (#48813) - `processor/k8s_attributes`: Prevent unbounded memory growth by cleaning up stale pod identifiers, including container.id entries left behind after container restarts (#48398) - `processor/metrics_transform`: Add required-field validation for `combine` action: return an error if `new_name` or `aggregation_type` is missing, preventing silent data loss and empty metric names. (#48871) - `processor/redaction`: Fix a panic in database attribute sanitization when traces are processed concurrently. (#49048) - `processor/transform`: Fix transform processor config unmarshaling to return an error for empty statement list items instead of panicking. (#49245) - `receiver/azure_monitor`: Fix discovery and collection of custom metric namespace definitions (e.g. `azure.vm.linux.guestmetrics` published by Azure Monitor Agent / MetricsExtension) (#40989) The MetricDefinitions API only returns custom namespace metrics when the `metricnamespace` query parameter is explicitly set. Previously, metrics configured under `receiver::metrics` for a custom namespace were silently dropped because the API call used no filter and only returned the resource's default namespace. The receiver now makes an additional namespace-filtered call for each custom namespace in the `metrics` config that was not returned by the default call. - `receiver/datadog`: Fix StartTimestamp exceeding Timestamp on delta-temporality data points when out-of-order or late-arriving submissions are received. (#48449) The datadog receiver now guards StartTimestamp assignment to enforce the OTel data model invariant (StartTimestamp <= Timestamp) for delta-temporality metrics. Late-arriving or out-of-order data points no longer poison the stored timestamp for subsequent submissions. - `receiver/http_check`: Stop emitting two httpcheck.tls.cert_remaining data points per scrape (#47740) - `receiver/kafka_metrics`: use kadm.Client.Lag and do not record negative values (#48701) - `receiver/oracledb`: Clamp negative `DURATION_SEC` and `SESSION_DURATION_SEC` values in the query sample to zero. (#48901) Fix negative duration values in query sample metrics by clamping DURATION_SEC and SESSION_DURATION_SEC to zero minimum. - `receiver/purefa`: Fix the receiver failing to start due to an invalid internal Prometheus scrape configuration. (#48847) The receiver used a `*discovery.StaticConfig` pointer when building the Prometheus scrape configs. Only the value type `discovery.StaticConfig` is registered for YAML marshaling, so the prometheus receiver failed on startup with "cannot marshal unregistered Config type: *discovery.StaticConfig". The config now uses the value type. - `receiver/purefb`: Fix the receiver failing to start due to an invalid internal Prometheus scrape configuration. (#48851) The receiver used a `*discovery.StaticConfig` pointer when building the Prometheus scrape configs. Only the value type `discovery.StaticConfig` is registered for YAML marshaling, so the prometheus receiver failed on startup with "cannot marshal unregistered Config type: *discovery.StaticConfig". The config now uses the value type. - `receiver/statsd`: Clean up stale unix socket file on startup to prevent "address already in use" errors after unclean shutdown. (#44866) - `receiver/statsd`: Skip empty tag entries instead of aborting the tag parse loop, so valid tags after an empty entry are no longer dropped. (#48483) Previously, tags containing an empty entry (e.g. from consecutive commas like `|#,,key:value`) caused the parser to exit the loop on the first empty entry, silently dropping all subsequent valid tags. Empty entries are now skipped, matching the permissive behavior of the Datadog agent. ## v0.154.0 ### 🛑 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 `$ref`s 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_normalizer` processor to alpha stability (#48773) - `processor/k8s_attributes`: Add `pod_delete_grace_period` config option to configure pod metadata cache deletion grace period. (#48127) The `pod_delete_grace_period` config option defaults to `120s` to match the previously hardcoded behavior. - `processor/lookup`: Add A and AAAA lookup support for dns source of lookup processor (#48869) - `processor/lookup`: Add traces and metrics support to the lookup processor. (#47777) Traces use ottlspan context (span-level lookups) and metrics use ottldatapoint context (datapoint-level lookups across all metric types). - `processor/resource_detection`: Add `k8s.cluster.uid` detection to the `k8s_api` detector (formerly `k8snode`), derived from the `kube-system` namespace UID. (#48597) The `k8s.cluster.uid` attribute is enabled by default. To disable it, set `resource_attributes.k8s.cluster.uid.enabled: false`. The detector requires `get` permission on the `kube-system` namespace. If the permission is missing, a warning is logged and the attribute is omitted; other attributes are unaffected. - `processor/resource_detection`: Updates github.com/GoogleCloudPlatform/opentelemetry-operations-go dependencies to their latest versions (v0.57.0 / v1.33.0). (#48894) This update brings in the following features: - Support OTLP event_name field in logs exporter - Add support for cloud run worker pools - `processor/spanpruning`: Add attribute loss analysis to track diversity and missing attributes during span aggregation (#47671) - `processor/tail_sampling`: Add a new `processor_tail_sampling_count_bytes_sampled` metric that counts bytes sampled per policy, mirroring `processor_tail_sampling_count_spans_sampled`. (#48348) Gated behind the `processor.tailsamplingprocessor.metricstatcountbytessampled` feature gate (alpha, disabled by default). Bytes are measured using the protobuf-marshaled `ResourceSpans` size, the same calculation used for `maximum_trace_size_bytes`. - `processor/tail_sampling`: Allow nesting the not policy inside and_sub_policy for tail sampling policies. (#47313) This enables configurations such as "status_code: ERROR" AND NOT "http.status_code in [400, 499]" without relying on deprecated invert_match. - `processor/transform`: Add the `limit_buckets` method to the `merge_histogram_buckets` OTTL function to reduce explicit histogram bucket counts. (#48527) - `receiver/aws_lambda`: Decompress S3 objects based on `.gz` key suffix rather than gzip magic number sniffing (#38861) S3 objects are now decompressed only when their key ends in `.gz`. Objects without a`.gz` suffix are no longer auto-decompressed, even if their contents are gzip-encoded, and in that case the raw bytes will be passed to the configured decoder. This change avoids reading the file header to sniff the magic number, which is important for supporting formats such as Parquet that require random access. - `receiver/aws_lambda`: Introduce metadata for derived logs and enrich client context with the same for CloudWatch logs. (#48581) - `receiver/azure_blob`: Allow `logs.encoding` and `traces.encoding` to reference an encoding extension ID, in addition to the built-in `otlp_json` and `otlp_proto` values. (#48238) When `encoding` is set to a value other than `otlp_json` or `otlp_proto`, it is treated as the component ID of an encoding extension. The extension is resolved from the collector's configured extensions when the receiver starts and used to unmarshal blob payloads for that signal. - `receiver/azure_blob`: Add `encoding` option per signal to accept OTLP/Protobuf in addition to OTLP/JSON blob payloads (#48236) Previously the receiver only accepted OTLP/JSON. New `logs.encoding` and `traces.encoding` options each accept `otlp_json` (default) or `otlp_proto`, selecting the encoding of blob payloads per signal. The default preserves prior behavior for existing OTLP/JSON producers. - `receiver/host_metrics`: Add AIX to the system scraper's supported-OS allowlist. (#47095) - `receiver/k8s_events`: Add `dedup_interval` config to throttle MODIFIED watch notifications per Event UID. (#48018) `dedup_interval` is opt-in (default `0` preserves existing behavior). When set to a positive duration, MODIFIED watch notifications for a given Event UID are emitted at most once per interval; ADDED notifications are always emitted. Set to a negative value to drop all MODIFIED notifications. Per-UID throttle state is retained for `dedup_interval + 5m`. Adds an internal telemetry counter `otelcol.k8s.events.modified.filtered` that tracks how many MODIFIED notifications were dropped by `dedup_interval`. - `receiver/k8s_objects`: Add `initial_delay` to delay the first pull for pull-mode objects by an exact, per-object duration. (#48605) `initial_delay` lets operators stagger heavy pull-mode object collections across startup time without changing the configured recurring `interval`. If unset or `0`, the receiver keeps the current immediate first-pull behavior. Watch-mode objects are unaffected. - `receiver/kafka`: Add `group_rebalance_strategies` so consumers can advertise multiple partition assignment protocols in order during rolling deployments (#48658) Kafka picks the first protocol every group member supports. This avoids `INCONSISTENT_GROUP_PROTOCOL` when old and new collector pods temporarily advertise different assignment strategies. Order is preserved when configuring the franz-go client. - `receiver/oracledb`: Add physical I/O and SQL*Net throughput metrics sourced from the existing v$sysstat scrape. (#48291) Adds four new opt-in metrics (disabled by default, stability: development) that surface previously discarded v$sysstat counters and establish the OTLP attributed metric pattern for the OracleDB receiver: - oracledb.physical_io.transferred (attributes: disk.io.direction, disk.io.type) - oracledb.physical_io.requests (attributes: disk.io.direction, disk.io.block_size) - oracledb.physical_io.cache_writes - oracledb.sqlnet.io.transferred (attributes: network.io.direction, destination.type) No new SQL queries are introduced; the existing SELECT * FROM v$sysstat scrape already returns all required rows, so there is zero additional load on monitored Oracle instances. - `receiver/oracledb`: Add `oracledb.plan.last_load` and `oracledb.plan_hash_value` attributes to db.server.top_query events (#48216) Enhance db.server.top_query event with execution plan metadata: - oracledb.plan.last_load: Captures when the query execution plan was loaded - oracledb.plan_hash_value: Provides hash value for identifying similar execution plans These attributes enable plan stability monitoring, performance regression analysis, and query optimization workflows. - `receiver/oracledb`: Add Oracle instance metadata as resource attributes and CDB/PDB detection at startup. (#48354) New resource attributes detected once at receiver startup (best-effort; failures are logged at Warn level): - oracle.db.version - Oracle version string (e.g. "19.0.0.0.0") - oracle.db.role - database role (e.g. "PRIMARY", "PHYSICAL STANDBY") - oracle.db.open_mode - open mode (e.g. "READ WRITE", "READ ONLY") - oracle.db.hosting_type - hosting environment: "self-managed", "RDS", or "OCI" - oracle.db.pdb - PDB name when connected directly to a PDB (empty for non-CDB or CDB root) - `receiver/oracledb`: Add 12 new opt-in metrics from V$SYSMETRIC (group_id=2) covering buffer cache, CPU, library cache, shared pool, parse, and sort utilization. Parse and sort metrics include differentiating attributes. (#48381) New metrics (all disabled by default, stability: development): oracledb.buffer_cache.utilization, oracledb.database.cpu.utilization, oracledb.database.wait.utilization, oracledb.execution.utilization (with parse_type attribute), oracledb.host.cpu.utilization, oracledb.library_cache.utilization, oracledb.parse.rate (with parse_result attribute), oracledb.parse.utilization, oracledb.redo_allocation.utilization, oracledb.shared_pool.utilization, oracledb.sort.ratio (with sort_type attribute), oracledb.sql_service.response.duration - `receiver/oracledb`: Add session wait event sampling (#48353) Add new opt-in log event `db.server.session.wait_sample` (disabled by default) that collects per-session wait event statistics from v$session_event. Includes session identifiers (sid, serial), wait event details (event, wait_class), and wait metrics (total_waits, time_waited). - `receiver/postgresql`: Clean up the query_sample template to exclude our own connection and remove null query_start staements. (#47317) - `receiver/prometheus_remote_write`: Replace manual scope hashing in `metricIdentity` and `exemplarKey` with `identity.Scope` and `identity.Resource` hash chaining, eliminating intermediate string allocations. (#48547) - `receiver/sqlquery`: Report component status on database connection and query failures for health check v2 integration. (#43837) - `receiver/sqlserver`: Add SQL compilation, parameterization, plan guidance, and attention metrics. (#48591) Adds the following new metrics (all disabled by default): - `sqlserver.attention.rate`: rate of SQL attentions (client cancellation interrupts). - `sqlserver.parameterization.rate`: rate of auto-parameterization activity, classified by result (`auto_attempted`, `safe`, `unsafe`, `failed`, `forced`). - `sqlserver.plan.execution.rate`: rate of plan executions, classified by plan guide result (`guided`, `misguided`). - `sqlserver.recompilation.ratio`: derived ratio of SQL recompilations to compilations, expressed as a percentage. - `receiver/sqlserver`: Add Latch metrics for SQL Server receiver. (#48032) Added five new opt-in metrics: - `sqlserver.latch.wait.rate` — latch waits per second - `sqlserver.latch.wait_time.avg` — average latch wait time - `sqlserver.latch.wait_time.total` — total cumulative latch wait time - `sqlserver.latch.superlatch.count` — active superlatch count - `sqlserver.latch.superlatch.transition.rate` — superlatch promotions/demotions with `transition.direction` attribute - `receiver/sqlserver`: Add Memory Manager metrics (memory areas, page pools, cache objects) consolidating 16 db-agent samplers into 3 metrics. (#48032) Added three new opt-in metrics: - `sqlserver.memory.area` with `memory.pool` attribute (target, total, sql_cache, optimizer, connection, granted_workspace, max_workspace) - `sqlserver.memory.page.count` with `page.pool` attribute (cache, total, target, database, stolen, reserved, free) - `sqlserver.memory.cache.object.count` with `cache.state` attribute (in_use, total) - `receiver/sqlserver`: Add session attributes to `db.server.query_sample` event. (#48346) The `db.server.query_sample` log records now include: - `sqlserver.client.app.name`: Name of the client application that initiated the session. - `sqlserver.session.start_time`: ISO 8601 timestamp of when the session was established. - `sqlserver.session.duration`: Total elapsed time in seconds the session has been actively executing requests. - `receiver/statsd`: `receiver/statsd` Add support for configuring socket buffer size (#47379) - `receiver/windows_event_log`: Add EVTX file support (#48047) ### 🧰 Bug fixes 🧰 - `cmd/opampsupervisor`: Always send updated AgentDescription messages to the server when received from the collector (#48537) - `cmd/schemagen`: Fix nil pointer dereference in parser when a type produces no schema element. (#48789) - `cmd/telemetrygen`: Fix --allow-export-failures flag being ignored in batch mode for logs and metrics. (#47215) - `exporter/elasticsearch`: Default mapping mode is now derived from the first allowed mode if `otel` is not included (#47907) Previously, when `mapping::allowed_modes` did not include `otel`, | the exporter would panic with a nil pointer dereference because the default mapping mode was always set to `otel` | regardless of the allowed modes. - `exporter/prometheus_remote_write`: Fix 5xx responses being incorrectly classified as `error_permanent="true"` on `otelcol_exporter_send_failed_metric_points_total` (#48431) - `exporter/sentry`: Validate organization and project slugs and URL-escape them when constructing Sentry API request paths. (#1) The exporter previously interpolated the configured `org_slug` and the runtime-derived project slug (from `service.name`) into Sentry API URL paths without validation or escaping. - `extension/azure_encoding`: Map PIM event properties for Administrative Activity Logs (#47566) Azure PIM (Privileged Identity Management) events share the Administrative category with standard audit events but carry a different properties payload. All PIM-specific fields were silently dropped. This change adds explicit mappings for all known PIM fields: generic Azure concepts use cloud.account.id and azure.{tenant,resource}.* attributes, while PIM-specific fields use azure.pim.*. CallerInfo is projected to flat per-identity attributes (azure.pim.caller.upn, azure.pim.caller.object_id, azure.pim.caller.username, ...) keyed by the lowercased snake_case identity type. - `extension/text_encoding`: Fix text encoding log unmarshalling for large messages when no unmarshaling separator is configured. (#48696) - `pkg/datadog`: Use context available in function. (#48744) - `pkg/stanza`: Fix EVT_HANDLE leak in Windows Event Log receiver when no checkpoint has been persisted (#47194) On a fresh start (no persisted checkpoint), Subscription stored a copy of the Bookmark struct whose EVT_HANDLE was allocated separately and never closed. The fix removes the bookmark field from Subscription entirely; RPC_S_INVALID_BOUND recovery is now handled by Input.readWithRetry, which has direct access to the Input's bookmark. - `processor/resource_detection`: Remove outdated warning about GKE host.name not being available with Workload Identity (#48876) - `processor/tail_sampling`: span-ingest: Clean up storage and memory for implicit unsampled traces after decision wait (#48874) - `receiver/awss3`: Strip the `.zst` suffix from the object key after zstd decompression so files written by `awss3exporter` with `compression: zstd` (e.g. `foo.binpb.zst`) are correctly parsed instead of being dropped as "Unsupported file format". (#47802) - `receiver/host_metrics`: Fix double-counting of CPU guest/guest_nice time, Linux already includes guest time within the user/nice fields (#48024) - `receiver/mysql`: Aligned db.query.text extraction in MySQL sample query collection with top query collection for consistent query representation. (#48708) Along with change, the query plan hash will now be generated based on the digest text for MySQL versions < 8 and MariaDB. - `receiver/mysql`: Fix `USE` and `EXPLAIN FORMAT=json` in `explainQuery` to execute on the same database connection, ensuring the schema context set by `USE` is visible to the subsequent `EXPLAIN`. (#48170) Previously, `USE` and `EXPLAIN` were issued on the connection pool without pinning, so they could land on different connections. Both statements now run on the same `*sql.Conn` acquired via `db.Conn(ctx)`. - `receiver/otelarrow`: Fix admission control bypass for requests with metadata but no data points (#45152) The receiver was bypassing admission control for requests with zero data points (spans/logs/metrics), even when such requests contained significant metadata. This allowed potential memory exhaustion by sending large volumes of resource and scope metadata without actual telemetry data. - `receiver/prometheus_remote_write`: Fix exemplars for counters with multiple label-set variants being attached to the wrong datapoint. (#48674) ## v0.153.0 ### 🛑 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 conventions. Routing is per envelope, so CloudWatch payloads aggregating multiple log groups (e.g. from Firehose) are dispatched correctly. Envelopes that match no stream fall back to the default subscription-filter behavior. - `pkg/stanza`: Respect the "SynchronousLogEmitter" feature gate in container parser operator. (#47828) The container parser operator now respects the `stanza.synchronousLogEmitter` feature gate, using the synchronous log emitter when enabled to prevent possible data loss. Enabling the feature gate disables batching within the container parser. - `processor/cardinality_guardian`: Add core processor logic, HLL sharding, enforcement modes, and inline spatial reaggregation to cardinalityguardianprocessor. (#47368) - `processor/drain`: Add snapshot persistence via storage extension to save and restore the Drain tree across restarts. (#48075) New config fields: `storage` (ID of a storage extension) and `save_interval` (periodic snapshot interval). With shared storage, periodic saves allow new instances in a scaled deployment to inherit a trained tree. - `processor/gen_ai_normalizer`: Rename component type from `genainormalizer` to `gen_ai_normalizer`. (#46069) - `processor/gen_ai_normalizer`: Add the `openllmetry` source for normalizing OpenLLMetry (Traceloop) GenAI attributes. (#46069) - `processor/gen_ai_normalizer`: Implement attribute and value normalization for the OpenInference source. (#46069) - `processor/k8s_attributes`: Improve k8s.cronjob.name extraction (#44831) Improve CronJob name extraction to use the Job informer when already running. Otherwise use heuristic to match the Job name's and check if the last 8-digits are a valid timestamp closely matching the pod creation time (24h window). - `processor/log_dedup`: Support OTTL path-context names (e.g. `log.attributes["foo"]`, `resource.attributes["bar"]`) in the `conditions` field. (#48266) 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. - `processor/schema`: Promote schema processor from development to alpha stability and add to contrib distribution (#47428) - `processor/schema`: Add migration mode to preserve original attributes alongside renamed ones during schema version changes (#47420) - `processor/schema`: Add optional storage extension support to persist fetched schema files across collector restarts (#48222) - `processor/tail_sampling`: Support OTTL path-context names (e.g. `span.attributes["foo"]`, `resource.attributes["bar"]`, `spanevent.name`) in the `ottl_condition` policy. (#48330) 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. - `processor/tail_sampling`: Switch the `rate_limiting` policy to a token bucket and add `burst_capacity` to allow short bursts of traffic above the sustained spans-per-second rate. (#48226) If `burst_capacity` is not set, it defaults to 2x `spans_per_second`, mirroring the `bytes_limiting` policy. Existing configurations will see slightly different behavior: the bucket starts with a default burst of 2x `spans_per_second` tokens. A trace whose span count equals `spans_per_second` can now be sampled (the previous strict `<` comparison meant `spans_per_second: 1` would never sample). Set `burst_capacity` explicitly to match the previous per-second cap if needed. - `provider/s3`: Add support for Amazon S3-compatible services (e.g. MinIO) using path-style endpoints and insecure HTTP URIs. (#47595) - Hosts with non-Amazon DNS suffixes are now treated as path-style endpoints (`s3://host/bucket/key`) instead of virtual-hosted-style. - `receiver/awscloudwatch`: Add metrics support to the AWS CloudWatch receiver. (#47330) - `receiver/file_log`: Improves file-reading efficiency by evicting previously read data from the OS page cache. (#48273) Clears the cache on Linux; acts as a no-op on unsupported platforms. - `receiver/host_metrics`: Warn and disable process.handles at startup on platforms where it is not supported, instead of logging an error every scrape cycle. (#47095) process.handles is only supported on Windows. Previously, enabling it on other platforms would spam "only supported on Windows" errors on every scrape cycle for every process. The factory now checks for this at construction, logs a single warning, and disables the metric so the hot path is never exercised. - `receiver/host_metrics`: Warn and disable process.paging.faults at startup on platforms where it is not supported, instead of logging an error every scrape cycle. (#47095) process.paging.faults is only supported on Linux. Previously, enabling it on other platforms would spam "not implemented" errors on every scrape cycle for every process. The factory now checks for this at construction, logs a single warning, and disables the metric so the hot path is never exercised. - `receiver/host_metrics`: Warn and disable process.context_switches at startup on platforms where it is not supported, instead of logging an error every scrape cycle. (#47095) process.context_switches is only supported on Linux. Previously, enabling it on other platforms would spam "not implemented" errors on every scrape cycle for every process. The factory now checks for this at construction, logs a single warning, and disables the metric so the hot path is never exercised. - `receiver/host_metrics`: Warn and disable process.signals_pending at startup on platforms where it is not supported, instead of logging an error every scrape cycle. (#47095) process.signals_pending is only supported on Linux (via /proc//limits). Previously, enabling it on other platforms would spam "not implemented" errors on every scrape cycle for every process. The factory now checks for this at construction, logs a single warning, and disables the metric so the hot path is never exercised. - `receiver/http_check`: Enables dynamic metric reaggregation in the HTTP Check receiver. This does not break existing configuration files. (#46358) - `receiver/k8s_objects`: Add top-level `interval` field as a fallback default pull interval for all pull-mode objects. (#48452) When `interval` is set at the top-level `k8s_objects` config, it applies to all pull-mode objects that do not set their own per-resource `interval`. The resolution order is: per-resource `interval` → top-level `interval` → built-in default (1h). Watch-mode objects are unaffected. Existing configurations continue to work without change. - `receiver/kubelet_stats`: Add optional k8s.container.ephemeral_storage.usage metric to kubeletstats receiver. (#47601) - `receiver/kubelet_stats`: Enables dynamic metric reaggregation capability (#46363) - `receiver/ntp`: Enable scraper reaggregation for the NTP receiver (#46370) - `receiver/oracledb`: Add new attributes to db.server.query_sample event for enhanced session monitoring (#48216) Add 4 new attributes to the db.server.query_sample event: oracledb.query.wait_time, oracledb.query.started, oracledb.session.started, and oracledb.session.duration. Timestamps are in UTC ISO 8601 format. These attributes enable better monitoring of query wait times, execution timing, and session lifecycle. - `receiver/oracledb`: Adds blocking session and lock attributes to `db.server.query_sample` events for Oracle blocking session detection. Blocking attributes are always emitted (empty string / 0 when not blocked). (#48143) New attributes under oracledb.blocking.*: oracledb.blocking.blocker.sid, oracledb.blocking.blocker.root_sid, oracledb.blocking.blocker.state, oracledb.blocking.start_time, oracledb.blocking.wait_duration, oracledb.blocking.lock.type, oracledb.blocking.lock.mode, oracledb.blocking.object.owner, oracledb.blocking.object.name. oracledb.blocking.start_time provides an estimated UTC timestamp (RFC3339) of when blocking began. Filters to S.TYPE = 'USER' to exclude SYS/background sessions. Idle blockers (INACTIVE sessions holding locks) are captured. All blocking attributes are always present on every db.server.query_sample event; empty string / 0 values indicate no active blocking. - `receiver/oracledb`: Add operational metrics for data dictionary hit ratio, recycle bin size, and storage usage (#47303) Add 4 new opt-in metrics (disabled by default, stability: development): oracledb.data_dictionary.hit_ratio, oracledb.recycle_bin.limit, oracledb.storage.usage, and oracledb.storage.utilization. - `receiver/prometheus_remote_write`: Performance improvements while processing remote write requests. (#47850) - `receiver/saphana`: Enable the re-aggregation feature for the SAP HANA receiver. (#46378) - `receiver/sqlserver`: Add `sqlserver.query.last_started` and `db.namespace` attributes to `db.server.top_query` events. (#48217) The `db.server.top_query` log records now include: - `sqlserver.query.last_started`: ISO 8601 timestamp of when the query last started executing. - `db.namespace`: the database name, populated via `DB_NAME(st.dbid)` in the underlying SQL query. - `receiver/vcenter`: Add max_query_metrics option to batch QueryPerf requests, preventing vCenter resource exhaustion in large deployments. (#47941) - `receiver/windows_event_log`: Add `event_driven_scraping` config option (#48235) The new `event_driven_scraping` config option enables the event-driven scraping model on the windows event log input (and the windowseventlog receiver) without requiring the `stanza.windows.eventDrivenScraping` feature gate. Event-driven scraping is enabled when either the config option or the feature gate is set. This configuration option should be treated as experimental until the feature gate has been promoted from alpha stability. - `receiver/windowsservice`: Advancement of windows service receiver from development to alpha (#48176) ### 🧰 Bug fixes 🧰 - `connector/service_graph`: Fix client-side exponential histograms being emitted with a zero timestamp, causing backends like Grafana Cloud Mimir to reject them. (#48049) collectClientLatencyMetrics omitted SetTimestamp on the exponential-histogram data point, so the zero-value timestamp leaked through. The server-side function and the client-side explicit-bucket branch were already correct. - `exporter/datadog`: Honor tls.insecure_skip_verify for logs flowing through datadogexporter (#48523) - `exporter/datadog`: Fix percentile aggregations collapsing to 0 for OTLP explicit-bucket histograms whose first non-empty bucket is (0, B]. (#48478) Affects the default boundary set used by Micrometer's OTLP registry and many OTel SDKs (`[0, 5, 10, 25, 50, 75, 100, 250, …]`). With high-cardinality tagging and short delta intervals, per-bucket counts of 1 or 2 made the zero-bin leak dominate, collapsing `p50…p99` aggregations to 0. `avg`, `sum`, `min`, `max`, and `count` were not affected. - `extension/sumologic`: Make metadata update process async to prevent collector startup failure when metadata endpoint is unavailable (e.g. Windows service starting before network initialization). (#48450) - `pkg/translator/splunk`: Propagate the OTLP log record `EventName` field into the Splunk HEC event under the configured `otel_to_hec_fields/name` key (default `otel.log.name`). (#48048) - `processor/k8s_attributes`: Preserve an upstream-set container.image.tags resource attribute when processor.k8sattributes.EmitV1K8sConventions is enabled, matching the behavior of container.image.tag and container.image.repo_digests. (#45869) - `processor/k8s_attributes`: Re-enable otelcol.k8s.pod.association metric with low-cardinality pod_identifier attribute. The attribute now encodes the association source type/name (e.g. "connection", "resource_attribute/k8s.pod.ip") rather than actual pod identifier values, preventing unbounded metric time series growth. (#47669) - `processor/schema`: Enforces that all prefetched schemas are completed before starting. (#48258) - `receiver/azure_blob`: Delete blobs only upon successful processing (#48211) Blobs that fail to be processed will now remain in the container and will be retried on the next poll. Users with consistently failing pipelines may see container growth or duplicate emissions on retry. - `receiver/azure_monitor`: fix(azuremonitorreceiver): prevent duplicate sample timestamps in batch scraper (#47938) - `receiver/cloudflare`: Preserve array-typed Cloudflare log fields as OTLP attributes instead of dropping them. (#46716) - `receiver/iis`: The IIS receiver was failing to start when a disabled metric was not present in the system (#48609) The IIS receiver was attempting to create watchers for all metrics, even those that were disabled. This was causing the receiver to fail to start if any of the disabled metrics were not present in the system, which is a valid scenario for some of the IIS metrics. Now, the receiver will only attempt to create watchers for enabled metrics, so it should start successfully as long as all enabled metrics are present in the system. - `receiver/mysql`: Exclude collector's own queries from Query Sample collection to prevent feedback loop. (#47904) Adds a /* otel-collector-ignore */ comment prefix to the Query Sample SQL template and filters it out via a NOT LIKE clause on statement.sql_text. - `receiver/oracledb`: Exclude the collector's own monitoring queries from Query Sample collection using native session ID filtering. (#47366) Uses native session evaluation (`AND S.SID != SYS_CONTEXT('USERENV', 'SID')`) to filter the collector's active queries from `V$SESSION`. This bypasses Go connection pool limitations and avoids the performance overhead of text-matching on `VARCHAR2` or `CLOB` fields. Top Query collection is no longer filtered, so collector-originated statements can still appear there for troubleshooting. - `receiver/podman_stats`: Fix incorrect network I/O metric recording (#48313) The podman receiver was incorrectly recording network I/O metrics, with the received bytes and transmitted bytes swapped. This fix corrects the recording of these metrics to ensure accurate telemetry data is collected. - `receiver/prometheus_remote_write`: Fix `otelcol_receiver_accepted_metric_points` reporting resource count instead of data point count. (#48306) - `receiver/prometheus_remote_write`: Fix broken trace propagation to downstream pipeline components. (#48548) - `receiver/prometheus_remote_write`: Properly handle NaN native histograms, and drop points associated with the native histogram overflow buckets. (#47728) - `receiver/sqlserver`: Exclude collector's own queries from Query Sample collection to prevent feedback loop. (#47332) Adds a /* otel-collector */ comment prefix to the Query Sample SQL template and filters it out via a WHERE clause on sys.dm_exec_sql_text. Also excludes the current session via @@SPID. Top Query collection is intentionally left unfiltered so users can see the monitoring cost. - `receiver/syslog`: Support days with leading zeros in RFC 3164 syslogs (#47665) - `receiver/yang_grpc`: Fix setting metric attributes from context bag. (#48568) - `scraper/zookeeper`: Fix zk_avg_latency metric being silently dropped on Zookeeper 3.7+ where the value is reported as a float. (#47320) ## v0.152.0 ### 🛑 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.skipped - otelcol_processor_schema_traces.skipped - otelcol_processor_schema_cache.hits - otelcol_processor_schema_cache.misses The skip counters increment when a scope has no schema URL at either the scope or resource level, making silent pass-throughs observable. The cache counters track effectiveness of the in-memory schema cache in CacheableProvider. - `receiver/awsfirehose`: awsfirehose receiver now attempts gzip decompression for Firehose records before decoding. (#46463) - `receiver/azure_event_hub`: Expose the Prefetch option for Azure Event Hub receiver (#48038) - `receiver/couchdb`: Enables dynamic metric reaggregation in the CouchDB receiver. This does not break existing configuration files. (#46351) - `receiver/googlecloudmonitoring`: Allow overriding default endpoint for googlecloudmonitoringreceiver (#47984) Adds an endpoint property which overrides the default monitoring.googleapis.com:443 endpoint. This is needed when targeting non-standard universe domains (e.g. S3NS: https://docs.cloud.google.com/sovereign-controls-by-partners/docs/data-boundaries/france-data-boundary-s3ns) - `receiver/k8s_cluster`: Enable the re-aggregation feature for the k8s_cluster receiver (#46361) - `receiver/k8s_events`: Simplified RBAC example in README to only include required `events` resource permission. (#48192) A namespace-scoped Role can also be used when the receiver is configured with specific namespaces. - `receiver/kafka`: Add support for custom consumer-group partition-assignment strategies via extensions that implement `kgo.GroupBalancer`. Set `group_rebalance_strategy` to the component ID of a registered extension to use a custom balancer. (#48096) The four built-in strategies (`range`, `roundrobin`, `sticky`, `cooperative-sticky`) continue to work unchanged. Any other value for `group_rebalance_strategy` is now resolved as an extension component ID at runtime. - `receiver/kafka`: Cache OTel metric attribute sets in broker hook callbacks to reduce per-read allocations (#47395) `OnBrokerRead` previously rebuilt attribute sets on every call. The computed `MeasurementOption` is now cached per (nodeID, outcome) key and evicted on broker disconnect. Growth is bounded by 2 × number-of-brokers. - `receiver/kubelet_stats`: Add optional system container metrics (cpu.time, cpu.usage, memory.working_set) to kubeletstats receiver. (#3531) - `receiver/memcached`: Enables dynamic metric reaggregation in the Memcached receiver. This does not break existing configuration files. (#46364) - `receiver/mysql`: Added 'mysql.query_plan' to query sample records collected (#47413) - `receiver/mysql`: Fix the query hash generation for MySQL queries when the query is not explainable. (#48059) - `receiver/nsxt`: Enables dynamic metric reaggregation in the NSX-T receiver. This does not break existing configuration files. (#46369) - `receiver/prometheus_remote_write`: Add debug logging when dropping histograms with invalid schema values (#48027) - `receiver/sqlserver`: Adds idle blocking sessions to `db.server.query_sample` by appending sleeping blocker rows (with `sqlserver.command=IDLE_BLOCKER`) when blocker session IDs are missing from active requests. (#47120) Idle blocker enrichment is best-effort: a targeted secondary idle-session query runs only for missing blocker session IDs, and failures are logged as warnings without failing the scrape. ### 🧰 Bug fixes 🧰 - `connector/service_graph`: Fix PR 47971 not add WithDeprecatedTypeAlias option in NewFactory() (#47971) - `exporter/elasticsearch`: Return permanent errors for non-retryable HTTP responses to prevent unnecessary upstream retries. (#47870) - `exporter/kafka`: Fix collector hanging indefinitely on shutdown when the Kafka broker is unreachable (#48140) Re-enables the exporterhelper timeout sender (previously disabled with a zero timeout) so that each send attempt is bounded by the configured timeout (default 5s). The per-attempt context is now passed through to ProduceSync, allowing in-flight sends to unblock when the broker is unreachable. FranzSyncProducer.Close also cancels the kgo client context before calling client.Close, ensuring shutdown completes promptly. - `extension/health_check`: Fix deadlock when the collector run context is cancelled while the healthcheck extension is present. (#47591) - `extension/healthcheckv2`: Fix deadlock when the collector run context is cancelled while the healthcheck extension is present. (#47591) - `extension/opamp`: Decorrelate `service.instance.id` and OpAMP `instance_uid` (#46495) Previously: - the `service.instance.id` reported in the AgentDescription was based on the OpAMP instance UID - the instance UID was typically set based on the `service.instance.id` from the Collector resource attributes - it could be overridden using the `instance_uid` configuration of the OpAMP extension This meant that the reported `service.instance.id` did not always match the Collector resource attributes, which is a problem for correlation, and that server implementations got used to the typical case of `service.instance.id` and `instance_uid` matching, despite there being no guarantee of this. Now: - the reported value of `service.instance.id` always matches the Collector resource attributes - the instance UID is either taken from the `instance_uid` configuration or generated randomly. This means that the two values can never be expected to match, unless both configurations are explicitly set to the same value. That is what the OpAMP supervisor does, which means its behavior is unaffected. - `extension/sumologic`: Fix variable shadowing and formatting issues in tests. (#46602) - `processor/k8s_attributes`: Fix a data race when reading the `kube-system` namespace from the client cache to populate the `k8s.cluster.uid` attribute. (#47910) The `ClusterUID` rule in `extractPodAttributes` accessed the shared `Namespaces` map without acquiring the client's read lock, which could race with writes from the namespace informer. The access now goes through the locked `GetNamespace` helper. - `processor/k8s_attributes`: Fix container.image.tags config check (#47113) - `processor/tail_sampling`: Fix sampling inconsistencies when using `span-ingest` sampling strategy (#47476) 1. Drop policies were not working if the initial batch did not contain a span matching the drop policy. 2. If max_spans or upper_threshold_ms were respectively set on span_count or latency policies they may not have been respected. - `receiver/awsxray`: support for fileystem sql urls (#47361) Support for parsing sql urls without a hostname. - `receiver/datadog`: Fix infinite memory growth in metrics translator by pruning stale streams that have not received data within the configured series_idle_timeout. (#45523) Previously, high cardinality tags would cause the receiver to retain state indefinitely, leading to OOM. - `receiver/faro`: Emit standard receiver telemetry (#48070) The receiver constructed an `ObsReport` but never invoked it, so standard metrics like `otelcol_receiver_accepted_log_records`, `otelcol_receiver_refused_log_records`, `otelcol_receiver_accepted_spans`, and `otelcol_receiver_refused_spans` were not emitted. The consume calls are now wrapped with `StartLogsOp`/`EndLogsOp` and `StartTracesOp`/`EndTracesOp` so the standard receiver metrics are reported. - `receiver/host_metrics`: Fix duplicate rootPath prefix in filesystem mountpoint translation (#47083) When gopsutil falls back to reading /proc/self/mountinfo, the reported mountpoints already contain the rootPath prefix. This caused translateMountpoint to add it a second time, resulting in incorrect paths like /hostfs/hostfs/data. - `receiver/mysql`: Strip leading SQL comments before EXPLAIN check so queries prefixed with block or line comments are correctly identified as explainable. (#46587) ## v0.151.0 ### 🛑 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 connections to the K8s API Server. - `processor/schema`: Make CacheableProvider cooldown and retry limit configurable via `cache_cooldown` and `cache_retry_limit`. (#47761) - `processor/spanpruning`: Add cumulative histogram bucket support for latency distribution on aggregated summary spans (#47277) - `processor/tail_sampling`: Add distributed tracing instrumentation to `tailsamplingprocessor` to provide visibility into trace processing behavior and policy evaluation (#43931) Adds trace spans for key operations: - `tailsampling.ConsumeTraces`: Tracks incoming traces/spans count - `tailsampling.samplingPolicyOnTick`: Records batch processing metrics and policy evaluation results - `processor/transform`: Added extract_percentile_metric function to Transform processor for extracting percentiles as gauge metrics from histograms. (#44316) - `receiver/awslambda`: Add multi-format S3 log routing via the new `encodings` field in the S3 receiver configuration. (#46458) The new `encodings` list field enables a single Lambda deployment to route S3 objects to different decoders based on their key prefix. - `receiver/awss3`: add a flag to the s3 receiver to skip objects previously tagged as ingested. (#47396) - `receiver/chrony`: Enables dynamic metric reaggregation in the Chrony receiver. This does not break existing configuration files. (#46350) - `receiver/chrony`: Add file_mount_path config option for cross-namespace Unix datagram socket communication (#46833) When the collector and chronyd run in separate containers with different network namespaces, Go's default abstract socket autobind fails because abstract sockets are namespace-scoped. The new file_mount_path option uses a directory on a shared volume to bind a random client socket, allowing chronyd to reply across namespaces. - `receiver/datadog`: Migrate semantic conventions to v1.40.0 (#47551) - `receiver/github`: Promote traces to `alpha` stability (#47894) - `receiver/github`: Add `job.check_run_id` deterministic spans via the `receiver.githubreceiver.UseCheckRunID` feature gate (#44856, #45157) Feature gate `receiver.githubreceiver.UseCheckRunID` derives job, step, and queue span IDs from the GitHub `check_run_id` instead of the workflow job name. This allows in-action telemetry tools to reproduce matching span IDs by leveraging `${{ job.check_run_id }}` and name exclusively instead of calling the GitHub REST API. Trace ID and root span ID are unchanged. Webhook payloads missing `workflow_job.id` are rejected while the gate is enabled; set the gate to disabled to accept them under the legacy scheme. - `receiver/googlecloudpubsub`: Add debug log of the pubsub message when an encoding error occurs. (#46662) When the configured encoder fails to decode a Pub/Sub message, a debug-level log is now emitted containing the message ID, attributes, and the underlying error. This log is emitted regardless of the `ignore_encoding_error` setting, making it easier to diagnose which messages are causing decoding failures. - `receiver/host_metrics`: Add AIX to the process scraper's supported-OS allowlist. The AIX-specific scraper implementation is added separately. (#47095) - `receiver/icmpcheckreceiver`: Enables dynamic metric reaggregation in the ICMP Check receiver. This does not break existing configuration files. (#46359) - `receiver/journald`: Log the full journalctl command which facilitates debugging. (#45619) - `receiver/k8s_cluster`: Add PersistentVolume and PersistentVolumeClaim metrics, entity events, and metadata support. (#47453) New metrics (all disabled by default): `k8s.persistentvolume.status.phase`, `k8s.persistentvolume.storage.capacity`, `k8s.persistentvolumeclaim.status.phase`, `k8s.persistentvolumeclaim.storage.request`, `k8s.persistentvolumeclaim.storage.capacity`. New entity types: `k8s.persistentvolume`, `k8s.persistentvolumeclaim`. - `receiver/k8s_events`: Add resource version persistence to the k8s_events receiver to prevent duplicate events on collector restart. (#47575) A new `storage` configuration option accepts a storage extension ID (e.g. `file_storage`). When configured, the receiver persists the latest resourceVersion after each watch event and resumes from it on restart, preventing duplicate events. The persisted resourceVersion is scoped per namespace, matching the behavior added to the k8sobjects receiver in #46543. - `receiver/k8s_events`: Expose reporting controller and reporting instance as part of kubernetes events (#45289) This change adds a reporting controller and reporting instance to the kubernetes events receiver. This allows for better monitoring and reporting of events collected by the receiver. - `receiver/k8s_objects`: When `storage` is configured, watch-mode objects automatically resume from the last seen resourceVersion across restarts, preventing event duplication. (#46543) - `receiver/mongodb_atlas`: Enables dynamic metric reaggregation in the MongoDB Atlas receiver. This does not break existing configuration files. (#46365) - `receiver/mysql`: Add MySQL <8 and MariaDB compatibility for query sample and top-query collection. The receiver now detects the server product and version at connect time and gates behavior accordingly. Changes include: (1) top-query collection uses a fallback template on MySQL <8 and MariaDB that omits `query_sample_text` (absent on those versions); (2) `client.port` and `network.peer.port` are now populated on MySQL 8.0.22+ via a lock-free join on `performance_schema.processlist`, and remain 0 on older MySQL and all MariaDB versions where this table is unavailable; (3) `mysql.events_waits_current.timer_wait` now uses a three-tier fallback — exact `TIMER_WAIT` for completed waits, a PS timer approximation for in-progress waits on MySQL 5.7+/8.0+, and `thread.processlist_time` (integer-second precision) as a universal fallback for MariaDB and older MySQL. (#47302) Supported products and versions: MySQL 5.7.3+, 8.0+; MariaDB 10.5.2+, 11.x. See COMPATIBILITY.md in the receiver directory for a full version × feature matrix. - `receiver/mysql`: Add `mysql.events_statements_current.timer_wait` attribute to `db.server.query_sample` events, exposing the elapsed execution time of the sampled statement in seconds. (#47529) On MariaDB and for in-flight MySQL statements where `TIMER_WAIT` is unavailable, `PROCESSLIST_TIME` is used as a fallback. - `receiver/nginx`: Enable the re-aggregation feature for the nginx receiver (#46368) - `receiver/osquery`: Promote the osquery receiver to alpha (#47498) - `receiver/prometheus_remote_write`: Translate prometheus metric unit names per opentelemetry spec. (#46984) - `receiver/prometheus_remote_write`: Add support for translating Prometheus `Info` and `StateSet` typed metrics to OTLP Non-Monotonic Sums. (#47727) - `receiver/prometheus_remote_write`: Handle all `otel_scope_*` prefixed labels per the Prometheus/OTLP compatibility spec. (#47726) `otel_scope_schema_url` is now set as the instrumentation scope schema URL, and other `otel_scope_` labels become scope attributes (with the `otel_scope_` prefix stripped), instead of being incorrectly added as metric data point attributes. - `receiver/receiver_creator`: Makes the default file_log config configurable on the receiver creator discovery feature. (#40769) - `receiver/redfish`: Enables dynamic metric reaggregation in the Redfish receiver. This does not break existing configuration files. (#46375) - `receiver/sqlquery`: Add `ignore_null_values` config option to suppress NULL value warning logs (#43985) - `receiver/sqlserver`: Enriches `db.server.query_sample` log records in the SQL Server receiver with wait-derived fields by adding `sqlserver.blocking.start_time`, `sqlserver.wait.resource.type`, `sqlserver.wait.resource.id`, and `sqlserver.lock.type`. (#47119) `sqlserver.blocking.start_time` is emitted only when `sqlserver.blocking_session_id` is positive; `sqlserver.wait.resource.type` and `sqlserver.wait.resource.id` are parsed from `wait_resource`; and `sqlserver.lock.type` maps lock waits to `shared`/`exclusive`. - `receiver/ssh_check`: Enables dynamic metric reaggregation in the SSH Check receiver. This does not break existing configuration files. (#46380) - `receiver/statsd`: Add `ignore_host` option to disable source IP-based aggregation (#45387) - `receiver/tcpcheck`: Enables dynamic metric reaggregation in the TCP Check receiver. This does not break existing configuration files. (#46382) - `receiver/tls_check`: Enables dynamic metric reaggregation in the TLS Check receiver. This does not break existing configuration files. (#46383) ### 🧰 Bug fixes 🧰 - `exporter/alibabacloud_logservice`: Bump aliyun-log-go-sdk to v0.1.100, fixing SA1019 lint warning from deprecated producer.InitProducer (#44363) Migrates to producer.NewProducer which returns an error, allowing initialization failures to propagate correctly. - `exporter/clickhouse`: Quote cluster_name in ON CLUSTER clause to support names with special characters (e.g. dashes), preventing schema creation failures. (#46946) - `exporter/datadog`: Fix the dual shipping issue for orchestrator explorer in the datadog exporter. (#47877) - `exporter/prometheus`: Drop reserved instrumentation scope attributes from Prometheus exporter labels to avoid conflicts with scope metadata labels. (#47924) - `exporter/prometheusremotewrite`: Scope attributes "name", "version", and "schema_url" are dropped to prevent conflicts with the scope's name, version, and schema url fields. (#47683) - `exporter/prometheusremotewrite`: Fix bug where non-monotonic sums are mapped to Prometheus counters instead of gauges. (#33661) - `exporter/prometheusremotewrite`: Respect the zero threshold of exponential histograms when set for PRW v2 (#33661) - `exporter/prometheusremotewrite`: Skip attributes with empty string values when converting OTLP metrics to Prometheus labels. (#47326) Attributes and resource attributes with empty string values are now excluded from Prometheus label conversion, preventing empty labels from being created. - `exporter/signalfx`: Fix incorrect `host_physical_cpus` and `host_cpu_cores` values reported on Linux (#47550) - `exporter/splunk_hec`: Fix HEC routing partitioning broken when the exporterhelper batcher is enabled (#47695) - `extension/azure_auth`: Fix server-side authentication bypass by validating bearer tokens as OIDC JWTs with a server-pinned issuer and audience. (#47823) Versions v0.124.0 through v0.150.0 accepted any bearer token that matched a token minted from the collector's own identity for a scope chosen by the client `Host` header, allowing authentication bypass and scope confusion. The receiver auth path now verifies the JWT signature against the issuer's JWKS and checks `iss`, `aud`, `exp`, and `nbf`. The audience is pinned from configuration and is never derived from request headers. Breaking change: using `azure_auth` under a receiver `auth:` block now requires the new `server.issuer_url` and `server.audience` settings. Exporter-only usage is unaffected. - `extension/azure_encoding`: Fix parsing of all App Service and Function App log categories when properties field is a stringified JSON string instead of an object. (#47539) Some Azure Event Hub sources emit the properties field as a JSON string rather than an object. This caused App Service log categories (AppLogs, AuditLogs, AuthenticationLogs, ConsoleLogs, HTTPLogs, IPSecAuditLogs, PlatformLogs, FileAuditLogs) to fall back to raw log storage, losing all semantic attributes. - `extension/bearertokenauth`: Replace custom file watching implementation with the shared credentialsfile helper, fixing defect with k8s secrets rotation (#46470, #45953) - `extension/google_cloud_logentry_encoding`: Add the deprecated name of the googlecloudlogentryencoding extension as a deprecated option to the factory. (#47663) This was one of several components renamed in v0.148.0. - `pkg/ottl`: Added validation for substring function to ensure start and length parameters do not exceed the target string length. (#47764) - `pkg/ottl`: Improve performance for decode function and fix ValueBytes decoding (#47685) - `pkg/ottl`: Fix `scope.schema_url` and `resource.schema_url` paths resolving to the same value in OTTL when evaluated by the `scope` context. Both paths now correctly return their independent schema URLs as defined in OTLP. (#47784) - `processor/k8s_attributes`: Fix steady memory growth caused by map bucket retention in high-churn clusters. (#47337) Compacts the pods map incrementally to avoid memory leaks. - `processor/k8s_attributes`: Fix service.name annotation not taking precedence over labels when otel_annotations is enabled. (#47534) Restored correct precedence order so that resource.opentelemetry.io/service.name annotation takes priority over app.kubernetes.io/name label, as documented in OTel semantic conventions. - `processor/schema`: Fix mutex held during HTTP schema fetch, serialising concurrent schema retrievals (#47633) The CacheableProvider held its mutex for the entire duration of HTTP schema fetches. Concurrent requests for uncached schemas would block on each other rather than fetching in parallel. The lock is now released before the HTTP call and re-acquired only to write the result to the cache and update internal state. - `processor/schema`: Skip uninitialised metrics (MetricTypeEmpty) instead of returning an unsupported metric type error (#47428) - `processor/schema`: Fix rate-limit reset in CacheableProvider allowing burst of calls after cooldown expires, and log prefetch errors instead of silently discarding them (#47428) - `processor/schema`: Fix panic on malformed schema span_events and inconsistent error handling across signal types (#47634) A panic in newSpanEventChangeList when a span_events entry had neither rename_events nor rename_attributes set has been replaced with a proper error return. Error handling across all signal types (logs, traces, metrics) is now consistent: any scope-level translation failure returns the error immediately rather than silently continuing. A context.Background() in processMetrics was also replaced with the pipeline context. - `processor/schema`: Fix upgrade path silently applying no changes due to fetching the incoming signal's schema file instead of the target schema file (#47427, #47632) When upgrading a signal to a newer target version, the processor was fetching the schema file at the incoming signal's URL. Because OTel schema files only contain history up to their own version, the translator found no applicable revisions and silently passed the signal through unchanged. The processor now fetches the target schema URL on the upgrade path, which contains the complete forward migration history. - `processor/spanpruning`: Avoid excessive memory usage on large and fragmented traces (#47771) - `processor/spanpruning`: Fix bug in span pruning where spans with the same name at different depths could become orphaned instead of deleted. (#47770) - `receiver/azure_monitor`: Fix StartTimestamp being greater than Timestamp in batch API path (#47705) - `receiver/cisco_os`: Add the deprecated name of the ciscoos extension as a deprecated option to the factory. (#47666) This was one of several components renamed in v0.148.0. - `receiver/datadog`: Fix invalid temporality and type combination for dd.internal.stats.payload metric by setting AggregationTemporality to Cumulative (#46937) The dd.internal.stats.payload metric is now correctly configured with AggregationTemporalityCumulative, which was previously missing and causing OTLP validation errors when exporting metrics. - `receiver/github`: Fix the enforcement of configured `required_headers` on incoming webhook requests. (#47854) - `receiver/github`: Add configurable retry with exponential backoff for transient GitHub API errors (429, 502, 503, 504, secondary rate limits) (#43388) - `receiver/gitlab`: Skip stages with an empty `StartedAt` timestamp (e.g. from early-failed pipelines where a stage was queued but never executed), preventing the "invalid startedAt timestamp: time is empty" error. (#45756) - `receiver/kafka`: Resume paused partitions after backoff delay and on reassignment after rebalance (#47118) When message_marking.after=true and message_marking.on_error=false, non-permanent processing errors (e.g. from memorylimiter) caused PauseFetchPartitions to be called but ResumeFetchPartitions was never called, leaving partitions paused forever. Partitions are now automatically resumed after the configured error_backoff.initial_interval delay when error_backoff is enabled. Additionally, partitions paused across rebalances are resumed via ResumeFetchPartitions in the assigned callback, since franz-go persists the pause state by design. - `receiver/mongodb_atlas`: Fix include_clusters/exclude_clusters filtering having no effect. (#47037) - `receiver/postgresql`: Refined the collector query to filter out null parameter entries, minimizing null-related warnings in receiver. (#47768) - `receiver/windows_event_log`: Support the deprecated name windowseventlog for the windows_event_log receiver. (#47773) This is a fix for a bug in the recent receiver rename in https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/47359 ## v0.150.0 ### 🛑 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..label.` to align with OTel semantic conventions (e.g. `k8s.pod.label.`, `k8s.node.label.`, `k8s.deployment.label.`, 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. - `exporter/datadog`: Promote `exporter.datadogexporter.DisableAllMetricRemapping` feature gate to beta. (#47212) - All metrics remappings are now handled by the Datadog backend. 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/). ### 🚩 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/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..label.` prefix from dimension property updates. (#47491) The k8s cluster receiver now emits Kubernetes resource labels in entity events with the `k8s..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_ingestion` flag to the s3 receiver so objects that have been processed can be identified (#46078) They will be tagged with `otel-collector:status=ingested`. Operators can use that tag to define bucket lifecycle policies. - `receiver/awss3`: add zstd decompression to the s3 receiver (#46854) - `receiver/cloudfoundry`: Migrate cloudfoundry.resourceAttributes.allow feature gate registration from manual code to metadata.yaml for mdatagen code generation (#46116) - `receiver/elasticsearch`: Enable dynamic attribute metric with attribute re-aggregation in configuration at runtime (#46353) - `receiver/filestats`: Enable re-aggregation and set requirement levels for attributes. (#46355) - `receiver/googlecloudpubsub`: Add flow control configuration (#44804) Add flow control configuration, giving advanced users more control over the parameters of the streaming pull control loop. - `receiver/k8s_cluster`: Emit entity references as part of metrics resources. (#41080) - `receiver/k8sobjects`: Add `kube_api_qps` and `kube_api_burst` config options to control Kubernetes API request rate limits and prevent client-side throttling when watching or polling many resources (#44484) The same fields are also available in `receiver/k8sevents` via the shared `internal/k8sconfig` package. Default values match the client-go defaults: `kube_api_qps=5`, `kube_api_burst=10`. - `receiver/receiver_creator`: add support for profiling signal for receiver creator (#46930) - `receiver/splunkenterprise`: Add custom search support to the Splunk Enterprise receiver (#47124) - `receiver/windows_event_log`: Add `discover_domain_controllers` config flag to automatically discover and collect Security events from Active Directory domain controllers based on feature gate domainControllers.autodiscovery. (#44156, #44423) When `discover_domain_controllers` in config and `domainControllers.autodiscovery` feature gate is set `true` , the receiver queries LDAP Root DSE to discover the root domain path, enumerates all domain controllers in the Active Directory forest, and creates receiver for each domain controller. Falls back to the currently joined DC if the root DN cannot be determined. ### 🧰 Bug fixes 🧰 - `exporter/awsemf`: Fix data races in getPusher and logPusher that cause nil pointer panics and out-of-order log events (#47126) - `exporter/awss3`: Use AWS SDK S3 types for StorageClass and ACL validation instead of hardcoded lists (#46825) The hardcoded list of valid S3 storage classes was missing GLACIER_IR, REDUCED_REDUNDANCY, and EXPRESS_ONEZONE. Replaced both StorageClass and ACL hardcoded validation maps with values from the AWS SDK s3types package to prevent this from going out of date again in the future. - `exporter/datadog`: Fix use-after-free bug causing corrupted quantile sketches when exporting ExponentialHistogram metrics with multiple attribute sets (#47338) When multiple ExponentialHistogram data points were converted to Datadog sketches in a single export call, the underlying sync.Pool backing array was shared across conversions. A second conversion would reuse and overwrite the first sketch's bin memory, producing non-monotonic bin keys and inflated percentile values. This is fixed by upgrading github.com/DataDog/datadog-agent/pkg/util/quantile to commit bfa4eff6c991, which deep-copies the bin slice before returning the sketch. - `exporter/elasticsearch`: Fix malformed JSON creation for numbers in exponential notation. (#47363) When rendering numbers in exponential notation the exporter JSON implementation always added a radix point (e.g. 1.0 not 1). The implementation had a buffer corruption bug where it was overriding part of the buffer leading to malformed and invalid JSON numbers being created. - `exporter/prometheus`: Fix Prometheus exporter default HTTP server behavior where keep-alives and server timeouts were not using the intended defaults. (#47173) This fixes default behavior where keep_alives_enabled was effectively false unless explicitly configured. - `exporter/prometheus`: Fix unbounded memory growth when metrics are no longer being scraped. (#41123) Expired metric families now get cleaned up even when no Prometheus scraper is actively collecting, preventing memory from growing indefinitely. - `extension/aws_logs_encoding`: Add `source_region` field (27th field) to S3 server access log parser and skip unknown future fields gracefully. (#47149) AWS added a `source_region` field to the S3 server access log format. The parser previously returned an error ("values in log line exceed the number of available fields") when it encountered log lines with more fields than defined. This fix: - Adds `source_region` as field index 26 mapped to `aws.s3.source_region`. - Makes the parser skip any fields beyond the known schema instead of failing, providing forward compatibility with future AWS S3 access log additions. - `pkg/stanza`: Fix severity parser to work with JSON parser with `parse_ints: true` (#47209) - `receiver/awss3`: Fix infinite loop and metric skew caused by SQS failing to parse and delete "s3:TestEvent" messages (#47045) - `receiver/vcenter`: Fixes a nil pointer dereference panic in recordVMStats when scraping metrics from VMs with missing performance counters (#46977) ## v0.149.0 ### 🛑 Breaking changes 🛑 - `exporter/elasticsearch`: Remove `host.os.type` encoding in ECS mode (#46900) Use [processor/elasticapmprocessor](https://github.com/elastic/opentelemetry-collector-components/tree/main/processor/elasticapmprocessor) v0.36.2 or later for `host.os.type` enrichment - `receiver/prometheus`: Remove the deprecated `report_extra_scrape_metrics` receiver configuration option and obsolete extra scrape metric feature gates. (#44181) `report_extra_scrape_metrics` is no longer accepted in `prometheusreceiver` configuration. Control extra scrape metrics through the PromConfig.ScrapeConfigs.ExtraScrapeMetrics setting instead. ### 🚩 Deprecations 🚩 - `receiver/awsfirehose`: Deprecate built-in unmarshalers (cwlogs, cwmetrics, otlp_v1) in favor of encoding extensions. (#45830) Use the aws_logs_encoding extension (format: cloudwatch) instead of cwlogs, and the awscloudwatchmetricstreams_encoding extension instead of cwmetrics (format: json) or otlp_v1 (format: opentelemetry1.0). - `receiver/file_log`: Rename `filelog` receiver to `file_log` with deprecated alias `filelog` (#45339) - `receiver/kafka`: Deprecate the built-in `azure_resource_logs` encoding in favour of `azureencodingextension`. (#46267) The built-in `azure_resource_logs` encoding does not support all timestamp formats emitted by Azure services (e.g. US-format timestamps from Azure Functions). Users should migrate to the [`azureencodingextension`](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extension/encoding/azureencodingextension), which provides full control over time formats and is actively maintained. ### 💡 Enhancements 💡 - `cmd/opampsupervisor`: Add configuration validation before applying remote config to prevent collector downtime (#41068) Validates collector configurations before applying them, preventing downtime from invalid remote configs. Disabled by default. Enable via `agent.validate_config: true`. May produce false positives when resources like ports are temporarily unavailable during validation. - `connector/datadog`: Document datadog connector is not supported in aix environments (#47010) Explicitly opt out of host metadata computation in datadog components to support AIX compilation target. - `connector/signal_to_metrics`: Add `keys_expression` support in `include_resource_attributes` and `attributes` for dynamic attribute key resolution at runtime (#46884) The `keys_expression` field allows specifying an OTTL value expression that resolves to a list of attribute keys at runtime. This enables dynamic resource attribute filtering based on runtime data such as client metadata. Exactly one of `key` or `keys_expression` must be set per entry. - `connector/signal_to_metrics`: Reduce per-signal allocations in the hot path by replacing attribute map allocation with a pooled hash-based ID check, and caching filtered resource attributes per metric definition within each resource batch. (#47197) - `connector/signal_to_metrics`: Pre-compute prefixed collector key to avoid a string allocation on every signal processed. (#47183) Pre-computing the collector key avoids a string allocation on every signal processed. - `exporter/datadog`: Document datadog exporter is not supported in aix environments (#47010) Explicitly opt out of host metadata computation in datadog components to support AIX compilation target. - `exporter/elasticsearch`: Add `histogram:raw` mapping hint to bypass midpoint approximation for histogram metrics (#47150) - `exporter/elasticsearch`: Cache metric attribute set per bulk session instead of recomputing it for every document (#47170) `syncBulkIndexerSession.Add()` was calling `getAttributesFromMetadataKeys` + `attribute.NewSet` + `metric.WithAttributeSet` on every document in the hot path. The attribute set is derived from the request context metadata, which is constant for the lifetime of a session, so it is now computed once in `StartSession` and reused across all `Add()` calls in that session. - `exporter/elasticsearch`: populate _doc_count field in ECS mapping mode (#46936) _doc_count is a special metadata field in Elasticsearch used when a document represents pre-aggregated data (like histograms or aggregate metrics). Currently, elasticsearchexporter only populates this field for otel mapping mode (native otel field structure). This change adds support for ECS mapping mode (native ECS field structure) so that we have consistent behavior for both mapping modes. - `exporter/elasticsearch`: Encode `require_data_stream` in Elasticsearch bulk action metadata instead of the bulk request query string. (#46970) This preserves existing endpoint query parameters while moving `require_data_stream` to the per-document action line expected by newer bulk workflows. Benchmarks show a stable ~27 bytes/item NDJSON payload overhead before compression. - `exporter/elasticsearch`: Improve performance of Elasticsearch exporter document serialisation (#47171) - `exporter/elasticsearch`: Add metric for docs retried because of request errors (#46215) - `exporter/kafka`: Cache OTel metric attribute sets in OnBrokerE2E hook to reduce per-export allocations (#47186) `OnBrokerE2E` previously rebuilt `attribute.NewSet` + `metric.WithAttributeSet` on every call. The set of distinct (nodeID, host, outcome) combinations is bounded by 2 × number-of-brokers, so the computed `MeasurementOption` is now cached per key. - `exporter/pulsar`: This component does not support aix/ppc64. (#47010) Make the exporter explicitly panic if used in aix/ppc64 environments. - `extension/datadog`: Document datadog extension is not supported in aix environments (#47010) Explicitly opt out of host metadata computation in datadog components to support AIX compilation target. - `extension/db_storage`: Make dbstorage work in AIX environments (#47010) sqlite support is offered via modernC, which doesn't support the AIX ppc64 compilation target. We carve out support for sqlite in AIX environments so contrib can compile for this compilation target. - `extension/health_check`: Add component event attributes to serialized output. (#43606) When `http.status.include_attributes` is enabled in the healthcheckv2 extension (with `use_v2: true`), users will see additional attributes in the status output. These attributes provide more context about component states, including details like error messages and affected components. For example: ```json { "healthy": false, "status": "error", "attributes": { "error_msg": "not enough permissions to read cpu data", "scrapers": ["cpu", "memory", "network"] } } ``` - `extension/healthcheckv2`: Add component event attributes to serialized output. (#43606) When `http.status.include_attributes` is enabled in the healthcheckv2 extension (with `use_v2: true`), users will see additional attributes in the status output. These attributes provide more context about component states, including details like error messages and affected components. For example: ```json { "healthy": false, "status": "error", "attributes": { "error_msg": "not enough permissions to read cpu data", "scrapers": ["cpu", "memory", "network"] } } ``` - `extension/sigv4auth`: Add support for External IDs when assuming roles in cross-account authentication scenarios (#44930) Added external_id field to the AssumeRole configuration, allowing users to specify an External ID when assuming roles for enhanced cross-account security. - `internal/datadog`: Do not compute host metadata in AIX environments (#47010) Explicitly opt out of host metadata computation in datadog components to support AIX compilation target. - `pkg/stanza`: Ensure router operator does not split batches of entries (#42393) - `pkg/stanza`: Parse all Windows Event XML fields into the log body, including RenderingInfo (with Culture, Channel, Provider, Task, Opcode, Keywords, Message), UserData, ProcessingErrorData, DebugData, and BinaryEventData. (#46943) Previously, RenderingInfo was only used to derive the top-level level/task/opcode/keywords/message fields. It is now also emitted as a top-level `rendering_info` key containing all fields including `culture`, `channel`, and `provider`. UserData (an alternative to EventData used by some providers) is now parsed into a `user_data` key. Rare schema elements ProcessingErrorData, DebugData, and BinaryEventData are also captured when present. - `processor/resourcedetection`: Added IBM Cloud VPC resource detector to the Resource Detection Processor (#46874) - `processor/resourcedetection`: Added IBM Cloud Classic resource detector to the Resource Detection Processor (#46874) - `processor/tail_sampling`: Add `sampling_strategy` config with `trace-complete` and `span-ingest` modes for tail sampling decision timing and evaluation behavior. (#46600) - `receiver/awslambda`: Enrich context with AWS Lambda receiver metadata for S3 logs (#47046) - `receiver/azure_event_hub`: Add support for Azure Event Hubs distributed processing. This allows the receiver to automatically coordinate partition ownership and checkpointing across multiple collector instances via Azure Blob Storage. (#46595) - `receiver/docker_stats`: Add TLS configuration support for connecting to the Docker daemon over HTTPS with client and server certificates. (#33557) A new optional `tls` configuration block is available in `docker_stats` receiver config (and the shared `internal/docker` package). When omitted the connection remains insecure (plain HTTP or Unix socket), preserving existing behavior. When provided it supports the standard `configtls.ClientConfig` fields: `ca_file`, `cert_file`, `key_file`, `insecure_skip_verify`, `min_version`, and `max_version`. A warning is now emitted when a plain `tcp://` or `http://` endpoint is used without TLS, reflecting Docker's deprecation of unauthenticated TCP connections since Docker v26.0 (see https://docs.docker.com/engine/deprecated/#unauthenticated-tcp-connections). - `receiver/docker_stats`: Add "stream_stats" config option to maintain a persistent Docker stats stream per container instead of opening a new connection on every scrape cycle. (#46493) When `stream_stats: true` is set, each container maintains a persistent open Docker stats stream instead of opening and closing a new connection on every scrape cycle. The scraper reads from the cached latest value, which reduces connection overhead. - `receiver/expvar`: Enable the re-aggregation feature for the expvar receiver (#45396) - `receiver/file_log`: Add `max_log_size_behavior` config option to control oversized log entry behavior (#44371) The new `max_log_size_behavior` setting controls what happens when a log entry exceeds `max_log_size`. - `split` (default): Splits oversized log entries into multiple log entries. This is the existing behavior. - `truncate`: Truncates oversized log entries and drops the remainder, emitting only a single truncated log entry. - `receiver/hostmetrics`: Enable re-aggregation for system scraper (#46624) Enabled the reaggregation feature gate for the system scraper. - `receiver/hostmetrics`: Enable re-aggregation for process scraper (#46623) Enabled the reaggregation feature gate for the process scraper and set all metric attributes (context_switch_type, direction, paging_fault_type, state) with requirement_level recommended. - `receiver/mongodb`: Enable re-aggregation feature for mongodb receiver metrics (#46366) - `receiver/mongodb`: Add `scheme` configuration option to support `mongodb+srv` connections (#36011) The new `scheme` field allows connecting to MongoDB clusters using SRV DNS records (mongodb+srv protocol). Defaults to "mongodb" for backward compatibility. - `receiver/mysql`: Add `mysql.query_plan.hash` attribute to top query log records, enabling users to correlate top queries with their corresponding execution plans. (#46626) - `receiver/mysql`: Added `mysql.session.status` and `mysql.session.id` attributes to query samples. `mysql.session.status` indicates the session status (`waiting`, `running`, or `other`) at the time of the sample. `mysql.session.id` provides the unique session identifier. Both attributes provide additional context for understanding query performance and behavior. (#135350) - `receiver/mysql`: Add and tune obfuscation of sensitive properties in both V1 and V2 JSON query plans. (#46629, #46587) Configure and test obfuscation for V1 and V2 plans, including tests of queries retrieved from the performance schema that are truncated and cannot be obfuscated. The importance of obfuscation can be very context dependent; sensitive PII, banking, and authorization data may reside in the same database as less sensitive data, and it can be vital to ensure that what is expected to be obfuscated is always obfuscated. Significant additional testing has been added around query plan obfuscation to ensure that this is enforced and to provide assurance and reference to users about what specifically is obfuscated and what is not. - `receiver/mysql`: Propagates W3C TraceContext from MySQL session variables to query sample log records. When a MySQL session sets `@traceparent`, the receiver extracts the TraceID and SpanID and stamps them onto the corresponding `db.server.query_sample` log record, enabling correlation between application traces and query samples. (#46631) Only samples from sessions where `@traceparent` is set will have non-zero `traceId` and `spanId` fields on the log record. - `receiver/prometheus`: Add support for reading instrumentation scope attributes from `otel_scope_` labels while feature-gating deprecation of `otel_scope_info`. (#41502) Scope attributes are always extracted from `otel_scope_` labels on metrics. The `receiver.prometheusreceiver.IgnoreScopeInfoMetric` feature gate (alpha, disabled by default) controls only whether the legacy `otel_scope_info` metric is ignored for scope attribute extraction. When the gate is disabled, both mechanisms coexist to support migration. See the specification change for motivation: https://github.com/open-telemetry/opentelemetry-specification/pull/4505 - `receiver/pulsar`: This component does not support aix/ppc64. (#47010) Make the receiver explicitly panic if used in aix/ppc64 environments. - `receiver/skywalking`: Add feature gate `translator.skywalking.useStableSemconv` to update semantic conventions from v1.18.0 to v1.38.0 (#44796) A feature gate `translator.skywalking.useStableSemconv` has been added to control the migration. The gate is disabled by default (Alpha stage), so existing behavior is preserved. - `receiver/sqlquery`: Add clickhouse support to sqlquery (#47116) - `receiver/sqlquery`: Add `row_condition` to metric configuration for filtering result rows by column value (#45862) Enables extracting individual metrics from pivot-style result sets where each row represents a different metric (e.g. pgbouncer's `SHOW LISTS` command). When `row_condition` is configured on a metric, only rows where the specified column equals the specified value are used; all other rows are silently skipped. - `receiver/sqlserver`: Enable dynamic metric reaggregation in the SQL Server receiver. (#46379) - `receiver/yang_grpc`: Support collecting any metric by browsing the whole metrics tree (#47054) ### 🧰 Bug fixes 🧰 - `exporter/kafka`: Fixes the validation for `topic_from_metadata_key` to use partition keys. (#46994) - `exporter/kafka`: Fix topic routing for multi-resource batches when `topic_from_attribute` is set without resource-level partitioning (#46872) Previously, when a batch contained multiple resources with different topic attribute values, all data was silently sent to the topic of the first resource. Each resource is now correctly routed to its own topic. - `exporter/splunk_hec`: Fix timestamp precision in Splunk HEC exporter to preserve microseconds instead of truncating to milliseconds. (#47175) Timestamps were rounded to milliseconds before sending to Splunk HEC. The rounding has been removed, giving microsecond precision in the HEC `time` field. - `extension/bearertokenauth`: Redact bearer token from authentication error messages to prevent credential exposure in logs. (#46200) Previously, when a client presented an invalid bearer token, the full token value was included in the error message returned by the Authenticate method. This error could be propagated to log output, exposing sensitive credentials. The error message now omits the token value entirely. - `internal/aws`: Respect NO_PROXY/no_proxy environment variables when using env-based proxy configuration in awsutil (#46892) When no explicit proxy_address was configured, the HTTP client manually read HTTPS_PROXY and used http.ProxyURL which ignores NO_PROXY. Now delegates to http.ProxyFromEnvironment which correctly handles all proxy environment variables. - `processor/deltatorate`: Append "/s" to the unit of output datapoints to reflect the per-second rate. (#46841) - `processor/filter`: Fix validation of include and exclude severity configurations so they run independently of LogConditions. (#46883) - `receiver/datadog`: Propagate Datadog trace sampling priority to all spans translated from a trace chunk. (#45402) - `receiver/file_log`: Fix data corruption after file compression (#46105) After a log file is compressed (e.g. test.log → test.log.gz), the receiver configured with `compression: auto` will now correctly decompress the content and continue reading from where the plaintext file left off. - `receiver/file_log`: Fixes bug where File Log receiver did not read the last line of gzip compressed files. (#45572) - `receiver/hostmetrics`: Align HugePages metric instrument types with the semantic conventions by emitting page_size, reserved, and surplus as non-monotonic sums instead of gauges. (#42650) - `receiver/hostmetrics`: Handle nil PageFaultsStat in process scraper to prevent panic on zombie processes. (#47095) - `receiver/journald`: Fix emitting of historical entries on startup (#46556) When start_at is "end" (the default), pass --lines=0 to journalctl to suppress the 10 historical entries it emits by default in follow mode. - `receiver/k8s_events`: Exclude DELETED watch events to prevent duplicate event ingestion. (#47035) - `receiver/mysql`: Remove deprecated `information_schema.processlist` JOIN from query samples template; use `thread.processlist_host` instead. (#47041) - `receiver/oracledb`: Fix oracledbreceiver aborting entire scrape when a SQL query text fails to obfuscate (e.g. due to Oracle truncating a CLOB mid-string-literal). The affected entry is now skipped with a warning log and the rest of the scrape continues normally. (#47151) - `receiver/otelarrow`: Remove assumed positions of otel arrow root payload types (#46878) - `receiver/otelarrow`: Fix OTLP fallback handlers returning codes.Unknown instead of codes.Unavailable for pipeline errors, causing upstream exporters to permanently drop data instead of retrying. (#46182) - `receiver/pprof`: Fixes pprofreceiver file_scrapper appending resource profiles instead of merging them. (#46991) - `receiver/prometheus_remote_write`: Count target_info samples in PRW response stats (#47108) ## v0.148.0 ### 🛑 Breaking changes 🛑 - `all`: Removes the k8slog receiver after being unmaintained for 3 months (#46544) - `all`: Remove deprecated SAPM exporter (#46555) - `all`: Remove the datadogsemantics processor. (#46893) If you need help, please contact Datadog support: https://www.datadoghq.com/support. - `exporter/google_cloud_storage`: `reuse_if_exists` behavior changed: now checks bucket existence instead of attempting creation (#45971) Previously, `reuse_if_exists=true` would attempt bucket creation and fall back to reusing on conflict. Now, `reuse_if_exists=true` checks if bucket exists (via storage.buckets.get) and uses it, failing if it doesn't exist. Set to true when the service account lacks project-level bucket creation permissions but has bucket-level permissions. `reuse_if_exists=false` still attempts to create the bucket and fails if it already exists. - `exporter/kafka`: Remove deprecated top-level `topic` and `encoding` configuration fields (#46916) The top-level `topic` and `encoding` fields were deprecated in v0.124.0. Use the per-signal fields instead: `logs::topic`, `metrics::topic`, `traces::topic`, `profiles::topic`, and the corresponding `encoding` fields under each signal section. - `exporter/kafka`: Remove kafka-local batching partitioner wiring and require explicit `sending_queue::batch::partition::metadata_keys` configuration as a superset of `include_metadata_keys` when batching is enabled. (#46757) - `pkg/ottl`: `truncate_all` function now supports UTF-8 safe truncation (#36713) The default `truncate_all` behavior has changed. Truncation now respects UTF-8 character boundaries by default (new optional parameter `utf8_safe`, default: `true`), so results stay valid UTF-8 and may be slightly shorter than the limit. To keep the previous byte-level truncation behavior (e.g. for non-UTF-8 data or to avoid any behavior change), set `utf8_safe` to `false` in all `truncate_all` usages. - `receiver/awsecscontainermetrics`: Add ephemeral storage metrics and fix unit strings from Megabytes to MiB (#46414) Adds two new task-level gauge metrics: `ecs.task.ephemeral_storage.utilized` and `ecs.task.ephemeral_storage.reserved` (in MiB). These metrics are available on AWS Fargate Linux platform version 1.4.0+ and represent the shared ephemeral storage for the entire task. **Breaking change:** The unit string for `ecs.task.memory.utilized`, `ecs.task.memory.reserved`, `container.memory.utilized`, and `container.memory.reserved` has been corrected from `"Megabytes"` to `"MiB"`. The underlying values were already in MiB (computed via division by 1024*1024), but the unit label was incorrect. Users relying on the exact unit string (e.g. in metric filters or dashboards) will need to update accordingly. - `receiver/mysql`: Set the default collection of query_sample to false (#46902) - `receiver/postgresql`: Disable default collection of top_query and query_sample events. (#46843) This change is breaking because it disables the default collection of top_query and query_sample events. These events will need to be enabled manually if desired. - `receiver/redfish`: `system.host_name` and `base_url` resource attribute has been changed to `host.name` and `url.full` respectively. (#46236) - `receiver/windowseventlog`: Change event_data from an array of single-key maps to a flat map by default, making fields directly accessible via OTTL. The previous format is available by setting `event_data_format: array`. (#42565, #32952) Named elements become direct keys (e.g., body["event_data"]["ProcessId"]). Anonymous elements use numbered keys: param1, param2, etc. To preserve the previous array format, set event_data_format: array in the receiver configuration. ### 🚩 Deprecations 🚩 - `exporter/azure_blob`: Introduce new snake case compliant name `azure_blob` (#46722) - `exporter/google_cloud_storage`: Introduce new snake case compliant name `google_cloud_storage` (#46733) - `extension/aws_logs_encoding`: Introduce new snake case compliant name `aws_logs_encoding` (#46776) - `extension/azure_auth`: Introduce new snake case compliant name `azure_auth` (#46775) - `extension/cgroup_runtime`: Introduce new snake case compliant name `cgroup_runtime` (#46773) - `extension/google_cloud_logentry_encoding`: Introduce new snake case compliant name `google_cloud_logentry_encoding` (#46778) - `processor/metric_start_time`: Introduce new snake case compliant name `metric_start_time` (#46777) - `receiver/azure_blob`: Introduce new snake case compliant name `azure_blob` (#46721) - `receiver/azure_monitor`: Introduce new snake case compliant name `azure_monitor` (#46730) - `receiver/cisco_os`: Introduce new snake case compliant name `cisco_os` (#46948) - `receiver/macos_unified_logging`: Introduce new snake case compliant name `macos_unified_logging` (#46729) - `receiver/prometheus_remote_write`: Introduce new snake case compliant name `prometheus_remote_write` (#46726) - `receiver/yang_grpc`: Introduce new snake case compliant name `yang_grpc` (#46723) ### 🚀 New components 🚀 - `receiver/azure_functions`: Introduce new component to receive logs from Azure Functions (#43507) This change includes only overall structure, readme and configuration for the new component. ### 💡 Enhancements 💡 - `cmd/opampsupervisor`: Add configurable instance ID to Supervisor (#45596) - `connector/signal_to_metrics`: Add `sum.monotonic` property for improved counter handling (#45865) - `connector/spanmetrics`: Add support for W3C tracestate-based adjusted count in span metrics with stochastic rounding (#45539) The span metrics connector now supports extracting sampling information from W3C tracestate to generate extrapolated span metrics with adjusted counts. This enables accurate metric aggregation for sampled traces by computing stochastic-rounded adjusted counts based on the sampling threshold (ot.th field) in the tracestate. Key features include: - Stochastic rounding for fractional adjusted counts using integer-only operations - Single-entry cache for consecutive identical tracestates (4% overhead in benchmarks) - Support for mixed-mode services where some spans have tracestate and others don't - New sampling.method attribute to distinguish between adjusted and non-adjusted metrics - Histogram support for observing multiple events at once Performance characteristics: - ~4% overhead for traces with tracestate (3-span batch: 3684ns → 3829ns). Overhead will further diminish with larger batches. - Scales linearly with trace size (500 spans: 577μs → 581μs) - Zero allocations for common cases with caching enabled - `exporter/bmchelix`: Enrich metric names with datapoint attributes for unique identification in BMC Helix Operations Management (#46558) This feature is controlled by the `enrich_metric_with_attributes` configuration option (default: `true`). Set to `false` to disable enrichment and reduce metric cardinality. Normalization is applied to ensure BHOM compatibility: - `entityTypeId` and `entityName`: Invalid characters replaced with underscores (colons not allowed as they are used as separators in entityId) - `metricName`: Normalized to match pattern `[a-zA-Z_:.][a-zA-Z0-9_:.]*` - Label values: Commas replaced with whitespaces - `exporter/clickhouse`: Add per pipeline JSON support for ClickHouse exporter, deprecate JSON feature gate (#46553) Previously, the `clickhouse.json` feature gate was used to enable JSON for all ClickHouse exporter instances. This feature gate is now deprecated. Use the `json` config option instead, which allows per-pipeline control. - `exporter/elasticsearch`: Add per-document `dynamic_templates` for metrics in ECS mapping mode (#46499) Each bulk index action for ECS metrics now includes dynamic_templates so Elasticsearch can apply the correct mapping (e.g. histogram_metrics, summary_metrics, double_metrics) for the ECS mapping mode. The OTel mapping mode already sent dynamic_templates. - `exporter/elasticsearch`: Add `http.response.status_code` to failed document logs to allow for better filtering and error analysis. (#45829) - `exporter/elasticsearch`: Update ECS mode encoder to add conversions for `telemetry.sdk.language` and `telemetry.sdk.version` (#46690) Conversions map semconv attributes `telemetry.sdk.language`/`telemetry.sdk.version` to service.language.name/service.language.version' - `extension/aws_logs_encoding`: Adopt streaming for Network Firewall logs (#46214) - `extension/aws_logs_encoding`: Adopt streaming for CloudTrail signal (#46214) - `extension/aws_logs_encoding`: Adopt encoding extension streaming contract for WAF logs (#46214) - `extension/aws_logs_encoding`: Adopt streaming for S3 access logs (#46214) - `extension/aws_logs_encoding`: Adopt encoding extension streaming contract for VPC flow logs (#46214) - `extension/aws_logs_encoding`: Adopt encoding extension streaming contract for CloudWatch Logs subscription (#46214) - `extension/aws_logs_encoding`: Adopt streaming for ELB signal (#46214) - `extension/awscloudwatchmetricstreams_encoding`: Adopt encoding extension streaming contract for OpenTelemetry v1 formatted metrics (#46214) - `extension/azure_encoding`: Add encoding.format attribute to Azure logs to identify the log type (#44278) - `extension/azure_encoding`: Promote the Azure Encoding extension to Alpha stability. (#46886) - `extension/azure_encoding`: Add processing for Azure Metrics (#41725) - `extension/datadog`: Set `os.type` resource attribute if not already present for Fleet Automation metadata. (#46896) - `extension/headers_setter`: Add support for file-based credentials via `value_file` configuration option. Files are watched for changes and header values are automatically updated. (#46473) This is useful for credentials that are rotated, such as Kubernetes secrets. Example configuration: headers_setter: headers: - key: X-API-Key value_file: /var/secrets/api-key - `extension/oidc`: Add logging for failed authentication attempts with client IP and username. (#46482) - `internal/kafka`: This change adds support for authentication via OIDC to the Kafka client. (#41872) It provides an implementation of SASL/OAUTHBEARER for Kafka components, by integrating with auth extensions that provide OAuth2 tokens, such as oauth2clientauth. Token acqusition/refresh/exchange is controlled by auth extensions. To use this, your configuration would be something like: extensions: oauth2client: client_id_file: /path/to/client_id_file client_secret: /path/to/client_secret_file exporters: kafka: auth: sasl: mechanism: OAUTHBEARER oauthbearer_token_source: oauth2client - `pkg/azurelogs`: Remove semconv v1.28.0 and v1.34.0 dependencies, migrating to v1.38.0 via paired feature gates (#45033, #45034) Two new alpha feature gates control the migration: `pkg.translator.azurelogs.EmitV1LogConventions` emits stable attribute names (`code.function.name`, `code.file.path`, `eventName` per log record). `pkg.translator.azurelogs.DontEmitV0LogConventions` suppresses the old names (`code.function`, `code.filepath`, `event.name` on resource). Both gates default to off; enable `EmitV1LogConventions` first for a dual-emit migration window. - `pkg/coreinternal`: Add feature gates to migrate semconv v1.12.0 attributes to v1.38.0 equivalents in goldendataset (#45076) The following attribute keys from `go.opentelemetry.io/otel/semconv/v1.12.0` can now be migrated to their `v1.38.0` equivalents using feature gates (both default to disabled, preserving the old behavior): - `net.host.ip` -> `network.local.address` (enable `internal.coreinternal.goldendataset.EmitV1NetworkConventions`) - `net.peer.ip` -> `network.peer.address` (enable `internal.coreinternal.goldendataset.EmitV1NetworkConventions`) - `http.host` -> `server.address` (enable `internal.coreinternal.goldendataset.EmitV1NetworkConventions`) - `http.server_name` -> `server.address` (enable `internal.coreinternal.goldendataset.EmitV1NetworkConventions`) To stop emitting the deprecated v1.12.0 attributes, also enable `internal.coreinternal.goldendataset.DontEmitV0NetworkConventions` (requires `internal.coreinternal.goldendataset.EmitV1NetworkConventions` to also be enabled). - `pkg/fileconsumer`: `filelog` receiver checkpoint storage now supports protobuf encoding behind a feature gate for improved performance and reduced storage usage (#43266) Added optional protobuf encoding for filelog checkpoint storage, providing ~7x faster decoding and 31% storage savings. Enable with feature gate: `--feature-gates=filelog.protobufCheckpointEncoding` The feature is in StageAlpha (disabled by default) and includes full backward compatibility with JSON checkpoints. - `pkg/ottl`: Improve unsupported type error diagnostics in the Len() OTTL function by including the runtime type in error messages. (#46476) - `pkg/stanza`: Implement `if` field support for the recombine operator so entries not matching the condition pass through unrecombined. (#46048) - `pkg/zipkin`: Add feature gates to migrate semconv v1.12.0 attributes to v1.38.0 equivalents (#45076) The following attribute keys from `go.opentelemetry.io/otel/semconv/v1.12.0` can now be migrated to their `v1.38.0` equivalents using feature gates (both default to disabled, preserving the old behavior): - `net.host.ip` -> `network.local.address` (enable `pkg.translator.zipkin.EmitV1NetworkConventions`) - `net.peer.ip` -> `network.peer.address` (enable `pkg.translator.zipkin.EmitV1NetworkConventions`) To stop emitting the deprecated v1.12.0 attributes, also enable `pkg.translator.zipkin.DontEmitV0NetworkConventions` (requires `pkg.translator.zipkin.EmitV1NetworkConventions` to also be enabled). - `processor/k8s_attributes`: Log warning in case deprecated attributes are enabled (#46932) - `processor/k8s_attributes`: Bump version of semconv to 1.40 (#46644) - `processor/redaction`: Document audit trail attributes emitted when `summary` is set to `debug` or `info` (#46648) Adds an Audit Trail section to the README describing the diagnostic attributes the processor appends to spans, log records, and metric datapoints, including a worked example. Also fixes the example output to omit zero-count attributes that are never emitted, and restores URL Sanitization and Span Name Sanitization as top-level README sections. - `receiver/aerospike`: Enable the re-aggregation feature for the aerospike receiver (#46347) - `receiver/awslambda`: Adopt encoding extension streaming for AWS Lambda receiver (#46608) - `receiver/awslambda`: Promote AWS Lambda receiver to Alpha stability. (#46888) - `receiver/cisco_os`: Add cisco_os receiver to the contrib distribution (#46948) - `receiver/cloudflare`: Add `max_request_body_size` config option. (#46630) - `receiver/docker_stats`: Enables dynamic metric reaggregation in the Docker Stats receiver. This does not break existing configuration files. (#45396) - `receiver/filelog`: Add `include_file_permissions` option (#46504) - `receiver/flinkmetrics`: Enable re-aggregation feature by classifying attributes with requirement_level and setting reaggregation_enabled to true (#46356) Attributes are classified as required when aggregating across them produces meaningless results (checkpoint, garbage_collector_name, record), and recommended when totals remain operationally meaningful (operator_name). - `receiver/github`: Enables dynamic metric reaggregation in the GitHub receiver. This does not break existing configuration files. (#46385) - `receiver/haproxy`: Add `haproxy.server.state` resource attribute to expose server status (UP, DOWN, MAINT, etc.) (#46799) The new resource attribute is disabled by default and can be enabled via configuration. - `receiver/hostmetrics`: Enable dynamic metric reaggregation for the cpu scraper in the hostmetrics receiver. (#46386) - `receiver/hostmetrics`: Enable re-aggregation feature for the memory scraper to support dynamic metric attribute configuration at runtime. (#46618) - `receiver/hostmetrics`: Enable re-aggregation feature for the load scraper by setting `reaggregation_enabled`. (#46617) - `receiver/hostmetrics`: Enable metric re-aggregation for paging scrapers. (#46386, #46621) - `receiver/hostmetrics`: Enables re-aggregation for nfs scraper (#46386, #46620) - `receiver/hostmetrics`: Enable re-aggregation feature for the filesystem scraper by setting `reaggregation_enabled` and adding `requirement_level` to attributes. (#46616) - `receiver/hostmetrics`: Enable re-aggregation for processes scraper (#46622) Enabled the reaggregation feature gate for the processes scraper and set the status attribute requirement level to recommended. - `receiver/hostmetrics`: Enable re-aggregation feature for the disk scraper by setting `reaggregation_enabled` and adding `requirement_level` to attributes. (#46615) - `receiver/hostmetrics`: Enable re-aggregation feature for the network scraper by setting `reaggregation_enabled` and adding `requirement_level` to attributes. (#46619) - `receiver/iis`: Enable re-aggregation and set requirement levels for attributes. (#46360) - `receiver/kafka`: add kafka.topic, kafka.partition, kafka.offset to client metadata (#45931) - `receiver/kafkametrics`: Enable re-aggregation feature for kafkametrics receiver to support dynamic metric attribute configuration at runtime. (#46362) - `receiver/mysql`: Enables dynamic metric reaggregation in the MySQL receiver. This does not break existing configuration files. (#45396) - `receiver/oracledb`: Add `oracledb.procedure_execution_count` attribute to top query events for stored procedure execution tracking (#46487) This value is derived from MAX(EXECUTIONS) across all SQL statements sharing the same PROGRAM_ID in V$SQL, providing an accurate procedure-level execution count even for multi-statement stored procedures. - `receiver/oracledb`: Add `oracledb.command_type` attribute to the Top-Query collection. (#46838) - `receiver/podman_stats`: Enable dynamic metric reaggregation in the Podman receiver. (#46372) - `receiver/postgresql`: Enables dynamic metric reaggregation in the PostgreSQL receiver. This does not break existing configuration files. (#45396) - `receiver/pprof`: promote to alpha (#46925) - `receiver/pprof`: Read pprof data from HTTP remote endpoints or the collector itself (#38260) - `receiver/prometheus`: Graduate `receiver.prometheusreceiver.RemoveReportExtraScrapeMetricsConfig` feature gate to stable; deprecate `receiver.prometheusreceiver.EnableReportExtraScrapeMetrics` feature gate (#44181) The `report_extra_scrape_metrics` configuration option is now fully ignored; remove it from your configuration to avoid crashes. The `receiver.prometheusreceiver.EnableReportExtraScrapeMetrics` feature gate is deprecated and will be removed in v0.148.0; use the `extra_scrape_metrics` Prometheus scrape configuration option instead. - `receiver/rabbitmq`: Enable dynamic metric reaggregation in the RabbitMQ receiver. (#46374) - `receiver/redis`: Enable dynamic metric reaggregation in the Redis receiver. (#46376) - `receiver/riak`: Enable re-aggregation and set requirement levels for attributes. (#46377) - `receiver/snowflake`: Bump Go Snowflake Driver to v2 (#46598) - `receiver/sqlquery`: Bump Go Snowflake Driver to v2 (#46598) - `receiver/sqlserver`: Add `sqlserver.procedure_execution_count` attribute to the Top-Query collection. (#46486) - `receiver/statsd`: Add counter_type configuration option to control how counter values are represented (int, float, or stochastic_int) (#45276) - `receiver/systemd`: Enable dynamic metric reaggregation in the systemd receiver. (#46381) - `receiver/tcplog`: Add default values for retry_on_failure and update the documentation (#41571) - `receiver/vcenter`: Enable re-aggregation feature for vcenter receiver metrics (#46384) - `receiver/windowseventlog`: Add SID resolution feature to automatically resolve Windows Security Identifiers to user and group names (#45875) Added new `resolve_sids` configuration option with configurable cache size and TTL. When enabled, Windows Security Identifiers (SIDs) in event logs are automatically resolved to human-readable names using the Windows LSA API. Includes support for well-known SIDs, domain users and groups, and high-performance LRU caching for improved throughput. ### 🧰 Bug fixes 🧰 - `exporter/elasticsearch`: Set `require_data_stream=true` for ECS mapping mode and improve guidance for Elasticsearch version compatibility. (#46632) - `exporter/elasticsearch`: Fix retry exponential backoff overflow handling edge case (#46178) The retry delay growth now guards against duration overflow while preserving exponential backoff with jitter, so retries cap correctly at the configured max interval even for large attempt counts. - `exporter/kafka`: Validate that `topic_from_metadata_key` is present in `include_metadata_keys` when configured, with clear config validation errors. (#46711) - `exporter/kafka`: Add `MergeCtx` to preserve `include_metadata_keys` when batching is enabled. (#46718) - `exporter/signalfx`: exporter/signalfxexporter: include inactive in memory total (#46474) - `extension/bearertokenauth`: Fix bearer token auth rejecting custom headers in HTTP requests unless specified in canonical form (#45697) - `extension/file_storage`: Fix nil pointer crash when bbolt reopen fails during on_rebound compaction (#46489) - `extension/google_cloud_logentry_encoding`: Fix incorrect snake_case conversion for keys containing numbers (e.g., "k8s" becoming "k8_s") in Google Cloud log entries. (#46571) - `internal/metadataproviders`: Fix HTTP response body leak in OpenShift metadata provider and add status code validation (#46921) Three methods in the OpenShift metadata provider (OpenShiftClusterVersion, Infrastructure, K8SClusterVersion) were not closing the HTTP response body after making requests. This leaked HTTP connections and file descriptors, which could exhaust the connection pool over time when periodic refresh is enabled. The fix adds defer resp.Body.Close() and validates the HTTP status code before attempting to decode the response. - `processor/resourcedetection`: Fix consul detector `token_file` setting the file path as the literal token value instead of configuring the consul SDK to read the file (#46745) When `token_file` was configured, the file path string was assigned to `api.Config.Token` instead of `api.Config.TokenFile`, causing the consul API client to use the path as the authentication token (always resulting in 403 Forbidden)." - `processor/resourcedetection`: Fix collector panic on shutdown when the same processor is used in multiple pipelines with refresh_interval enabled. (#46918) - `receiver/datadog`: Preserve original per-span service name when `_dd.base_service` overrides the resource-level service name, so the DD exporter can recover it on the DD-to-OTEL-to-DD roundtrip path. (#1909) - `receiver/mysql`: Fixed incorrect JOIN condition in querySample.tmpl that was comparing thread.thread_id to processlist.id instead of the correct foreign key thread.processlist_id. (#46548) The LEFT JOIN with information_schema.processlist was using an incorrect join condition that would fail to properly correlate rows between the performance_schema.threads and information_schema.processlist tables. The fix changes the join condition from `processlist.id = thread.thread_id` to `processlist.id = thread.processlist_id` to use the correct foreign key relationship. - `receiver/oracledb`: Fix to top_query reporting incorrect procedure execution count. (#46869) The procedure execution count is now calculated using MIN(EXECUTIONS) instead of MAX(EXECUTIONS) improving best effort accuracy. - `receiver/postgresql`: Fix EXPLAIN plan collection failing on DDL statements (GRANT, DROP, REVOKE, etc.) (#46274) PostgreSQL does not support EXPLAIN on DDL statements. The receiver now filters queries using a whitelist approach, only running EXPLAIN on supported DML statements (SELECT, INSERT, UPDATE, DELETE, WITH, MERGE, TABLE, VALUES). - `receiver/prometheus`: receiver/prometheusreceiver: return stable SeriesRef from AppendHistogram for correct per-series staleness tracking (#44528) - `receiver/prometheus`: Validate target allocator interval during configuration to prevent runtime panic when interval is set to 0 or a negative value. (#46700) Previously, setting `interval` to 0s or a negative value would cause a runtime panic when `time.NewTicker()` was called with an invalid duration. The configuration is now validated early to prevent this panic and provide a clear error message. - `receiver/sqlserver`: Fix to top_query reporting duplicate rows for a procedure that has more than one statement. (#46483) The dbQueryAndTextQuery.tmpl template joins the aggregated CTE rows back to sys.dm_exec_query_stats using only plan_handle. But plan_handle is not unique in that DMV, it identifies a plan, and a single plan can contain multiple statements (each with its own row in sys.dm_exec_query_stats, differentiated by statement_start_offset/statement_end_offset). As a result this is producing duplicate rows for a procedure that has more than one statement. - `receiver/sqlserver`: Fixed `host.name` resource attribute to be correctly extracted from `datasource` configuration when `server` is not set (#42355) When using the `datasource` configuration option, the `host.name` resource attribute will now be properly parsed from the datasource connection string instead of being left empty or using an incorrect value. - `receiver/sqlserver`: Add missing `host.name` for logs when using `datasource` configuration (#46740) - `receiver/windowseventlog`: Strip illegal XML 1.0 characters (e.g. U+0001) from event data before parsing to prevent parse failures on Sysmon Operational events. (#46435) Some Sysmon events embed control characters (e.g. U+0001) in fields such as FileVersion. Go's encoding/xml rejects these as illegal XML 1.0 characters, causing an error for every affected event. The characters are now silently stripped before parsing. ## v0.147.0 ### 🛑 Breaking changes 🛑 - `all`: Remove unmaintained receiver/bigip component (#46040) - `exporter/elasticsearch`: Ignore `mapping::mode` config option (#45246) The `mapping::mode` config option has already been deprecated and is now ignored. Instead, use the `X-Elastic-Mapping-Mode` client metadata key (via headers_setter extension) or the `elastic.mapping.mode` scope attribute to control the mapping mode per-request. See the README for migration instructions. - `extension/sumologic`: Migrate updateCollectorMetadata from feature gate to config parameter and enable by default (#46102) The `extension.sumologic.updateCollectorMetadata` feature gate has been replaced with an `update_metadata` configuration parameter. The feature is now enabled by default, eliminating the need for users to specify the `--feature-gates` flag. Users can control this behavior via the YAML configuration: ```yaml extensions: sumologic: update_metadata: true # default: true ``` - `processor/azuredetector`: Changed cloud platform value for Azure VM from `azure_vm` to `azure.vm` to align with OpenTelemetry semantic conventions v1.39.0. (#45030) - `processor/resourcedetection`: Remove feature gate processor.resourcedetection.removeGCPFaasID (#45808) - `processor/resourcedetection`: Changed cloud platform value for Azure EKS from `azure_eks` to `azure.eks` to align with OpenTelemetry semantic conventions v1.39.0. (#45030) - `receiver/kafka`: Remove deprecated topic and exclude_topic fields (#46232) - `receiver/mongodb`: Add service.instance.id resource attribute and move database from resource to db.namespace metric attribute in MongoDB receiver (#45506) The service.instance.id attribute is a deterministic UUID v5 derived from server address and port. The database attribute has been moved from a resource attribute to a metric-level attribute (db.namespace) on all per-database metrics, following OpenTelemetry semantic conventions. This produces a single resource per MongoDB server instead of one per database, fixing Prometheus batching compatibility. ### 🚩 Deprecations 🚩 - `processor/k8s_attributes`: Rename internal telemetry metrics to use dots instead of underscores (#45871) ### 💡 Enhancements 💡 - `connector/grafanacloud`: Make the default configuration of the Grafana Cloud Connector support Kubernetes deployments. (#45469) Add "k8S.node.uid" and "k8S.cluster.name" to the default set of resource attributes evaluated by the Grafana Cloud Connector. - `exporter/clickhouse`: Do not crash the exporter if it cannot inspect the table schemas (#46285) Previously setting `create_schema: false` would skip validating the actual connection on start. This was useful if you had unstable targets, as you could run the collector and let the sending queue/failover connector handle connection errors to ClickHouse. - `exporter/loadbalancing`: Support metrics routing by attributes in the loadbalancing exporter (#45675) - `exporter/prometheusremotewrite`: Add support for exporting InstrumentationScope attributes as Prometheus labels. This behavior can be disabled via the `disable_scope_info` configuration option. (#45266) - `exporter/signalfx`: Preserve 'k8s.service.' property names on the 'k8s.service.uid' dimension instead of converting them to 'kubernetes_service_' prefix. (#46291) - `extension/awscloudwatchmetricstreams_encoding`: Adopt encoding extension streaming contract for JSON formatted metrics (#46214) - `extension/awscloudwatchmetricstreams_encoding`: Adopt encoding extension streaming contract for AWS CloudWatch metrics extension (#46214) - `extension/awslogs_encoding`: Adopt encoding extension streaming contract for AWS Logs Extension encoding (#46214) - `extension/azure_encoding`: Add processing for Azure Traces (AppAvailabilityResults, AppDependencies and AppRequests) (#41725) - `extension/azure_encoding`: Add support for Administrative, Alert, Autoscale, Policy, Security, ServiceHealth, and ResourceHealth log categories. (#45699) - `extension/basicauth`: Add `username_file` and `password_file` options to client_auth config, enabling file-based credentials with live rotation via file watching. (#46227) When set, file-based credentials take precedence over inline values. Files are watched for changes using fsnotify, allowing credential rotation without restarting the collector. - `internal/docker`: Add Docker API version auto-negotiation when `api_version` is not specified in config (#44653) When `api_version` is empty or omitted, the Docker client now automatically negotiates the highest mutually supported API version with the daemon using `WithAPIVersionNegotiation()`. Existing configurations with an explicit `api_version` continue to work unchanged. Note: The previous default behavior pinned the API version to 1.44 when not specified. Now it auto-negotiates with the daemon, which may result in a different API version being used. - `pkg/ottl`: Add Base64Encode function to OTTL (#46071) - `pkg/ottl`: Added metadata access path to all OTTL contexts for accessing client request metadata (#33288) - `pkg/translator/pprof`: Ensure correct handling of default sample/profile in conversion. (#45976) - `processor/hetznerdetector`: Update semantic conventions to v1.39.0 and add support for cloud.platform in Hetzner detector (#45489) - `processor/k8s_attributes`: ReplicaSet handling now supports PartialObjectMetadata, reducing cold-start memory/time compared to typed informers. (#44407) In in-process cold-start benchmarks (no API server), PartialObjectMetadata reduced memory by ~57–59%, exact impact depends on cluster size and selectors. - `processor/oracleclouddetector`: Add Oracle `realm` attribute to Oracle Cloud resource detection processor (#44408) - `processor/redaction`: Add HMAC hash functions (`hmac-sha256` and `hmac-sha512`) for GDPR-compliant pseudonymization of sensitive data like IP addresses (#45715) HMAC functions provide rainbow table resistant hashing by using a secret key, making it impossible to reverse-engineer original values without the key. This enables true pseudonymization per GDPR Article 4(5) requirements while maintaining consistency for pattern analysis. Configure with `hash_function: hmac-sha256` (or `hmac-sha512`) and `hmac_key: "${env:REDACTION_SECRET_KEY}"`. - `processor/resourcedetection`: Added Tencent Cloud CVM resource detector to the Resource Detection Processor (#45779) - `processor/resourcedetection`: Add `tags_from_imds` config option to EC2 detector to control instance tag retrieval method (#46046) Introduces the `tags_from_imds` boolean field in the EC2 detector configuration. When set to `true`, instance tags are fetched via IMDS, which does not require any IAM permissions but requires `InstanceMetadataTags=enabled` on the instance. When set to `false` (default), tags are fetched via the EC2 `DescribeTags` API, which requires the `ec2:DescribeTags` IAM permission. This is the existing behavior and the default to avoid breaking changes. - `receiver/apache`: Enables dynamic metric reaggregation in the Apache receiver. This does not break existing configuration files. (#46348) - `receiver/azure_event_hub`: Promote the Azure Event Hub receiver to beta stability. (#41661) - `receiver/azureblob`: Enable the Azure Blob receiver to poll for new blobs when the Event Hub endpoint is not configured. (#45717) The Azure Blob receiver now supports a polling-based ingestion mode that is automatically enabled when no Event Hub endpoint is configured. Instead of relying on event-driven notifications, it periodically checks the storage container for new blobs to ingest. - `receiver/ciscoos`: Add multi-device configuration with global scraper settings and improved config validation (#42647) - `receiver/haproxy`: Enable dynamic metric reaggregation in the HAProxy receiver. (#46357) - `receiver/hostmetrics`: Reduce excessive float64 precision in memory, disk, and filesystem scrapers (#46141) - `receiver/k8s_cluster`: Define entities and relationships for Kubernetes resources in metadata.yaml. (#41080) - `receiver/oracledb`: Enable dynamic metric reaggregation in the OracleDB receiver. (#46371) - `receiver/postgresql`: Added support for configuring custom collection intervals for Top Query records (#45614) - `receiver/prometheusremotewrite`: Add support for extracting exemplars from Prometheus counters (#46145) - `receiver/splunkenterprise`: Enables dynamic metric reaggregation in the Splunk Enterprise receiver. This does not break existing configuration files. (#45396) - `receiver/tlscheck`: Added support for JKS and PKCS12 keystore formats. (#41518) This enhancement allows users to utilize JKS and PKCS12 keystore formats for TLS configuration in the tlscheck receiver, providing greater flexibility in certificate management. ### 🧰 Bug fixes 🧰 - `exporter/loadbalancing`: Change default timeout for k8s resolver from 1s to 1m to reduce excessive Kubernetes API server load. (#33004) The previous 1s default caused watch connections to reconnect every second, generating big amount of requests. The new 1m default provides a big reduction in API load while maintaining reasonable endpoint discovery latency. The timeout remains configurable for users who need different behavior. - `exporter/prometheusremotewrite`: [exporter/prometheusremotewrite] Fix WAL wake-up race (#45288) - `exporter/sematext`: Add validation to require `region` and at least one `app_token` in configuration. (#39610) - `extension/oauth2client`: Make token refresh context-aware (#45917) The oauth2clientauth now implements its own HTTP and gRPC middleware, so the request context can be passed in and honoured when refreshing tokens. This allows for cancellation and timeouts to be respected, as well as propagation of trace context. - `internal/metadataproviders`: Fix Azure IMDS header value (#46281) Azure's IMDS endpoint is expecting the `Metadata` header to be `true`, not `True`, the latter causing 400s. - `pkg/fileconsumer`: Do not evaluate the include/exclude file patterns during component start (#45988) Previously, a synchronous glob walk of all matching files was performed during component start. This blocked the collector from reporting readiness, causing pods to remain in Not Ready state for extended periods when many files matched the configured glob patterns. The call was purely for logging a warning and the result was discarded. The first poll cycle already performs the same glob walk, so the duplicate call has been removed. The warning "no files match the configured criteria" is no longer logged. It is still logged at debug level on the first (and each subsequent) poll. - `pkg/translator/pprof`: fix attribute bug (#46336) - `pkg/translator/prometheusremotewrite`: Fixes an issue where zero_threshold was reset to the default value for exponential histograms. (#46108) - `processor/cumulativetodelta`: Fix memory blowup in exponential histogram delta conversion (#45927) - `processor/resourcedetection`: IRSA and Pod Identity tokens are checked to determine if running within an EKS cluster (#45866) - `processor/tail_sampling`: Properly remove trace id from its original batch when using `decision_wait_after_root_received` (#46004) The bug only causes the traces dropped too early metric to be incorrectly incremented. There is no functional change to what is sampled. - `receiver/awscloudwatch`: Use the oldest log timestamp as the next poll start time to prevent logs from being ignored (#41122) - `receiver/docker_stats`: Avoid cancelling docker stats request before it's done reading response (#34194) Resolves "context canceled" error while fetching docker stats - `receiver/oracledb`: Fix stored procedure name showing as "." and top queries appearing with zero execution count (#46438) Fixed procedure name concatenation in top query SQL to return NULL instead of "." when no stored procedure is associated with a query. Also changed top query filtering to only emit queries where the execution count has increased, preventing entries with zero count. - `receiver/splunkenterprise`: fixes a bug with how ad-hoc search based metrics were being recorded (#46126) ## v0.146.0 ### 🛑 Breaking changes 🛑 - `all`: Increase minimum Go version to 1.25 (#46000) - `exporter/elasticsearch`: Remove ecs mode log enrichment for `agent.name` and `agent.version` (#45849) The removed log enrichments are duplicate code that already exists in the `github.com/elastic/opentelemetry-collector-components/processor/elasticapmprocessor`. It is recommended to use the `github.com/elastic/opentelemetry-collector-components/processor/elasticapmprocessor` when using mapping mode `ecs` to ensure index documents contain all required Elastic fields to power the Kibana UI. - `processor/akamaidetector`: Update semantic conventions to v1.39.0 and use the convention for cloud.platform in Akamai detector (#45511) - `processor/k8s_attributes`: Introduce semantic conventions compliant feature gate pair for k8sattributes processor (#44693) - Added `processor.k8sattributes.EmitV1K8sConventions` feature gate to enable stable semantic convention attributes (singular form: `k8s..label.` and `k8s..annotation.`) - Added `processor.k8sattributes.DontEmitV0K8sConventions` feature gate to disable legacy non-compliant attributes (plural form: `k8s..labels.` and `k8s..annotations.`) - Both feature gates are in `alpha` stage and disabled by default - The processor now validates that legacy attributes cannot be disabled without enabling stable attributes - Deprecated `k8sattr.labelsAnnotationsSingular.allow` feature gate in favor of the new semconv-compliant gates (will be removed in v0.150.0) - During migration period, both legacy and stable attributes can coexist when `EmitV1K8sConventions` is enabled but `DontEmitV0K8sConventions` is not - `processor/resourcedetection`: Promote `processor.resourcedetection.propagateerrors` feature gate to Stable and is now always enabled (#44609) - `receiver/hostmetrics`: `process.context_switches` will now properly count context switches for all threads. (#36804) Previously, only the lead thread's context switches would be counter. We believe this was a bug, but are marking it as a breaking change since the values of these metrics may change drastically compared to previous expectations. However, the values you get now will be more accurate than before. - `receiver/kafkametrics`: `receiver.kafkametricsreceiver.UseFranzGo` feature gate is now in Beta stage and enabled by default (#44600) ### 🚩 Deprecations 🚩 - `connector/signal_to_metrics`: Rename `signaltometrics` connector to `signal_to_metrics` and add deprecated alias `signal_to_metrics` (#45551) - `exporter/alibabacloud_logservice`: Marking component unmaintained (#46029) - `processor/datadogsemantics`: Deprecate the `datadogsemantics` processor. (#46052) If you are using this component, please contact [Datadog support](https://www.datadoghq.com/support/). - `processor/k8s_attributes`: Rename `k8sattributes` processor to `k8s_attributes` processor and add deprecated alias `k8sattributes`. (#45894) - `receiver/kubeletstats`: The `GCEPersistentDisk`, `AWSElasticBlockStore`, and `Glusterfs` have been deprecated as these have been depreacted in k8s (#40477) K8s documentation for the three deprecated volume types is below: - GCEPersistentDisk: https://v1-32.docs.kubernetes.io/docs/concepts/storage/volumes/#gcepersistentdisk - AWSElasticBlockStore: https://v1-32.docs.kubernetes.io/docs/concepts/storage/volumes/#awselasticblockstore - Glusterfs: https://v1-32.docs.kubernetes.io/docs/concepts/storage/volumes/#glusterfs - `receiver/signalfx`: This receiver is deprecated. Please use the OTLP receiver instead (#46079) This component will be removed in a future release. - `receiver/wavefront`: Deprecate the wavefront receiver (#46087) There is no replacement for the wavefront receiver. Wavefront is EOL: https://support.broadcom.com/web/ecx/support-content-notification/-/external/content/release-announcements/0/25153 ### 🚀 New components 🚀 - `receiver/vcr`: First PR for new receiver (#42877) ### 💡 Enhancements 💡 - `cmd/golden`: Golden tool now returns all comparison errors with attempt numbers instead of only the last error (#45424) When multiple metric payloads fail validation, the golden tool now displays all errors with their attempt numbers, making it easier to debug test failures. Previously, only the last error was shown. - `connector/signal_to_metrics`: Add `error_mode` configuration to control OTTL evaluation error handling. Prevents single bad record from failing entire batch. (#38826, #45746) Adds three error modes: - `propagate` (default): Returns error, entire batch fails (backward compatible) - `ignore`: Logs error, skips bad record, continues processing valid records - `silent`: Skips bad record silently, continues processing valid records - `exporter/datadog`: Add new alpha feature gate 'exporter.datadogexporter.DisableAllMetricRemapping' to disable all metric remapping in the Datadog exporter. (#45943) The feature gate is marked as alpha pending changes in Datadog's backend. - `exporter/elasticsearch`: Update the ECS mode metrics data point hasher to exclude the `elasticsearch.mapping.hints` attribute (#45887) Excluding the `elasticsearch.mapping.hints` attribute will allow similar metric data points to be grouped together and indexed to the same document. - `exporter/elasticsearch`: Add `traces_dynamic_id` config to dynamically set document IDs for traces and span events (#43649) Adds `traces_dynamic_id` configuration option to allow setting document IDs based on span and span event attributes using the `elasticsearch.document_id` attribute. This prevents duplicate documents from being created when the same span is sent multiple times, similar to the existing `logs_dynamic_id` feature. Disabled by default. - `exporter/file`: Add support for rotation when group_by is enabled in file exporter (#43143) - `exporter/googlecloudstorage`: Add compression support for Google Cloud Storage exporter (#45337) The Google Cloud Storage exporter now supports compression of log data before uploading to GCS. Supported compression algorithms: `gzip` and `zstd`. - `exporter/kafka`: Add `conn_idle_timeout` configuration option to control when idle connections are not reused and may be closed. (#45321) Defaults to 9 minutes. - `extension/awscloudwatchmetricstreams_encoding`: Add support for extracting percentile statistics (p50, p90, p99, etc.) from CloudWatch Metric Streams JSON format (#45855) The JSON unmarshaler now extracts percentile fields from CloudWatch Metric Streams data and converts them to OpenTelemetry Summary quantiles. This enables feature parity with the embedded cwmetricstream unmarshaler in awsfirehosereceiver. - `extension/awslogs_encoding`: Support CloudWatch Logs extracted fields (`@aws.account`, `@aws.region`) for centralized logging (#45792) CloudWatch Logs subscription filter unmarshaler now supports extracted fields (`@aws.account` and `@aws.region`) that are automatically added when using CloudWatch Logs centralization and enabling `emitSystemFields` in subscription filters. This enhancement enables proper resource attribution in OpenTelemetry when processing logs from multiple AWS accounts and regions. Logs with different extracted field values are automatically grouped into separate ResourceLogs for proper semantic convention mapping: - `@aws.account` maps to `cloud.account.id` - `@aws.region` maps to `cloud.region` - `extension/awslogs_encoding`: Handle multiple concatenated JSON objects for AWS CloudWatch Log subscription (#46120) - `extension/azureauth`: Add and implement new method `Token(context.Context) (*oauth2.Token, error)`. (#45064) - `extension/encoding`: Introduce streaming support for encoding extensions (#38780) - `extension/oidc`: Adds `public_keys_file` to the provider config. When set, keys are loaded from a local JWKS file instead of using remote discovery. (#44899) The file is watched for changes and keys are automatically reloaded on update. Supported key types are RSA, ECDSA, and ED25519. - `pkg/ottl`: Add `IsInCIDR` function to check if IP belongs to given list of CIDR (#42215) - `pkg/sampling`: Optimize OTel tracestate parsing by replacing regex validation with hand-written validator (10-21x faster). (#45539) - `pkg/sampling`: Replace regex-based W3C tracestate validation with hand-written validator for 30-65x performance improvement (#45734) - `pkg/stanza`: Ensure filter operator does not split batches of entries (#42391) - `processor/filter`: Introduces inferred context conditions for filtering (#37904) Introduces three new top-level config fields [metric_conditions, log_conditions, trace_conditions]. A user can supply OTTL conditions for each without needing to supply context. - `processor/k8s_attributes`: Added `container.image.tags` resource attribute with feature gate controls according to OpenTelemetry semantic conventions. (#44589) - `processor/lookup`: Add lookup processor implementation and YAML source (#41816) Adds the core lookup processor implementation for enriching telemetry data using external lookups. Includes YAML file source for loading lookup tables from local files. - `processor/vultrdetector`: Update semantic conventions to v1.39.0 and add support for cloud.platform in Vultr detector (#45512) - `receiver/datadog`: Add support for handling the /api/v0.2/stats endpoint to receive and process APM trace stats payloads from the Datadog Agent. (#45778) The Datadog Receiver can now process APM trace stats payloads sent by the Datadog Agent via the /api/v0.2/stats endpoint. The handler correctly processes gzipped msgpack payloads, decodes them into StatsPayload, translates them into OpenTelemetry-compatible metrics, and forwards them to the configured metrics consumer. This enables the complete APM metrics flow: Application → Datadog SDK → Datadog Agent → OpenTelemetry Collector → OTEL Backends. - `receiver/hostmetrics`: Add optional `system.memory.linux.shared` metric (#32712) This metric reports shared memory usage, including tmpfs filesystems, System V shared memory, and POSIX shared memory. Currently only available on Linux systems due to platform-specific data availability. This corresponds to the `Shmem` field in `/proc/meminfo`. - `receiver/k8s_cluster`: Add opt-in service metrics derived from k8s Service and EndpointSlice API (#45620) New metrics (disabled by default): - `k8s.service.endpoint.count`: Number of endpoints by condition (ready, serving, terminating), address type, and zone - `k8s.service.load_balancer.ingress.count`: Number of load balancer ingress points assigned to the service New resource attributes: - `k8s.service.name`: The k8s service name - `k8s.service.uid`: The k8s service uid - `k8s.service.type`: The k8s service type - `k8s.service.traffic_distribution`: The service's traffic routing preference - `k8s.service.publish_not_ready_addresses`: Whether the service publishes endpoints before pods are ready - `receiver/kafka`: Add `conn_idle_timeout` configuration option to control when idle connections are not reused and may be closed. (#45321) Defaults to 9 minutes. - `receiver/mongodb`: Add support for auth_mechanism, auth_source, and auth_mechanism_properties configuration options (#40686) Users can now specify the authentication mechanism (e.g., SCRAM-SHA-256, GSSAPI, MONGODB-AWS), auth source database, and auth mechanism properties when connecting to MongoDB instances. This is particularly useful for MongoDB servers that require specific authentication mechanisms. For example, GSSAPI (Kerberos) may require SERVICE_NAME, and MONGODB-AWS may require AWS_SESSION_TOKEN when using temporary AWS credentials. - `receiver/pprof`: Implement the functionality of transforming pprof to OTel Profiles (#45411) - `receiver/prometheusremotewrite`: Improved performance when parsing Remote Write v2 requests. (#45623) - `receiver/prometheusremotewrite`: Add exemplar support to the Prometheus Remote Write receiver (#44983) - `receiver/redfish`: Change `system.host_name` and `base_url` as resource attributes. (#45470) - `receiver/sqlquery`: Add support for `initial_delay` in logs collection. (#29671) Log collection now applies `initial_delay` (previously ignored). If `initial_delay` is not set, the first log collection now occurs at 1 second, instead of occurring after `collection_interval` time has passed. - `receiver/sqlserver`: Add the `sqlserver.procedure_id` and `sqlserver.procedure_name` attributes to TopQuery and Sample Events (#44656) Refined query and reported events to include stored procedure information when applicable. Additionally, the maximum number of active queries reported by default has been increased from 200 to 250 to account for record deaggregation introduced by this change, ensuring the effective limit remains consistent with the previous 200-query baseline. - `receiver/statsd`: Discard StatsD metrics with NaN or infinite values to prevent invalid data from entering the metric pipeline (#44288) - `receiver/syslog`: Add facility_text attribute to syslog parser output (#45641) The syslog parser now outputs a facility_text attribute containing the human-readable facility name (e.g., "auth", "kern", "local0") in addition to the existing numeric facility attribute. ### 🧰 Bug fixes 🧰 - `exporter/datadog`: OTLP logs now support array type attributes. Arrays containing primitive values or nested maps are now correctly preserved in the log output. (#45708) - `exporter/datadog`: Fix data race in the Datadog exporter which could cause a crash with error message "concurrent map iteration and map write". (#46051) Specifically, when processing spans with the `datadog.host.use_as_metadata` attribute. - `exporter/elasticsearch`: Fix ECS mode to properly protect known schema fields from getting `.value` suffix when conflicting with nested attributes (#37211) Previously, when ECS mode was enabled and attributes like `process.executable.name` conflicted with the known ECS field `process.executable`, the deduplication logic would incorrectly add a `.value` suffix to the known field, resulting in `process.executable.value`. This fix ensures protected ECS fields remain unchanged and conflicting nested attributes are properly ignored. - `exporter/opensearch`: Fix `sending_queue` not using default values for `num_consumers` and `queue_size` when only `batch` is configured (#45016) - `exporter/syslog`: Update the timestamp when using the RFC 3164 formatter to space-pad the day of month for single digit days (#46115) - `extension/awslogs_encoding`: Fix duplicate resource attributes in subscription filter unmarshaler (#45792) The `aws.log.group.names` and `aws.log.stream.names` resource attributes were incorrectly being set twice: first as array values, then immediately overwritten as string values. This fix removes the duplicate string assignments, ensuring the attributes are correctly set only as arrays per OpenTelemetry semantic conventions. - `extension/oauth2client`: Fix oauth2clientauth client-credentials grant type (#45786) - `extension/text_encoding`: Fix text encoding extension to not split large messages when no separator is configured. (#45845) - `pkg/stanza`: Fix recombine operator logging errors at ERROR level when `on_error` is set to quiet mode (#42646) - `pkg/translator/prometheusremotewrite`: Fix export of Instrumentation Scope attributes as Prometheus labels. (#45912) Instrumentation Scope attributes (name, version, and other attributes) are now correctly translated to Prometheus labels with the `otel_scope_` prefix. - `pkg/xk8stest`: Fix IPv6 gateway handling in HostEndpoint to avoid invalid address formatting in e2e tests (#46082) Prefer IPv4 gateways when resolving the Docker kind network gateway. Fall back to bracketed IPv6 if no IPv4 gateway is found, so that appending :port produces a valid address (e.g. [::1]:4317). - `processor/k8s_attributes`: Fix concurrent map access panic by cloning pod labels and annotations before extraction. (#46112) - `processor/k8s_attributes`: Allow key_regex to work without tag_name by using the default tag name format (#45719) When using key_regex with capturing groups but without specifying tag_name, the processor now correctly uses the default tag name format (e.g., k8s.pod.labels.) instead of producing empty tag names. - `processor/redaction`: Improve database sanitization with system-aware obfuscation, span name sanitization, and URL path parameter redaction. (#44229) - Database sanitization now validates span kind (CLIENT/SERVER/INTERNAL ) and requires db.system.name/db.system attribute for traces/metrics - Implemented span name obfuscation for database operations based on db.system - Added URL path parameter sanitization for span names with configurable pattern matching - Improved query validation database sanitizers - Fix issue ensuring no spans with `...` name can be generated due to enabling multiple sanitizers - If something went wrong during span name sanitization, original span name is used - `receiver/azure_event_hub`: Fixes a bug where the receiver would stop receiving messages after a parsing error. (#45898) - `receiver/faro`: Updates Faroreceiver to return HTTP 202 Accepted status code upon successful data ingestion to comply with the OpenAPI specification. (#45648) - `receiver/fluentforward`: handle uint64 to int64 overflow by changing to string (#45252) FluentD supports record entries with uint64 types. OpenTelemetry log attributes only support int64 and no uint64. The old solution would overflow with uint64 values greater than `math.MaxInt64` and result in negative attribute values. This fix changes that behaviour by storing only those large values as string attributes instead. - `receiver/googlecloudpubsub`: Fix compression detection when both encoding and compression are set in the config (#45810) - `receiver/mongodb`: Check if metrics are enabled before collecting them to prevent errors when metrics are disabled. (#41465) - `receiver/postgresql`: Updated the default value for top_n_query (200) to match with other db receivers (#45612) ## v0.145.0 ### 🛑 Breaking changes 🛑 - `exporter/sentry`: Create a new version of the sentryexporter that supports dynamic routing to Sentry projects (#45051) - `pkg/translator/azure`: Updated OpenTelemetry semantic conversion to the latest version 1.38.0 in azure pkg. (#44801) - `processor/resourcedetection`: Promote `processor.resourcedetection.removeGCPFaasID` feature gate to Stable and is now always enabled (#45797) The faas.id attribute is replaced by the faas.instance attribute. - `receiver/azure_event_hub`: Upgrade `receiver.azureeventhubreceiver.UseAzeventhubs` feature gate to stable. (#45527) - `receiver/github`: Make step spans siblings of queue-job span under job span instead of children of queue-job span (#42623) This change improves a workflow job trace structure by making step spans siblings of the queue-job span under the job span. Reflecting that queuing and step execution are sequential phases rather than nested operations which more accurately aligns with the specification. - `receiver/kafka`: Replace `StartTracesOp`/`EndTracesOp` with `StartProfilesOp`/`EndProfilesOp` in profilesHandler. (#45601) The span name generated by the profiles receiver now uses the `ProfilesReceived` suffix instead of `TraceDataReceived`. - `receiver/prometheus`: Promote `receiver.prometheusreceiver.RemoveReportExtraScrapeMetricsConfig` feature gate to beta (#44181) The `report_extra_scrape_metrics` configuration option is now ignored by default. Extra scrape metrics are instead controlled by the `receiver.prometheusreceiver.EnableReportExtraScrapeMetrics` feature gate and the Prometheus upstream configuration available in `promconfig` (either globally or per-scrape config). ### 🚩 Deprecations 🚩 - `receiver/azure_event_hub`: Rename `azureeventhub` receiver to `azure_event_hub` and add deprecated alias `azureeventhub` (#45637) - `receiver/jmx`: Deprecate the jmxreceiver to avoid running Java subprocesses in the Collector and prevent container-based deployments from requiring a Java runtime. (#45740) - `receiver/mongodb_atlas`: Rename `mongodbatlas` receiver to `mongodb_atlas` and add deprecated alias `mongodbatlas` (#45652) ### 💡 Enhancements 💡 - `connector/routing`: Add move/copy support in routing connector (#45061) - `exporter/googlecloudstorage`: Add support for exporting traces to Google Cloud Storage (#44945) - `exporter/signalfx`: Add support for processing entity events from logs pipeline to send as dimension property updates (#27890) The SignalFx exporter now supports processing entity events (e.g., from k8s_cluster receiver) received via the logs pipeline and converting them to dimension property updates. This provides an alternative to the metadata_exporters option and enables consistent metadata handling. This feature is behind the `exporter.signalfx.consumeEntityEvents` feature gate (disabled by default). - `extension/awslogs_encoding`: Add support for processing CloudTrail logs from CloudWatch subscription filters (#45354) - `extension/awslogs_encoding`: Allow using aws.user_identity prefix for UserIdentity bound attributes. This is enabled with extension.awslogsencoding.cloudtrail.enable.user.identity.prefix feature gate ID. (#43638) - `extension/azure_encoding`: Add processing for Application Gateway, Azure Messaging (ServiceBus and EventHub), Data Factory, FunctionApps and BlobStorage logs records (#41725) - `extension/oauth2client`: Support jwt-bearer grant-type (RFC7523) (#44314) - `extension/opamp`: This change adds support for the OpAMP AcceptsRestartCommand capability. The implementation for this capability sends a SIGHUP signal to restart the collector which will reload the config on startup. (#45056) This functionality is behind a feature gate (extension.opampextension.RemoteRestarts) that defaults disabled. The SIGHUP signal does not work on windows systems, but might later be updated to use the SIGUSR2 signal. - `internal/coreinternal`: Improve performance of hashing function for attraction package. (#45211) - `pkg/fileconsumer`: Open files on Windows with FILE_SHARE_DELETE mode (#32037) - `pkg/ottl`: Added generic path to get/set span flags in OTTL trace span context. (#34739) - `pkg/ottl`: Introducing `delete_index` function for deleting items from an existing array (#43098) - `pkg/stanza`: Ensure recombine operator does not split batches of entries (#42392) - `pkg/stanza`: Ensure container operator does not split batches of entries (#42389) - `pkg/stanza`: Ensure syslog operator does not split batches of entries (#42394) - `pkg/translator/azurelogs`: Add support for all Activity Logs categories (#44871) Includes support for the Alert, Autoscale, Policy, Recommendation, Security, ServiceHealth, and ResourceHealth categories. - `processor/k8sattributes`: Added processor-specific observability metrics: `otelcol.k8s.pod.association` with `status`, `pod_identifier`, and `otelcol.signal` attributes (#44587) - `processor/resourcedetection`: Add support for GCP resource detector to gather GCE instance labels as resource attributes (#35859) The GCP resource detector now supports gathering GCE instance labels as resource attributes, allowing for more detailed resource metadata in telemetry data. - `processor/resourcedetection`: Added Alibaba Cloud ECS resource detector to the Resource Detection Processor (#45632) - `processor/tail_sampling`: New policy type to return the opposite of the sampling decision of a wrapped policy. (#39668) - `processor/tail_sampling`: Add trace_flags policy (#43867) - `processor/tail_sampling`: Provide option to limit maximum trace size kept in memory by the tail sampling processor (#45286) Traces that exceed the size limit will be immediately dropped, not have a decision made for them. - `receiver/azureblob`: Replace deprecated `azure-event-hubs-go` SDK with `azure-sdk-for-go` (#44335) - `receiver/filelog`: Suppress repeated permission-denied errors (#39491) Only one error is logged per file per process run, and an informational message is emitted when the file becomes readable again. This reduces log spam and improves clarity for operators. - `receiver/hostmetrics`: Add support for Linux hugepages memory monitoring via system.memory.linux.hugepages metrics. (#42650) Users can now monitor hugepages usage on host machine. - `receiver/jmx`: Add the JMX scraper version "1.53.0-alpha" to the supported jars hash list (#45571) - `receiver/jmx`: Add the JMX metrics gatherer version "1.53.0-alpha" to the supported jars hash list (#45570) - `receiver/k8sobjects`: Add support for exclude_namespaces to exclude specific namespaces from being watched. (#36217) Add support for exclude_namespaces to exclude specific namespaces from being watched. - `receiver/prometheus`: Support removable Prometheus service discoveries via Go build tags. (#44406) Prometheus service discoveries can now be removed at build time when building the collector with OCB (OpenTelemetry Collector Builder). Use the `build_tags` option in the builder configuration to pass Go build tags such as `remove_all_sd` to exclude optional service discoveries. See the Prometheus documentation for available build tags to customize which service discoveries are included. - `receiver/snowflake`: Enables dynamic metric reaggregation in the Splunk Enterprise receiver. This does not break existing configuration files. (#45396) - `receiver/windowsservice`: Enables dynamic metric reaggregation in the Splunk Enterprise receiver. This does not break existing configuration files. (#45396) ### 🧰 Bug fixes 🧰 - `exporter/coralogix`: Fix unmarshalling to avoid validation errors with profiles when protocol is set to http. (#45677) - `exporter/elasticsearch`: Add status code OK to success document processed metric. (#45067) - `internal/datadog`: Fix race condition in gohai host metadata payload causing concurrent map access panic (#30438) Deep copy the host metadata payload before passing it to ConsumeHostMetadata() to prevent concurrent map access when the reporter's gohai collector refreshes maps while JSON marshaling iterates over them. This fixes the "fatal error: concurrent map iteration and map write" panic that occurred with multiple concurrent metric consumers and host metadata enabled. - `internal/metadataproviders`: Fix kubeadm resource detector to correctly read clusterName from kubeadm configmap (#45603) - `pkg/ottl`: Fix debug logs in OTTL parser to not panic when marshalling transform contexts with invalid pdata (#44705) - `pkg/stanza`: Fix transformer operators logging errors at ERROR level when `on_error` is set to quiet mode (#42646) - `pkg/stanza`: Fix `container` operator log truncation for large CRI logs (#43982) Previously the option `max_log_size` of the `container` operator did not work correctly, with the maximum log size limited to an arbitrary value even if `max_log_size` was higher or set to `0` to remove the limit. With this change `max_log_size: 0` works correctly, removing the upper limit on log size. The default value for `max_log_size` is now changed from `0` to `1MiB` to prevent boundless memory usage. - `pkg/stanza`: Fix syslog parser operator logging errors at ERROR level when `on_error` is set to quiet mode (#42646) - `pkg/stanza`: Fix data race in fileconsumer FileAttributes map access (#42825) - `processor/azuredetector`: Avoid set cloud.availability_zone when Azure Availability Zone is not assigned (#45642) In cases where an Azure VM is not assigned to any Availability Zone, the `cloud.availability_zone` attribute was being set to an empty string. This fix ensures that the attribute is only set when an Availability Zone is indeed assigned, preventing misleading empty values. - `processor/azuredetector`: Fallback to VM Name when osProfile.computerName is unavailable (#45642) In certain Azure images, the `osProfile.computerName` field may not be set. This fix ensures that the hostname detection falls back to using the VM Name from the instance metadata service when `osProfile.computerName` is empty. - `processor/azuredetector`: Avoid set azure.vm.scaleset.name empty when VM not in scale set (#45642) In scenarios where a VM is not part of a scale set, the `azure.vm.scaleset.name` attribute was being set to an empty string. This fix ensures that the attribute is only set when the VM is indeed part of a scale set, preventing misleading empty values. - `processor/deltatocumulative`: Fix panic when processing exponential histograms with empty bucket counts (#42163) - `processor/k8sattributes`: Fix k8s.node.uid extraction when node.name is disabled (#45328) - `receiver/awscontainerinsightreceiver`: Add cAdvisor filesystem plugin imports to fix missing NodeFS and InstanceFS metrics (#45534) - `receiver/filelog`: Fixed encoding not being applied to multiline pattern matching (#39011) Previously, when using multiline pattern matching with non-UTF-8 encodings (e.g., utf-16le), the encoding was not properly applied during pattern matching, causing multiline patterns to fail. This fix ensures that the specified encoding is correctly applied when processing multiline patterns, allowing proper parsing of files with fixed-length records and no line terminators in various encodings. - `receiver/googlecloudmonitoring`: Fix boolean metrics conversion to int values (#45423) - `receiver/journald`: Avoid passing empty cursors to journalctl when resuming journald reads (#45435) - `receiver/libhoney`: Fix timestamp in libhoney receiver (#45799) The libhoney exporter was setting the start_time for some spans to the current time instead of the timestamp in the event. - `receiver/receiver_creator`: Do not log config in receivercreator since it could contain sensitive information (#38163) ## v0.144.0 ### 🛑 Breaking changes 🛑 - `exporter/elasticsearch`: Remove ecs mode span enrichment for `span.action`, `span.message.queue.name`, and `transaction.message.queue.name` (#45014) The removed span enrichments have been moved to the `github.com/elastic/opentelemetry-collector-components/processor/elasticapmprocessor`. It is recommended to use the `github.com/elastic/opentelemetry-collector-components/processor/elasticapmprocessor` when using mapping mode `ecs` to ensure index documents contain all required Elastic fields to power the Kibana UI. - `exporter/kafka`: Remove Sarama producer implementation (#44565) The Sarama-based Kafka producer has been removed from kafkaexporter. Feature gate `exporter.kafkaexporter.UseFranzGo` has also been removed since Franz-go is now the only supported Kafka client. - `processor/tail_sampling`: The deprecated invert decisions are disabled by default. (#44132) Drop policies should be used instead of invert decisions for explicitly not sampling a trace. If the deprecated behavior is required while migrating to drop policies, disable the `processor.tailsamplingprocessor.disableinvertdecisions` feature gate. - `receiver/kafka`: Remove Sarama consumer implementation and `default_fetch_size` configuration option (#44564) The Sarama-based Kafka consumer has been removed from kafkareceiver. The `default_fetch_size` configuration option has also been removed as it was only used by the Sarama consumer. Feature gate `receiver.kafkareceiver.UseFranzGo` has also been removed since Franz-go is now the only supported Kafka client. ### 🚩 Deprecations 🚩 - `exporter/elasticsearch`: Deprecate `mapping::mode` config option (#45246) The `mapping::mode` config option is now deprecated and will soon be ignored. Instead, use the `X-Elastic-Mapping-Mode` client metadata key (via headers_setter extension) or the `elastic.mapping.mode` scope attribute to control the mapping mode per-request. See the README for migration instructions. ### 🚀 New components 🚀 - `processor/lookup`: Add skeleton for external lookup enrichment processor (#41816) Adds the initial skeleton for a lookup processor that performs external lookups to enrich telemetry signals. Also includes source abstraction with factory pattern, noop source for testing, and cache wrapper utility. ### 💡 Enhancements 💡 - `cmd/schemagen`: Extend schemagen script with ability to handle external refs. (#42214) The `schemagen` tool has been enhanced to support external references when generating configuration schemas for OpenTelemetry Collector components. This improvement allows the tool to accurately reference and include schema definitions from external packages, facilitating better modularity and reuse of configuration schemas across different components. - `cmd/schemagen`: Fixes for schemagen to handle common issues with receiver components schemas. (#42214) Fix common issues discovered while using schemagen with receiver components: - Missing config.go file (e.g. namedpipereceiver) - Parsing obsolete types (e.g. nsxtreceiver) - Unable to embed fields with `squash` tag and not exported internal type (e.g. huaweicloudcesreceiver) - `cmd/telemetrygen`: Add batching capability to metrics and traces (#42322) - Changed traces batching to have configurable batch size and match batch flag. - Added batching to metrics. - Added batching to logs. - `exporter/azureblob`: Add timezone option for formatting blob names in azureblob exporter. (#43752) - `exporter/elasticsearch`: Remove go-elasticsearch dependency to reduce binary size (#45104) This leads to a 19MB size reduction in contrib distribution - `exporter/googlecloudstorage`: Add support for time partitioning (#44889) - `exporter/opensearch`: Add support for multiple variables to build index names (#42585) - `exporter/sumologic`: Add `decompose_otlp_summaries` configuration option to decompose OTLP Summary metrics into individual gauges and counters (#44737) - `extension/awslogs_encoding`: Optimize CloudTrail logs unmarshaling for memory usage (#45180) - `processor/k8sattributes`: Bumnp version of semconv to v1.39.0 (#45447) - `processor/redaction`: Add `sanitize_span_name` option to URL and DB sanitization configs. (#44228) - `processor/redaction`: Add `ignored_key_patterns` configuration option to allow ignoring keys by regex pattern (#44657) - `processor/resourcedetection`: Add optional docker attributes (#44898). **Note**: Because of [opentelemetry-collector-releases#1350](https://github.com/open-telemetry/opentelemetry-collector-releases/issues/1350) this change is not available on the v0.144.0 binary releases. v0.145.0 will include this change. Add `container.image.name` and `container.name` optional resource attributes with the docker detector. - `processor/tail_sampling`: Provide an option, `decision_wait_after_root_received`, to make quicker decisions after a root span is received. (#43876) - `receiver/azureeventhub`: Add support for azure auth when feature gate `receiver.azureeventhubreceiver.UseAzeventhubs` is enabled. (#40711) - `receiver/prometheus`: receiver/prometheus now associates scraped _created text lines as the created timestamp of its metric family rather than its own metric series, as defined by the OpenMetricsText spec (#45291) - `receiver/prometheus`: Add comprehensive troubleshooting and best practices guide to Prometheus receiver README (#44925) The guide includes common issues and solutions, performance optimization strategies, production deployment best practices, monitoring recommendations, and debugging tips. - `receiver/prometheusremotewrite`: Replace labels.Map() iteration with direct label traversal to eliminate intermediate map allocations. (#45166) ### 🧰 Bug fixes 🧰 - `exporter/kafka`: franz-go: Exclude non-produce metrics from kafka_exporter_write_latency and kafka_exporter_latency (#45258) - `exporter/opensearch`: Fix dynamic log index feature putting logs in wrong index (#43183) - `exporter/prometheusremotewrite`: Prevent duplicate samples by allowing the WAL to be empty (#41785) Since the WAL is being truncated after every send it's likely the reader and writer are in sync. Since WAL was not allowed to be empty, the reader would always re-read previously delivered samples causing duplicate data to be sent continuously. - `extension/datadog`: Datadog extension no longer throws an error for missing extensions when getting a list of active components, and now populates active components even when missing go mod/version info. (#45358, #45460) - `extension/file_storage`: Handle filename too long error in file storage extension by using the sha256 of the attempted filename instead. (#44039) - `extension/text_encoding`: Avoid spurious marshalling separators at end of lines (#42797) Previously, text_encoding would append the marshalling separator to the end of each log record, potentially resulting in double-newlines between blocks of records. - `extension/text_encoding`: Fix an issue where marshalling/unmarshalling separators were ignored (#42797) - `pkg/kafka/configkafka`: Fix consumer group rebalance strategy validation (#45268) - `pkg/ottl`: Fix numeric parsing to correctly handle signed numbers in math expressions. (#45222) The OTTL math expression parser did not correctly handle unary signs for plus and minus. Expressions like `3-5` would not parse correctly without inserting spaces to make it `3 - 5`. This change moves the sign handling out of the lexer and into the parser. - `pkg/ottl`: Handle floating constants with decimal point but no fraction. (#45222) Floating point constants that had a decimal point but no fractional digits (e.g., "3.") were not handled properly and could crash the parser. These are now parsed as valid floating point numbers. - `pkg/stanza`: Fix Windows UNC network path handling in filelog receiver (#44401) The filelog receiver now correctly handles Windows UNC network paths (e.g., \\server\share\logs\*.log). Previously, the receiver could list files from network shares but failed to open them due to path corruption during normalization. This fix converts UNC paths to Windows extended-length format (\\?\UNC\server\share\path) which is more reliable and not affected by filepath.Clean() issues. - `pkg/stanza`: Ensure `container` parser respects the `if` condition and `on_error` settings when format detection fails (#41508) - `processor/resourcedetection`: Prevent the resource detection processor from panicking when detectors return a zero-valued pdata resource. (#41934) **Note**: Because of [opentelemetry-collector-releases#1350](https://github.com/open-telemetry/opentelemetry-collector-releases/issues/1350) this change is not available on the v0.144.0 binary releases. v0.145.0 will include this change. - `processor/resourcedetection`: Fix nil pointer panic when HTTP client creation fails in Start method (#45220) **Note**: Because of [opentelemetry-collector-releases#1350](https://github.com/open-telemetry/opentelemetry-collector-releases/issues/1350) this change is not available on the v0.144.0 binary releases. v0.145.0 will include this change. - `receiver/awslambda`: Fix S3 key usage in AWS Lambda Receiver (#45364) - `receiver/datadog`: Fix service check endpoint to handle both array and single object payloads (#44986) The `/api/v1/check_run` endpoint now uses defensive parsing to handle both array `[{...}]` and single object `{...}` payloads. This fixes intermittent unmarshal errors when Datadog agent sends connectivity health checks. - `receiver/jmx`: Enable initial_delay and collection_interval settings via scraper helper (#44492) - `receiver/libhoney`: Improve msgpack decoding to handle ints or uints (#45273) - `receiver/postgresql`: Fix query plan EXPLAIN to use raw query with $N placeholders instead of obfuscated query with ? placeholders (#45190) Previously, the EXPLAIN query was using obfuscated queries with ? placeholders, which PostgreSQL does not recognize. Now uses the raw query with $1, $2 placeholders that PostgreSQL expects. - `receiver/prometheusremotewrite`: Fix silent data loss when consumer fails by returning appropriate HTTP error codes instead of 204 No Content. (#45151) The receiver was sending HTTP 204 No Content before calling ConsumeMetrics(), causing clients to believe data was successfully delivered even when the consumer failed. Now returns 400 Bad Request for permanent errors and 500 Internal Server Error for retryable errors, as per the Prometheus Remote Write 2.0 specification. - `receiver/sqlserver`: Accuracy improvements for top-query metrics (#45228) SQLServer metrics reporting is improved by reducing the warm-up delay and providing accurate insights sooner. ## v0.143.0 ### 🛑 Breaking changes 🛑 - `connector/servicegraph`: remove deprecated warning log about metrics exporter logical (#45177) - `extension/googlecloudlogentry_encoding`: Parse Cloud DNS Query logs into log record attributes instead of placing it in the body as is. (#44561) - `processor/tail_sampling`: Add support for caching the policy name involved in a sampling decision. (#45040) This change allows the `tailsampling.policy` attribute to be set on the spans in a trace when a sampling decision is cached. - `receiver/prometheus`: Remove deprecated `use_start_time_metric` and `start_time_metric_regex` configuration options. (#44180) The `use_start_time_metric` and `start_time_metric_regex` configuration options have been removed after being deprecated in v0.142.0. Users who have these options set in their configuration will experience collector startup failures after upgrading. To migrate, remove these configuration options and use the `metricstarttime` processor instead for equivalent functionality. - `receiver/systemd`: Rename `systemd.unit.cpu.time` metric to `systemd.service.cpu.time` (#44916) ### 🚀 New components 🚀 - `cmd/schemagen`: Introduce script that generates configuration schemas for collector components based on go structs. (#42214) The `schemagen` tool generates schemas for OpenTelemetry Collector components configuration by analyzing Go struct definitions. This is preliminary work to support automatic generation of documentation and validation for component configurations. ### 💡 Enhancements 💡 - `exporter/azureblob`: Add `time_parser_ranges` option to allow selective time parsing of blob name substrings (#44650) The new `time_parser_ranges` configuration allows specifying index ranges (e.g., `["0-10", "15-25"]`) to control which parts of the blob name are time-formatted. - `exporter/coralogix`: Exposed a new field to set `grpc-accept-encoding`. `gzip` will be used by default. (#45191) - `exporter/coralogix`: Improve log messages when a partial success happens for traces. (#44926) The exporter now provides additional context based on the type of partial success | returned by the backend. When the backend indicates issues with the sent data, the error | message is analyzed to identify and display examples of the problematic data. - `exporter/elasticsearch`: Add support for extra query parameters to the outgoing bulk request (#44480) - `exporter/kafka`: Make `max_message_bytes` and `flush_max_messages` unconditional in franz-go producer. Changed `flush_max_messages` default from 0 to 10000 to match franz-go default. (#44840) - `extension/awslogs_encoding`: Enhance VPC flow logs encoding extension with CloudWatch logs support (#44710) - `extension/azure_encoding`: Add processing for AppService, CDN, FrontDoor and Recommendation logs records (#41725) - `extension/googlecloudlogentry_encoding`: Add support for Passthrough External and Internal Network Load Balancer logs (#44524) Add support for Passthrough External and Internal Network Load Balancer logs to the Google Cloud log entry encoding extension. This includes adding support for the new `gcp.load_balancing.passthrough_nlb` attributes including connection details, bytes/packets sent and received, and RTT measurements. - `pkg/ottl`: Add `Bool` function for converting values to boolean (#44770) - `processor/geoip`: Bump oschwald/geoip2 to v2 (#44687) - `receiver/awscloudwatch`: Add support for filtering log groups by account ID. (#38391) - `receiver/awscontainerinsightreceiver`: Component type name renamed from awscontainerinsightreceiver to awscontainerinsight, controlled by feature gate receiver.awscontainerinsightreceiver.useNewTypeName. (#44052) When the feature gate is enabled, the receiver uses the new type name `awscontainerinsight` instead of `awscontainerinsightreceiver`. To enable the new type name, use: `--feature-gates=+receiver.awscontainerinsightreceiver.useNewTypeName`. - `receiver/awslambda`: Add support for AWS Lambda receiver to trigger by CloudWatch logs subscription filters for Lambda (#43504) - `receiver/awslambda`: Add S3 failure replay support to AWS Lambda receiver (#43504) - `receiver/filelog`: gzip files are auto detected based on their header (#39682) - `receiver/github`: Add `merged_pr_lookback_days` configuration to limit historical PR queries and reduce API usage (#43388) The `merged_pr_lookback_days` configuration option limits the timeframe for which merged pull requests are queried. Set to 0 to fetch all merged PRs. Open PRs are always fetched regardless of this setting. - `receiver/oracledb`: Add stored procedure information to logs for top queries and query samples. (#44764) The `db.server.top_query` event now includes `oracledb.procedure_id`, `oracledb.procedure_name`, and `oracledb.procedure_type` attributes. The `db.server.query_sample` event now includes `oracledb.procedure_id`, `oracledb.procedure_name`, and `oracledb.procedure_type` attributes. - `receiver/postgresql`: Added `service.instance.id` resource attribute for metrics and logs (#43907) `service.instance.id` is enabled by default. - `receiver/postgresql`: Add trace propagation support (#44868) When `postgresql.application_name` contains a valid W3C `traceparent`, emitted `db.server.query_sample` logs include `trace_id` and `span_id` for correlation. - `receiver/prometheus`: Add `receiver.prometheusreceiver.RemoveReportExtraScrapeMetricsConfig` feature gate to disable the `report_extra_scrape_metrics` config option. (#44181) When enabled, the `report_extra_scrape_metrics` configuration option is ignored, and extra scrape metrics are controlled solely by the `receiver.prometheusreceiver.EnableReportExtraScrapeMetrics` feature gate. This mimics Prometheus behavior where extra scrape metrics are controlled by a feature flag. - `receiver/systemd`: Add metric for number of times a service has restarted. (#45071) - `receiver/windowseventlog`: Improved performance of the Windows Event Log Receiver (#43195) Previously, the Windows Event Log Receiver could only process events up to 100 messages per second with default settings. This was because the receiver would read at most `max_reads` messages within each configured `poll_interval`, even if additional events were already available. This restriction has been removed. The `poll_interval` parameter behaves as described in the documentation: The `poll_interval` parameter now only takes effect after all current events have been read. For users who prefer the previous behavior, a new configuration option, `max_events_per_poll`, has been introduced. - `receiver/windowseventlog`: Add parsing for Version and Correlation event fields. (#45018) ### 🧰 Bug fixes 🧰 - `connector/count`: Basic config should emit default metrics (#41769) - `exporter/elasticsearch`: Deduplicate attribute keys from non-compliant SDKs in otel mapping mode (#39304) The serializer in otel mapping mode now explicitly deduplicates attribute keys when writing to Elasticsearch, keeping only the first occurrence. This prevents invalid JSON from being produced when non-compliant SDKs send duplicate keys. - `exporter/kafka`: Wrap non-retriable errors from franzgo with consumererror::permanent (#44918) - `exporter/loadbalancing`: Fix k8s resolver parsing so loadbalancing exporter works with service FQDNs (#44472) - `pkg/translator/azurelogs`: Fix missing data when ingesting Azure logs without properties field. (#44222) - `receiver/awss3`: Fix data loss when SQS messages contain multiple S3 object notifications and some fail to process (#45153) The SQS notification reader was unconditionally deleting messages after processing, even when some S3 object retrievals or callback processing failed. This caused data loss when a message contained multiple S3 notification records and any of them failed. Messages are now only deleted when all records are successfully processed, allowing failed records to be retried after the visibility timeout. - `receiver/azureeventhub`: Make storage of new azeventhub library backward compatible and fix checkpoint starting at earliest when storage is enabled (#44461) - `receiver/fluentforward`: Ensure all established connections are properly closed on shutdown in the fluentforward receiver. The shutdown process now reliably closes all active connections. (#44433) - Fixes shutdown behavior so that all existing connections are closed cleanly. - Adds tests to verify proper connection closure. - `receiver/kafka`: Fix deprecated field migration logic for metrics, traces, and profiles topic configuration (#45215) Fixed bug where deprecated `topic` and `exclude_topic` fields for metrics, traces, and profiles were incorrectly checking logs configuration instead of their respective signal type's configuration. This prevented proper migration from deprecated fields unless logs.topics was empty. Also fixed validation error message typo for traces.exclude_topic and corrected profiles validation to check ExcludeTopic fields instead of Topic fields. - `receiver/sqlserver`: Collect query metrics for long running queries (#44984) - `receiver/tcpcheck`: Fix the unit of the `tcpcheck.error` metric from `error` to `errors` (#45092) ## v0.142.0 ### 🛑 Breaking changes 🛑 - `all`: It's recommended to change the field type in your component configuration to be `configoptional.Optional[exporterhelper.QueueBatchConfig]` to keep the `enabled` subfield. Use configoptional.Some(exporterhelper.NewDefaultQueueConfig()) to enable by default. Use configoptional.Default(exporterhelper.NewDefaultQueueConfig()) to disable by default. (#44320) - `exporter/datadog`: Update the Datadog exporter to support the Orchestrator Explorer by accepting receiver/k8sobjects logs and sending Kubernetes data to the Datadog endpoint. (#44523) The Cluster name field in Orchestrator Explorer Configuration has been removed. Use the k8s.cluster.name attribute instead. - `exporter/prometheusremotewrite`: Updated to Remote Write 2.0 spec rc.4, requiring Prometheus 3.8.0 or later as the receiving endpoint. (#44861) The upstream Prometheus library updated the Remote Write 2.0 protocol from rc.3 to rc.4 in prometheus/prometheus#17411. This renamed `CreatedTimestamp` to `StartTimestamp` and moved it from the `TimeSeries` message to individual `Sample` and `Histogram` messages. This is a wire-protocol incompatibility, so if you are exporting to a Prometheus server, you must upgrade it to version 3.8.0 or later to receive data from this exporter. - `extension/googlecloudlogentry_encoding`: Parse External Application Load Balancer logs into log record attributes instead of placing it in the body as is. (#44438) - `pkg/stanza`: Allow `max_batch_size` of 0 for unlimited batching in `recombine` operator (#43982) The recombine operator now supports setting `max_batch_size: 0` to disable batch size limits. This allows unlimited batching, letting entries be combined based only on `max_log_size` and matching conditions. If you have `max_batch_size: 0` in your config and want to keep the behavior unchanged, change the configuration to `max_batch_size: 1`. - `processor/cumulativetodelta`: Change default `max_staleness` from 0 (infinite) to 1 hour (#44427) The processor now defaults to a `max_staleness` of 1 hour instead of 0 (infinite retention). This prevents unbounded memory growth in long-running collector instances, especially when tracking metrics with high cardinality or frequently changing attribute values. To restore the previous behavior of infinite retention, explicitly set `max_staleness: 0` in your configuration. - `processor/resourcedetection`: Promote `processor.resourcedetection.propagateerrors` feature gate to beta (#44609) - `processor/resourcedetection`: Remove deprecated `attributes` configuration option (#44610) - `receiver/awss3`: Remove the `s3_partition` config option in favor of `s3_partition_format` and `s3_partition_timezone` options. This aligns the S3 receiver more closely with the S3 Exporter. Also add the ability to include or exclude the telemetry type from the file prefix using the `file_prefix_include_telemetry_type` option. (#43720) - `receiver/docker_stats`: Upgrades default Docker API version to 1.44 to be compatible with recent Docker Engine versions. (#44279) Users requiring an older Docker API version can set the `api_version` in the docker stats receiver config. The minimum supported API level is not changed, only default. - `receiver/filelog`: Move `filelog.decompressFingerprint` to stable stage (#44570) - `receiver/prometheus`: Promote the receiver.prometheusreceiver.RemoveStartTimeAdjustment feature gate to stable and remove in-receiver metric start time adjustment in favor of the metricstarttime processor, including disabling the created-metric feature gate. (#44180) Previously, users could disable the RemoveStartTimeAdjustment feature gate to temporarily keep the legacy start time adjustment behavior in the Prometheus receiver. With this promotion to stable and bounded registration, that gate can no longer be disabled; the receiver will no longer set StartTime on metrics based on process_start_time_seconds, and users should migrate to the metricstarttime processor for equivalent functionality. This change also disables the receiver.prometheusreceiver.UseCreatedMetric feature gate, which previously used the `_created` series to derive start timestamps for counters, summaries, and histograms when scraping non OpenMetrics protocols. However, this does not mean that the `_created` series is always ignored: when using the OpenMetrics 1.0 protocol, Prometheus itself continues to interpret the `_created` series as the start timestamp, so only the receiver-side handling for other scrape protocols has been removed. - `receiver/prometheus`: Native histogram scraping and ingestion is now controlled by the scrape configuration option `scrape_native_histograms`. (#44861) The feature gate `receiver.prometheusreceiver.EnableNativeHistograms` is now stable and enabled by default. Native histograms scraped from Prometheus will automatically be converted to OpenTelemetry exponential histograms. To enable scraping of native histograms, you must configure `scrape_native_histograms: true` in your Prometheus scrape configuration (either globally or per-job). Additionally, the protobuf scrape protocol must be enabled by setting `scrape_protocols` to include `PrometheusProto`. - `receiver/prometheusremotewrite`: Updated to Remote Write 2.0 spec rc.4, requiring Prometheus 3.8.0 or later (#44861) The upstream Prometheus library updated the Remote Write 2.0 protocol from rc.3 to rc.4 in prometheus/prometheus#17411. This renamed `CreatedTimestamp` to `StartTimestamp` and moved it from the `TimeSeries` message to individual `Sample` and `Histogram` messages. This is a wire-protocol incompatibility, so Prometheus versions 3.7.x and earlier will no longer work correctly with this receiver. Please upgrade to Prometheus 3.8.0 or later. ### 🚩 Deprecations 🚩 - `processor/k8sattributes`: Removes stable k8sattr.fieldExtractConfigRegex.disallow feature gate (#44694) - `receiver/kafka`: Deprecate `default_fetch_size` parameter for franz-go client (#43104) The `default_fetch_size` parameter is now deprecated for the franz-go Kafka client and will only be used with the legacy Sarama client. Users should configure `max_fetch_size` instead when using franz-go. This deprecation is marked as of v0.142.0. - `receiver/kafka`: Support configuring a list of topics and exclude_topics; deprecate topic and exclude_topic (#44477) - `receiver/prometheus`: Deprecate `use_start_time_metric` and `start_time_metric_regex` config in favor of the processor `metricstarttime` (#44180) ### 🚀 New components 🚀 - `receiver/yanggrpc`: Implement the YANG/gRPC receiver (#43840) ### 💡 Enhancements 💡 - `exporter/elasticsearch`: add dynamic data stream routing for connectors (#44525) - `exporter/kafka`: Adds server.address attribute to all Kafka exporter metrics. (#44649) - `exporter/prometheusremotewrite`: Add option to remove `service.name`, `service.instance.id`, `service.namespace` ResourceAttribute from exported metrics (#44567) - `exporter/signalfx`: Support setting default properties for dimension updates to be set lazily as part of configuration (#44891) - `extension/azure_encoding`: Implement general Azure Resource Log parsing functionality (#41725) - `extension/datadog`: Datadog Extension users may view and manage OTel Collectors in Fleet Automation. (#44666) Interested users should read [the post on the Datadog Monitor blog](https://www.datadoghq.com/blog/manage-opentelemetry-collectors-with-datadog-fleet-automation/) and fill out the preview intake form listed there. - `extension/datadog`: Adds deployment_type configuration option to the Datadog Extension. (#44430) Users may specify the deployment type of the collector in Datadog Extension configuration to view in Datadog app. If the collector is deployed as a gateway (i.e. receiving pipeline telemetry from multiple hosts/sources), user should specify "gateway" as the deployment type. If the collector is deployed as a daemonset/agent, user should specify "daemonset" as the deployment type. The default setting is "unknown" if not set. - `extension/datadog`: Adds standard (non-billed) liveness metric `otel.datadog_extension.running` to ensure host data is shown in Datadog app. (#44285) - `extension/googlecloudlogentry_encoding`: Add support for GCP VPC Flow Log fields for MIG (Managed Instance Group) and Google Service logs. (#44220) Adds support for the following GCP VPC Flow Log fields: - Add support for gcp.vpc.flow.{source,destination}.google_service.{type,name,connectivity} - Add support for gcp.vpc.flow.{source,destination}.instance.managed_instance_group.{name,region,zone} - `extension/health_check`: Added extension.healthcheck.useComponentStatus feature gate to enable v2 component status reporting in healthcheckextension while maintaining backward compatibility by default. (#42256) - `pkg/ottl`: Accept string trace/span/profile IDs for `TraceID()`, `SpanID()`, and `ProfileID()` in OTTL. (#43429) This change allows for a more straightforward use of string values to set trace, span, and profile IDs in OTTL. - `pkg/stanza`: New featuregate `filelog.windows.caseInsensitive` introduced. It will make glob matching is case-insensitive on Windows. (#40685) Previously, any `include` pattern that included some manner of wildcard (`*` or `**`) would be case-sensitive on Windows, but Windows filepaths are by default case-insensitive. This meant that in a directory with the files `a.log` and `b.LOG`, the pattern `*.log` would previously only match `a.log`. With the `filelog.windows.caseInsensitive` featuregate enabled, it will match both `a.log` and `b.LOG` when on Windows. The behaviour is the same as always on other operating systems, as all other currently supported platforms for the Collector have case-sensitive filesystems. - `pkg/translator/azurelogs`: Added support for Activity Logs Recommendation category (#43220) - `processor/k8sattributes`: Updates semconv version to v1.37.0 (#44696) - `processor/resourcedetection`: Add support for dynamic refresh resource attributes with refresh_interval parameter (#42663) - `processor/resourcedetection`: Update semconv dependency to 1.37.0 which updates the schema url in the data, but no other impact is expected. (#44726) - `processor/transform`: New Transform Processor function `set_semconv_span_name()` to overwrite the span name with the semantic conventions for HTTP, RPC, messaging, and database spans. (#43124) In other cases, the original `span.name` is unchanged. The primary use of `set_semconv_span_name()` is alongside the [Span Metrics Connector](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/spanmetricsconnector) to address high-cardinality issues in span metrics when `span.name` does not comply with the OTel requirement that span names be low cardinality. - `receiver/azuremonitor`: Scrape storage account sub types (#37220) - `receiver/datadog`: Improve the compliance with OTel Semantic Conventions for RPC spans in the Datadog receiver. (#44671) Compliance improvements on spans received via the Datadog receiver when applicable: * Set span name according to RPC conventions. * Set `rpc.method` and `rpc.service` attributes. - `receiver/datadog`: Bump OTel Semantic Conventions from v1.30.0 to v1.37.0 in the Datadog receiver. (#44671) Changes in OTel Semantic Conventions v1.37.0 affecting the Datadog receiver: * The Datadog tag `runtime` is now mapped to the OTel attribute `container.runtime.name` instead of `container.runtime`. - `receiver/datadog`: Improve the compliance with OTel Semantic Conventions for AWS SDK spans in the Datadog receiver. (#44723) Compliance improvements on spans received via the Datadog receiver when applicable: * Set span name according to AWS SDK conventions. * Set `rpc.system`, `rpc.method` and `rpc.service` attributes. - `receiver/datadog`: Add `receiver.datadogreceiver.EnableMultiTagParsing` feature gate (#44747) The feature flag changes the logic that converts Datadog tags to OpenTelemetry attributes. When the flag is enabled, data points that have multiple tags starting with the same `key:` prefix will be turned into an attribute slice (instead of a string) containing all the suffix values. - `receiver/datadog`: Improve the compliance with OTel Semantic Conventions for HTTP spans in the Datadog receiver. (#44722) Compliance improvements on spans received via the Datadog receiver when applicable: Set span name according to HTTP conventions for `web.request` and `http.request` spans. - `receiver/github`: Add concurrency limiting to reduce likelihood of hitting secondary rate limits (#43388) Adds `concurrency_limit` configuration parameter (default: 50) to limit concurrent repository processing goroutines. This reduces the likelihood of getting 502/504 errors when scraping organizations with >100 repositories. - `receiver/googlecloudpubsub`: Exponential backoff streaming restarts (#44741) - `receiver/kafka`: Make `session_timeout`, `heartbeat_interval`, `max_partition_fetch_size`, and `max_fetch_wait` unconditional in franz-go consumer (#44839) - `receiver/kafka`: Validate that `exclude_topics` entries in kafkareceiver config are non-empty. (#44920) - `receiver/oracledb`: Added independent collection interval config for Oracle top query metrics collection (#44607) - `receiver/prometheusremotewrite`: Map.PutStr causes excessive memory allocations due to repeated slice expansions (#44612) - `receiver/splunk_hec`: Support parsing JSON array payloads in Splunk HEC receiver (#43941) - `receiver/sshcheck`: Promote sshcheck receiver to beta stability (#41573) - `receiver/yanggrpc`: Promote to alpha stability (#44783) ### 🧰 Bug fixes 🧰 - `exporter/elasticsearch`: Fix hostname mapping in Elasticsearch exporter (#44874) - The exporter now supports to map an otel field to an ecs field only if the ecs field is not already present. This is applied to `host.hostname` mapping. - `processor/cumulativetodelta`: Check whether bucket bounds are the same when verifying whether histograms are comparable (#44793) - `processor/cumulativetodelta`: Fix logic handling ZeroThreshold increases for exponential histograms (#44793) - `processor/filter`: Fix context initialization for metric/datapoint context (#44813) - `processor/k8sattributes`: Fix `k8sattr.labelsAnnotationsSingular.allow` feature gate to affect config default tag names in addition to runtime extraction (#39774) - `processor/tail_sampling`: Fix a memory leak introduced in 0.141.0 of the tail sampling processor when not blocking on overflow. (#44884) - `receiver/datadog`: The `db.instance` tag of Datadog database client spans should be mapped to the OTel attribute `db.namespace`, not to `db.collection.name`. (#44702) Compliance improvements on spans received via the Datadog receiver when applicable: * The `db.instance` tag is now mapped to the OTel attribute `db.namespace` instead of `db.collection.name`. * The `db.sql.table` tag is mapped to the OTel attribute `db.collection.name`. * The `db.statement` tag is mapped to the OTel attribute `db.query.text`. - `receiver/datadog`: Fix Datadog trace span counting so otelcol_receiver_accepted_spans is not under-reported (#44865) Previously only the last payload's spans were counted, so the otelcol_receiver_accepted_spans metric could be lower than otelcol_exporter_sent_spans in pipelines where they should match. - `receiver/github`: Adds corrections to span kind for GitHub events when they are tasks. (#44667) - `receiver/googlecloudpubsub`: Acknowledge messages at restart (#44706) Rewrote the control flow loop so the acknowledgment of messages is more reliable. At stream restart, the messages ackIds are resent immediately without an explicit acknowledgment. Outstanding ackIds are only cleared when the acknowledgment is sent successfully. - `receiver/googlecloudspanner`: Fixed goroutine leaks in ttlcache lifecycle management and applied modernize linter fixes across multiple receivers. (#44779) - Simplified cache lifecycle management by removing unnecessary WaitGroup complexity - Added goleak ignores for ttlcache goroutines that don't stop immediately after Stop() - `receiver/kafka`: Use `max_fetch_size` instead of `default_fetch_size` in franz-go client (#43104) The franz-go Kafka consumer was incorrectly using `default_fetch_size` (a Sarama-specific setting) instead of `max_fetch_size` when configuring `kgo.FetchMaxBytes`. This fix ensures the correct parameter is used and adds validation to prevent `max_fetch_size` from being less than `min_fetch_size`. The default value for `max_fetch_size` has been changed from 0 (unlimited) to 1048576 (1 MiB) to maintain backward compatibility with the previous (incorrect) behavior. - `receiver/prometheus`: Fix HTTP response body leak in target allocator when fetching scrape configs fails (#44921) The getScrapeConfigsResponse function did not close resp.Body on error paths. If io.ReadAll or yaml.Unmarshal failed, the response body would leak, potentially causing HTTP connection exhaustion. - `receiver/prometheus`: Fixes yaml marshaling of prometheus/common/config.Secret types (#44445) ## v0.141.0 ### 🛑 Breaking changes 🛑 - `all`: fix pprofile DurationNano to be a TypeUint64 (#44397) - `cmd/otelcontribcol`: Removing unmaintained component `exporter/carbon` (#38913) - `connector/spanmetrics`: Add a feature gate to use the latest semantic conventions for the status code attribute on generated metrics. | This feature gate will replace the `status.code` attribute on the generated RED metrics with `otel.status_code`. | It will also replace the values `STATUS_CODE_ERROR` and `STATUS_CODE_OK` with `ERROR` and `OK` to align with the latest conventions. (#42103) This change is made to align with [the latest semantic conventions](https://opentelemetry.io/docs/specs/semconv/registry/attributes/otel/#otel-status-code). | The feature gate is disabled by default, but can be enabled with `--feature-gates spanmetrics.statusCodeConvention.useOtelPrefix` | or explicitly disabled with `--feature-gates -spanmetrics.statusCodeConvention.useOtelPrefix`. - `exporter/clickhouse`: Add EventName column to logs table (#42584) This column is optional for existing deployments. See project README for notes on how to upgrade your logs table. - `exporter/clickhouse`: Add columns for tracking JSON paths in logs + traces (#43109) The JSON columns now include a helper column for keeping track of what keys are inside of the JSON object. This change also introduces schema detection logic to reduce breaking changes whenever a column is added. Existing users can enable these features by manually adding all the new columns to their table. - `exporter/kafka`: `exporter.kafkaexporter.UseFranzGo` feature gate moved to Stable and is now always enabled (#44565) The franz-go client is now the default and only Kafka client library for the Kafka exporter. The feature gate `exporter.kafkaexporter.UseFranzGo` has been promoted to Stable status and cannot be disabled. Users can no longer opt out of using the franz-go client in favor of the legacy Sarama client. The Sarama client and the feature gate will be removed completely after v0.143.0. - `extension/docker_observer`: Upgrading Docker API version default from 1.24 to 1.44 (#44279) - `pkg/ottl`: Type of field profile.duration changes from time.Time to int64. (#44397) - `receiver/azureeventhub`: Promote Feature Gate `receiver.azureeventhubreceiver.UseAzeventhubs` to Beta (#44335) - `receiver/k8slog`: Update k8slogreceiver code-owners status and mark as unmaintained (#44078) - `receiver/kafka`: Remove deprecated topic and encoding (#44568) - `receiver/kafka`: `receiver.kafkareceiver.UseFranzGo` feature gate moved to Stable and is now always enabled (#44564) The franz-go client is now the default and only Kafka client library for the Kafka receiver. The feature gate `receiver.kafkareceiver.UseFranzGo` has been promoted to Stable status and cannot be disabled. Users can no longer opt out of using the franz-go client in favor of the legacy Sarama client. The Sarama code and the feature gate will be removed completely after v0.143.0. ### 🚩 Deprecations 🚩 - `receiver/prometheus`: Add feature gate for extra scrape metrics in Prometheus receiver (#44181) deprecation of extra scrape metrics in Prometheus receiver will be removed eventually. ### 🚀 New components 🚀 - `connector/metricsaslogs`: Add connector to convert metrics to logs (#40938) - `extension/azure_encoding`: [extension/azure_encoding] Introduce new component (#41725) This change includes only overall structure, readme and configuration for a new component - `receiver/awslambda`: Implementation of the AWS Lambda Receiver. (#43504) - `receiver/macosunifiedlogging`: Add a new receiver for macOS Unified Logging. (#44089) - `receiver/macosunifiedlogging`: Implementation of the macOS Unified Logging Receiver. (#44089) ### 💡 Enhancements 💡 - `connector/count`: Support all attribute types in the count connector (#43768) - `connector/routing`: Avoid extra copy of all data during routing (#44387) - `exporter/awss3`: Support compression with ZSTD (#44542) - `exporter/azuremonitor`: Add additional mapping of standard OTel properties to builtin Application Insights properties (#40598) - `exporter/cassandra`: `cassandraexporter`: Upgrade cassandra library version (#43691) Upgrade cassandra library version. - `exporter/elasticsearch`: Updates the ecs mode span encode to include the `span.kind` attribute (#44139) - `exporter/elasticsearch`: add missing fields to struct so that they are populated in the respective elasticsearch index (#44234) - `exporter/file`: Add create_directory and directory_permissions options; exporter can automatically create parent directories (also honored by group_by) with configurable permissions. (#44280) - New config: `create_directory` (bool) and `directory_permissions` (octal string, e.g. \"0755\"). - When enabled, the exporter creates the parent directory of `path` on start. - `group_by` uses the configured permissions when creating per-attribute directories. - `exporter/googlecloudpubsub`: Update to cloud.google.com/go/pubsub/v2. (#44465) - `exporter/googlecloudpubsub`: Add encoding extension support (#42270, #41834) Add encoding extension support for the payload on Pub/Sub. As having custom extensions means the Pub/Sub attributes cannot be auto discovered additional functionality has been added to set the message attributes. - `exporter/prometheus`: Add without_scope_info to omit otel scope info from prometheus exporter metrics (#43613) - `exporter/prometheus`: Add support to exponential histograms (#33703) - `exporter/signalfx`: Makes sending tags from SignalFx Exporter configurable (#43799) New optional configuration flag `drop_tags` has been added to SignalFx Exporter to allow users to disable tag metadata sending. This feature has been introduced due to a common issue among Splunk Observability customers when they're receiving more tags than allowed limit. - `extension/awslogs_encoding`: Add more fields to AWS NLB logs at ELB extension (#43757) - `extension/googlecloudlogentry_encoding`: Add support for Proxy Network Load Balancer logs (#44099) Add support for Proxy Network Load Balancer logs to the Google Cloud log entry encoding extension. This includes adding support for the new `gcp.load_balancing.proxy_nlb` attributes. See the [README](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/encoding/googlecloudlogentryencodingextension/README.md#proxy-network-load-balancer-logs) for more details. - `extension/headers_setter`: Add support for chaining with other auth extensions via `additional_auth` configuration parameter. This allows combining multiple authentication methods, such as OAuth2 for bearer token authentication and custom headers for additional metadata. (#43797) The `additional_auth` parameter enables the `headers_setter` extension to work in conjunction with other authentication extensions like `oauth2client`. The additional auth extension is called first to apply its authentication, then headers_setter adds its configured headers on top. - `extension/observer`: Add container name, container ID, and container image to port endpoint (#41309) - `pkg/ottl`: Add `ParseSeverity` function to define mappings for log severity levels. (#35778) - `pkg/ottl`: Introduce `CommunityID` function to generate network hash (20-byte SHA1 digest) flow from the given source and destination {IP, port}, optionally protocol and seed values. (#34062) - `pkg/ottl`: Expand usage of literal into typed getters and avoid unnecessary work (#44201) - `pkg/ottl`: SliceToMap: add support to convert slices with non-map elements to maps (#43099) - `processor/cumulativetodelta`: Add support for exponential histograms (#44106) - `processor/resourcedetection`: Use `osProfile.computerName` for setting `host.name` in Azure resource detection processor (#43959) - `processor/resourcedetectionprocessor/oraclecloud`: Oracle Cloud (OCI) resource detection processor now differentiates between running off-platform (expected not to work), and encountering an error when running on-platform (expected to work) (#42794) - Collectors not running on Oracle Cloud return an empty resource and no error, since we don't expect this case to work. - If the Oracle Cloud platform is detected but metadata fetch fails, the error is now logged and signaled to the processor, since we do expect this case to work. - `processor/tail_sampling`: Add bytes_limiting policy type, sample based on the rate of bytes per second using a token bucket algorithm. (#42509) - `processor/tail_sampling`: Adaptive expected_new_traces_per_sec to improve performance lower bound (#43561) - `receiver/googlecloudpubsub`: Update to cloud.google.com/go/pubsub/v2. (#44466) - `receiver/googlecloudpubsub`: Adjusts the subscription regex to accommodate new project naming used for Google Trusted Partner Clouds. (#43988) - `receiver/googlecloudpubsubpush`: Add telemetry metrics to the component. (#44422) - `receiver/googlecloudpubsubpush`: Add implementation to googlecloudpubsubpush receiver. (#44101) - `receiver/k8s_events`: Allow more event types like Error and Critical which are typically used by applications when creating events. (#43401) k8seventsreceiver allows event types Error and Critical in addition to the current Normal and Warning event types. - `receiver/kafka`: Add support for exclude topics when consuming topics with a regex pattern (#43782) - `receiver/prometheus`: Support JWT Profile for Authorization Grant (RFC 7523 3.1) (#44381) - `receiver/redis`: Add support for redis.mode and redis.sentinel.* metrics (#42365) - `receiver/systemd`: Promote systemd receiver to alpha (#33532) - `receiver/systemd`: Scrape unit CPU time (#44646) ### 🧰 Bug fixes 🧰 - `cmd/opampsupervisor`: Fix supervisor passthrough logs overflow by using bufio.Reader instead of bufio.Scanner (#44127) - `cmd/opampsupervisor`: Fix data race in `remoteConfig` field by using atomic pointer for thread-safe concurrent access (#44173) - `connector/routing`: Fix routing to default route when error occurs (#44386) Before we used to send everything (even records match without error) to the default pipeline, | after this change only entries that return error will be "ignored" and if no other rule in the | table picks them will be sent to the default rule. - `exporter/clickhouse`: Fix TLS configuration being ignored when only ca_file is provided and no cert/key files are set. (#43911) This change ensures server-side TLS validation works correctly even without client certificates. - `exporter/elasticsearch`: Fix CloudID parsing to correctly handle Elastic Cloud IDs when sent with multiple dollar sign separators (#44306) The CloudID decoder was incorrectly using `strings.Cut()` which only splits on the first delimiter, causing malformed URLs when the decoded CloudID contained multiple `$` separators. Changed to use `strings.Split()` to match the reference implementation from go-elasticsearch library. - `extension/awslogs_encoding`: address the SIGSEGV occurring when processing control_message messages. (#44231) - `extension/awslogs_encoding`: Fix ALB log `request_line` parsing for valid formats and avoid errors (#44233) - `pkg/ottl`: Fixed OTTL grammar to treat the string literal "nil" as ordinary text instead of a nil value. (#44374) - `pkg/ottl`: Return errors when OTTL context setters receive values of the wrong type (#40198) Introduces `ctxutil.ExpectType` and updates log, metric, and scope setters to surface type assertion failures. - `pkg/ottl`: Fix TrimPrefix/TrimSuffix function name. (#44630) This change also adds a featuregate "ottl.PanicDuplicateName" to control the behavior of panicing when duplicate names are registered for the same function. - `processor/k8sattributes`: `k8sattributesprocessor` now respects semantic convention resolution order for `service.namespace` (#43919) Previously, when `service.namespace` was included in the extract metadata configuration, the processor would incorrectly allow `k8s.namespace.name` to override explicitly configured service namespace values from OpenTelemetry annotations (e.g., `resource.opentelemetry.io/service.namespace`). Now the processor correctly follows the semantic convention resolution order, where annotation values take precedence over inferred Kubernetes namespace names. - `processor/k8sattributes`: Fix incorrect pod metadata assignment when `host.name` contains a non-IP hostname (#43938) The processor now correctly validates that `host.name` contains an IP address before using it for pod association. Previously, textual hostnames were incorrectly used for pod lookups, causing spans and metrics from one workload to receive metadata from unrelated pods that shared the same hostname. - `receiver/awsxray`: Fix incorrect span kind when translating X-Ray segment to trace span with parent ID (#44404) - `receiver/azuremonitor`: Collect only supported aggregations for each metric (501 not implemented issue) (#43648) Some metrics were not collected because we requested all available aggregation types. This led to 501 errors, as the Azure API returned responses indicating that certain aggregations were not implemented. We now use the supported aggregations field from each metric definition to filter and request only the aggregations that are actually supported. The user can expect less 501 errors in the logs and more metrics in the results. - `receiver/datadog`: Utilizes thread safe LRU packages (#42644) - `receiver/github`: Adds corrections to span times when GitHub sends incorrect start and end times. (#43180) - `receiver/libhoney`: Allow single events and uncompressed requests (#44026, #44010) The receiver required events to be wrapped in an array before. The single-event format was allowed by Honeycomb's API so we have added it here. This fix also allows uncompressed requests again - `receiver/sqlquery`: Fix a bug in the sqlqueryreceiver where an error is returned if the query returned a null value. This is now logged as a warning and logs with null values are ignored. (#43984) - `receiver/systemd`: This allows systemd receiver to be used in collector config (#44420) ## v0.140.1 ## v0.140.0 ### 🛑 Breaking changes 🛑 - `all`: Latest supported k8s version is moved from 1.17 to 1.21. (#43891) - `cmd/otelcontribcol`: Removing unmaintained component extension/ecstaskobserver (#43818) - `exporter/elasticsearch`: Upgrade profiles proto to 1.9.0 (#44031) - `extension/googlecloudlogentry_encoding`: Parse cloud armor logs into log record attributes instead of placing it in the body as is. (#43389) - `pkg/ottl`: Upgrade profiles proto to 1.9.0 (#44031) - `processor/filter`: Upgrade profiles proto to 1.9.0 (#44031) - `processor/tail_sampling`: Replace policy latency metric with total time spent executing specific sampling policy. (#42620) The existing latency metric was misleading and expensive to compute. The new cpu time metric can be used to find expensive policies instead. - `receiver/pprof`: Upgrade profiles proto to 1.9.0 (#44031) - `receiver/prometheus`: The prometheus receiver no longer adjusts the start time of metrics by default. (#43656) Disable the receiver.prometheusreceiver.RemoveStartTimeAdjustment | feature gate to temporarily re-enable this functionality. Users that need | this functionality should migrate to the metricstarttime processor, | and use the true_reset strategy for equivalent behavior. ### 🚀 New components 🚀 - `pkg/translator/pprof`: move code from receiver/pprofreceiver to pkg/translator/pprof (#43975) pprof is an established format. For a better integration with OTel move code to a dedicated component. - `receiver/awslambda`: Add scaffolding for the new awslambda receiver, for event-triggered receiving of data from S3 and CloudWatch. (#43504) - `receiver/googlecloudpubsubpush`: Add skeleton to the google pub sub push receiver. (#43503) - `receiver/systemd`: Report active state of systemd units. (#33532) - `receiver/yanggrpc`: New component YANG gRPC (#43840) ### 💡 Enhancements 💡 - `exporter/azureblob`: Added `serial_num_enabled` and `time_parser_enabled` options to `blob_name_format` in Azure Blob Exporter to control random serial number appending and time parsing behavior. (#43603) - `exporter/elasticsearch`: Add support for latest OTEL SemConv version and fix Elasticsearch exporter ECS mapping for message.destination.name which is different for Elastic spans or transactions (#43805, #43806) - `exporter/elasticsearch`: Add helpful error hint for illegal_argument_exception when using OTel mapping mode with Elasticsearch < 8.12 (#39282) When using OTel mapping mode (default from v0.122.0) with Elasticsearch versions < 8.12, the exporter now provides a more descriptive error message explaining that OTel mapping mode requires Elasticsearch 8.12+ and suggests either upgrading Elasticsearch or using a different mapping mode. This helps users who encounter the generic illegal_argument_exception error understand the root cause and resolution steps. - `exporter/googlecloudstorage`: Add googlecloudstorageexporter to the contrib distribution (#44063) - `exporter/kafka`: Adds a new configuration option to the Kafka exporter to control the linger time for the producer. (#44075) Since `franz-go` now defaults to `10ms`, it's best to allow users to configure this option to suit their needs. - `extension/datadog`: Adds collector resource attributes to collector metadata payload (#43979) The Collector's resource attributes can be set under `service::telemetry::resource`. - `extension/encoding`: Add most of the AWS ELB fields to the AWSLogsEncoding. (#43757) - `receiver/datadog`: Adding log telemetry functionality to the existing datadog receiver component. (#43841) - `receiver/github`: Add `include_span_events` for GitHub Workflow Runs and Jobs for enhanced troubleshooting (#43180) - `receiver/journald`: Add root_path and journalctl_path config for running journald in a chroot (#43731) - `receiver/prometheusremotewrite`: Skip emitting empty metrics. (#44149) - `receiver/prometheusremotewrite`: prometheusremotewrite receiver now accepts metric type unspcified histograms. (#41840) - `receiver/redis`: Add redis metrics that are present in telegraf: cluster_enabled, tracking_total_keys, used_memory_overhead, used_memory_startup (#39859) - `receiver/splunkenterprise`: added pagination for search cases which may return more than the default 100 results (#43608) - `receiver/webhookevent`: Allow configuring larger webhook body size (#43544) The receiver allows configuration a larger body buffer if needed. It also returns an error if the body exceeds the configured limit. ### 🧰 Bug fixes 🧰 - `cmd/opampsupervisor`: Redacts HTTP headers in debug message (#43781) - `connector/datadog`: Datadog connector no longer stalls after a downstream component errors (#43980) - `exporter/awsxray`: Fix conversion of the inProgress attribute into a Segment field instead of metadata (#44001) - `exporter/datadog`: Fix a panic from a race condition between exporter shutdown and trace export (#44068) - `exporter/elasticsearch`: Handle empty histogram buckets to not result in an invalid datapoint error. (#44022) - `exporter/elasticsearch`: Update the ecs mode span encode to correctly encode `span.links` ids as `trace.id` and `span.id` (#44186) - `exporter/elasticsearch`: Improve error message when an invalid Number data point is received. (#39063) - `exporter/loadbalancing`: Ensure loadbalancing child exporters use the OTLP type so backend creation succeeds (#43950) - `exporter/stef`: Fix STEF connection creation bug (#44048) On some rare occasions due to a bug STEF exporter was incorrectly disconnecting just | created STEF connection causing connection error messages in the log. This fixes the bug. - `extension/bearertokenauth`: Remove error messages `fsnotify: can't remove non-existent watch` when watching kubernetes SA tokens. (#44104) - `processor/k8sattributes`: The fix is on k8sattributes processor to only set k8s.pod.ip attribute when it is requested in the extract.metadata configuration. (#43862) Previously, the `k8s.pod.ip` attribute was always populated, even if it was not included in the `extract.metadata` list. This fix ensures that `k8s.pod.ip` is set only when explicitly requested, aligning the processor behavior with configuration expectations. - `receiver/ciscoos`: Rename receiver component name from `ciscoosreceiver` to `ciscoos` to follow naming conventions. (#42647) Users must update their collector configuration from `ciscoosreceiver/device` to `ciscoos/device`. This is acceptable as the component is in alpha stability. - `receiver/sqlserver`: Resolved inaccurate data sampling in query metrics collection. (#44303) - `receiver/sqlserver`: Fix incorrect logic in query metrics window calculation. (#44162) - `receiver/sqlserver`: Fixed a bug in effective value calculation of lookback time in top query collection. (#43943) - `receiver/windowsservice`: Fixed an error where incorrect permissions and bad error handling were causing the receiver to stop reporting metrics (#44087) ## v0.139.0 ### 🛑 Breaking changes 🛑 - `receiver/sqlserver`: Standardizing the unit interpretation of lookback_time in config for top query collection (#43573) Like other interval related config values, lookback_time also should suffix 's' to represent time in seconds. ### 💡 Enhancements 💡 - `connector/count`: Support for setting attributes from scope and resource levels. Precedence order: Span (or Log Record, etc.) > Scope attributes > Resource attributes. (#41859) - `connector/spanmetrics`: Add `add_resource_attributes` opt-in config option to keep resource attributes in generated metrics (#43394) This configuration option allows users to override the `connector.spanmetrics.excludeResourceMetrics` feature gate and restore the old behavior of including resource attributes in metrics. This is needed for customers whose existing dashboards depend on resource attributes being present in the generated metrics. - `exporter/azuremonitor`: Add authenticator extension support to the Azure Monitor exporter. (#41004) - `exporter/azuremonitor`: Updated azure monitor exporter to use OTEL semantic conventions 1.34.0 (#41289) - `exporter/datadog`: Disabled "Successfully posted payload" log that was emitted every 500 metric exports (#43594, #43879) - `exporter/datadog`: Set sending queue batch default values to match exporter helper default: flush timeout 200ms, min size 8192, no max size. (#43848) The default values now match exactly the default in batch processor. - `exporter/elasticsearch`: Update Elasticsearch exporter ECS mapping mode encoder semantic convention mappings (#43805) - `exporter/googlecloudstorage`: Implement skeleton of googlecloudstorage exporter. (#43123) - `exporter/influxdb`: Fix InfluxDB Exporter precision configuration to allow choice of precision instead of hardcoding 'ns'. (#43645) - `extension/awslogs_encoding`: Enhance CloudTrail log parsing by adding support for digest files (#43403) - `extension/awslogs_encoding`: Add support for AWS Network Firewall logs. (#43616) The AWS Logs Encoding Extension now supports unmarshaling AWS Network Firewall logs into OpenTelemetry logs format. - `extension/awslogs_encoding`: Enhance CloudTrail log parsing by adding extra fields (#43403) - `extension/googlecloudlogentry_encoding`: Add encoding.format attribute to GCP encoding extension to identify the source format. (#43320) - `internal/aws`: Upgrade k8s libraries from v0.32.x to v0.34.x (#43890) - `pkg/ottl`: Support taking match patterns from runtime data in the `replace_all_patterns` and `replace_pattern` functions. (#43555) - `pkg/ottl`: Add TrimPrefix and TrimSuffix to OTTL (#43883) This is a much optimal way to remove prefix/suffix compare with `replace_pattern(name, "^prefixed", "")` - `pkg/ottl`: Added support for dynamic delimiter in Split() function in OTTL. (#43555) - `pkg/ottl`: Added support for dynamic delimiter in Concat() function in OTTL. (#43555) - `pkg/ottl`: Added support for dynamic prefix/suffix in HasPrefix and HasSuffix functions in OTTL. (#43555) - `pkg/ottl`: Remove unnecessary regexp compilation every execution (#43915) - `pkg/ottl`: Add `unit` and `type` subpaths for `profile.sample_type` and `profile.period_type`. (#43723) - `pkg/ottl`: Support taking match patterns from runtime data in the `replace_all_matches` and `replace_match` functions. (#43555) - `pkg/ottl`: Support taking match patterns from runtime data in the `IsMatch` function. (#43555) - `pkg/ottl`: Remove unnecessary full copy of maps/slices when setting value on sub-map (#43949) - `pkg/ottl`: Add XXH128 Converter function to converts a `value` to a XXH128 hash/digest (#42792) - `pkg/ottl`: Support dynamic keys in the `delete_key` and `delete_matching_keys` functions, allowing the key to be specified at runtime. (#43081) - `pkg/ottl`: Support paths and expressions as keys in `keep_keys` and `keep_matching_keys` (#43555) - `pkg/ottl`: Support dynamic pattern keys in `ExtractPatterns` and `ExtractGrokPatterns` functions, allowing the keys to be specified at runtime. (#43555) - `pkg/ottl`: Added support for dynamic encoding in Decode() function in OTTL. (#43555) - `processor/filter`: Allow setting OTTL conditions to filter out whole resources (#43968) If any conditions set under the `resource` key for any signals match, the resource is dropped. - `processor/k8sattributes`: Support extracting deployment name purely from the owner reference (#42530) - `processor/metricstarttime`: Graduate the metricstarttimeprocessor to beta. (#43656) - `processor/redaction`: Extend database query obfuscation to span names. Previously, database query obfuscation (SQL, Redis, MongoDB) was only applied to span attributes and log bodies. Now it also redacts sensitive data in span names. (#43778) - `processor/resourcedetection`: Add the `dt.smartscape.host` resource attribute to data enriched with the Dynatrace detector (#43650) - `receiver/azureeventhub`: Adds support for receiving Azure app metrics from Azure Event Hubs in the azureeventhubreceiver (#41343, #41367) The azureeventhubreceiver now supports receiving custom metrics emitted by applications to Azure Insights and forwarded using Diagnostic Settings to Azure Event Hub. There's also on optional setting to aggregate received metrics into a single metric to keep the original name, instead of multiply the metrics by added suffixes `_total`, `_sum`, `_max` etc. - `receiver/ciscoosreceiver`: `ciscoosreceiver`: Add new receiver for collecting metrics from Cisco network devices via SSH (#42647) Supports Cisco IOS, IOS-XE, and NX-OS devices with SSH-based metric collection. Initial implementation includes system scraper for device availability and connection metrics. - `receiver/gitlab`: Promote GitLab receiver to Alpha stability (#41592) - `receiver/jmx`: Add JMX metrics gatherer version 1.51.0-alpha (#43666) - `receiver/jmx`: Add JMX scraper version 1.51.0-alpha (#43667) - `receiver/pprof`: convert google/pprof to OTel profiles (#42843) - `receiver/redfish`: this branch provides the first concrete implementation of the new component (#33724) ### 🧰 Bug fixes 🧰 - `exporter/clickhouse`: Fix a bug in the exporter factory resulting in a nil dereference panic when the clickhouse.json feature gate is enabled (#43733) - `exporter/kafka`: franz-go: Fix underreported kafka_exporter_write_latency metric (#43803) - `exporter/loadbalancing`: Fix high cardinality issue in loadbalancing exporter by moving endpoint from exporter ID to attributes (#43719) Previously, the exporter created unique IDs for each backend endpoint by appending the endpoint to the exporter ID (e.g., loadbalancing_10.11.68.62:4317). This caused high cardinality in metrics, especially in dynamic environments. Now the endpoint is added as an attribute instead. - `exporter/pulsar`: Fix the oauth2 flow for pulsar exporter by adding additional configuration fields (#435960) Fixes the oauth2 authentication flow in pulsar exporter by exposing additional configuration like `private_key` and `scope`. - `processor/metricstarttime`: Do not set start timestamp if it is already set. (#43739) - `processor/tail_sampling`: Fix panic when invalid regex was sent to string_attribute sampler (#43735) - `receiver/awss3`: Fix S3 prefix trimming logic in awss3reader to correctly handle empty, single slash '/', and double slash '//' prefixes. (#43587) This fix ensures the S3 object prefix is generated consistently for all prefix formats (e.g., `""`, `/`, `//`, `/logs/`, `//raw//`), preventing malformed S3 paths when reading from buckets with non-standard prefixes. - `receiver/hostmetrics`: Allow process metrics to be recorded if the host does not have cgroup functionality (#43640) - `receiver/kafka`: Corrected the documentation for the Kafka receiver to accurately the supported/default group balancer strategies. (#43892) - `receiver/postgresql`: Change the unit of the metric `postgresql.table.vacuum.count` to be `vacuum` instead of vacuums (#43272) - `receiver/prometheus`: Fix missing staleness tracking leading to missing no recorded value data points. (#43893) - `receiver/prometheusremotewrite`: Fixed a concurrency bug in the Prometheus remote write receiver where concurrent requests with identical job/instance labels would return empty responses after the first successful request. (#42159) - `receiver/pulsar`: Fix the oauth2 flow for pulsar exporter by adding additional configuration fields (#43596) Fixes the oauth2 authentication flow in pulsar receiver by exposing additional configuration like `private_key` and `scope`. - `receiver/receiver_creator`: Fix annotation-discovery config unmarshaling for nested configs (#43730) ## v0.138.0 ### 🛑 Breaking changes 🛑 - `connector/datadog`: Mark NativeIngest as stable. (#104622) - `connector/signaltometrics`: Drop `signaltometrics.service.{name, namespace}` resource attribute from produced metrics. (#43148) - `exporter/datadog`: Remove `logs::dump_payloads` config option from `datadogexporter` config. (#43427) Please remove the previously deprecated `logs::dump_payloads` config option from your `datadogexporter` config. - `exporter/elasticsearch`: Remove batcher and related config in favor of sending queue (#42718) Previously deprecated `batcher` configuration is removed. `num_consumers` and `flush` are now deprecated as they conflict with `sending_queue` configurations. - `extension/googlecloudlogentry_encoding`: Parse VPC flow logs into log record attributes instead of placing them in the body directly. (#43017) ### 🚀 New components 🚀 - `receiver/icmpcheckreceiver`: Add initial skeleton of ICMP check receiver (README, config, factory, metadata) with In Development stability. (#29009) - `receiver/redfish`: adds a redfish receiver (#33724) ### 💡 Enhancements 💡 - `all`: Changelog entries will now have their component field checked against a list of valid components. (#43179) This will ensure a more standardized changelog format which makes it easier to parse. - `cmd/telemetrygen`: Enable creation of attributes with values of slice type (#39018) - `exporter/coralogix`: Add HTTP/protobuf protocol support alongside existing gRPC transport. (#43216) The exporter now supports both gRPC (default) and HTTP/protobuf protocols for sending telemetry data. HTTP transport enables proxy support and provides an alternative for environments where gRPC is restricted. Configure using the `protocol` field with values "grpc" or "http". - `exporter/datadog`: Make defaults for `sending_queue::batch` section to work out of the box with Datadog API intake limits. (#43082) - `exporter/elasticsearch`: Support experimental 'encoding.format' scope attribute for dataset routing. (#42844) - `exporter/kafka`: Add support for partitioning log records by trace ID (#39146) - `exporter/prometheus`: Enable `sending_queue` section for the Prometheus exporter. (#42629) - `extension/awslogs_encoding`: Add feature gate to set aws.vpc.flow.start timestamp field to ISO8601 format (#43392) Feature gate ID: extension.awslogsencoding.vpcflow.start.iso8601 When enabled, the aws.vpc.flow.start field will be formatted as an ISO-8601 string instead of a Unix timestamp integer in seconds since epoch. Default behavior remains unchanged for backward compatibility. Enable with: --feature-gates=extension.awslogsencoding.vpcflow.start.iso8601 - `extension/encoding`: Add user_agent.original, destination.address, destination.port, url.domain to ELB access logs (#43141) - `internal/kafka`: Log a hint when broker connections fail due to possible TLS misconfiguration (#40145) - `pkg/ottl`: Add XXH3 Converter function to converts a `value` to a XXH3 hash/digest (#42792) - `pkg/sampling`: Note that pkg/sampling implements the new OpenTelemetry specification (#43396) - `processor/filter`: Add profiles support (#42762) - `processor/isolationforest`: Add adaptive window sizing feature that automatically adjusts window size based on traffic patterns, memory usage, and model stability (#42751) The adaptive window sizing feature enables dynamic adjustment of the isolation forest sliding window size based on: - Traffic velocity and throughput patterns - Memory usage and resource constraints - Model stability and performance metrics This enhancement improves resource utilization and anomaly detection accuracy for varying workload patterns. - `processor/resourcedetection`: Add Openstack Nova resource detector to gather Openstack instance metadata as resource attributes (#39117) The Openstack Nova resource detector has been added to gather metadata such as host name, ID, cloud provider, region, and availability zone as resource attributes, enhancing the observability of Openstack environments. - `processor/resourcedetection`: Add Azure availability zone to resourcedetectionprocessor (#40983) - `receiver/azuremonitor`: parallelize calls by subscriptions in Batch API mode (#39417) - `receiver/ciscoosreceiver`: Add `ciscoosreceiver` to collect metrics from Cisco OS devices via SSH (#42647) Supports SSH-based metric collection from Cisco devices including: - System metrics (CPU, memory utilization) - Interface metrics (bytes, packets, errors, status) - Configurable scrapers for modular metric collection - Device authentication via password or SSH key - `receiver/gitlab`: Add span attributes in GitLab receiver (#35207) - `receiver/hostmetrics`: Add metrics, Linux scraper, and tests to hostmetricsreceiver's nfsscraper (#40134) - `receiver/icmpcheckreceiver`: Add complete scraping implementation with ICMP ping/echo to collect metrics (#29009) Replaces skeleton implementation with full production-ready collector functionality. Includes metrics metadata and completed configuration. Includes real scraper implementation that performs ICMP checks and collects metrics. Includes README docs. - `receiver/mysql`: Support query-level collection. (#41847) Added top query (most time consumed) collection. The query will gather the queries took most of the time during the last query interval and report related metrics. The number of queries can be configured. This will enable user to have better understanding on what is going on with the database. This enhancement empowers users to not only monitor but also actively manage and optimize their MySQL database performance based on real usage patterns. - `receiver/prometheus`: added NHCB(native histogram wit custom buckets) to explicit histogram conversion (#41131) - `receiver/redis`: Add `ClusterInfo` capability to `redisreceiver` (#38117) - `receiver/splunkenterprise`: Added a new metric `splunk.license.expiration.seconds_remaining` to report the time remaining in seconds before a Splunk Enterprise license expires. (#42630) - Includes the following attributes: `status`, `label`, `type`. - `receiver/sqlserver`: Removing instance name usage in the SQL for top-query collection. (#43558) Additional config of instance name is not required for collecting the top queries. - `receiver/syslog`: Promote Syslog receiver to beta stability (#28551) ### 🧰 Bug fixes 🧰 - `exporter/awss3`: Support compression with the sumo_ic marshaller (#43574) - `exporter/elasticsearch`: Ensure metadata keys are always propagated in client context with batching enabled. (#41937) - `exporter/prometheus`: Fixes data_type field formatting in the error logs message when exporting unknown metrics types - e.g. native histograms. (#43595) - `exporter/syslog`: Fix timestamp formatting in rfc5424 syslog messages to use microsecond precision (#43114) - `processor/metricstarttime`: Fixes bug where adjustment only relied on the DoubleValue and ignored the IntValue (#42202) - `receiver/k8s_cluster`: Fix for k8sclusterreceiver to handle empty containerID in ContainerStatus (#43147) - `receiver/libhoney`: fix panic when decompressing poorly formatted data (#42272) When decompressing poorly formatted data, the receiver would panic. This has now been fixed. - `receiver/oracledb`: Fix to use time from database clock for more accurate collection window calculation. (#43621) Fixed the top-query collection logic to use database clock instead of the time from collector instance. ## v0.137.0 ### 🛑 Breaking changes 🛑 - `spanmetricsconnector`: Exclude all resource attributes in spanmetrics (#42103) This change aligns with the ServiceGraph implementation and may introduce a breaking change: - Users utilizing Prometheus remote write will not experience a breaking change. - Users using OTLP/HTTP may encounter a breaking change. The change is currently guarded by the feature gate `connector.spanmetrics.excludeResourceMetrics` and is disabled by default. It will be enabled by default in the next release. - `spanmetricsconnector`: Change default duration metrics unit from `ms` to `s` (#42462) This change introduces a breaking change, which is now guarded by the feature gate `connector.spanmetrics.useSecondAsDefaultMetricsUnit`. Currently, the feature gate is disabled by default, so the unit will remain `ms`. After one release cycle, the unit will switch to `s` and the feature gate will also be enabled by default. - `splunkhecexporter`: Removed deprecated `HecToOtelAttrs` configuration from splunkhecexporter (#43005) - `signalfxreceiver`: Removed deprecated configuration option: access_token_passthrough (#43048) As access token passthrough option is no longer supported, to achieve similar behavior configure your collector to use the `headers_setter` extension to pass the access token. - `stefexporter, stefreceiver`: Update to STEF 0.0.8. This is a breaking change in protocol format. (#42949) Make sure to update both ends (receiver and exporter) to the same STEF version. ### 🚩 Deprecations 🚩 - `awslogsencodingextension`: Rename awslogsencodingextension format values to shorter, more concise identifiers. Old format values are still supported until v0.138.0. (#42901) - `pkg/datadog, exporter/datadog, extension/datadog`: Deprecates StaticAPIKeyCheck, stops doing validation for API key characters in Datadog exporter and extension. (#42677) This was causing issues to users since validation of secrets is challenging ### 🚀 New components 🚀 - `googlecloudstorageexporter`: Add skeleton of googlecloudstorage exporter (#42137) - `receiver/ciscoosreceiver`: Add initial skeleton of Cisco OS receiver (README, config, factory, metadata) with In Development stability. (#42647) This PR adds structure only (no scraping implementation yet). Scrapers and SSH-based collection logic (BGP, Environment, Facts, Interfaces, Optics) will be added in follow-up PRs. - `unrollprocessor`: Adds a processor that generically takes a log body of slices and creates new entries from that slice. (#42491) - `resourcedetectionprocessor`: Added Oracle Cloud resource detection support to resourcedetectionprocessor, enabling automatic population of Oracle Cloud-specific resource attributes. (#35091) This update allows the OpenTelemetry Collector to detect and annotate telemetry with Oracle Cloud resource metadata when running in Oracle Cloud environments. Includes new unit tests and documentation. ### 💡 Enhancements 💡 - `redactionprocessor`: Add support for URL sanitization in the redaction processor. (#41535) - `unrollprocessor`: Bump the stability to Alpha, and include it in otelcontribcol (#42917) - `awscloudwatchlogsexporter`: Adding yaten2302 as code owner for awscloudwatchlogsexporter, move it from unmaintained to alpha (#43039) - `coralogixexporter`: Add Automatic AWS PrivateLink set up via new `private_link` configuration option (#43075) When enabled, the exporter will automatically use the AWS PrivateLink endpoint for the configured domain. If the domain is already set to a PrivateLink one, no further change to the endpoint will be made. - `receiver/kafkametricsreceiver`: Add support for using franz-go client under a feature gate (#41480) - `receiver/k8seventsreceiver`: Added support for Leader Election into `k8seventsreceiver` using `k8sleaderelector` extension. (#42266) - `receiver/k8sobjectsreceiver`: Switch to standby mode when leader lease is lost instead of shutdown (#42706) - `kafkareceiver`: Add `max_partition_fetch_size` configuration option to kafkareceiver (#43097) - `processor/resourcedetection`: Add support for DigitalOcean in resourcedetectionprocessor (#42803) - `processor/resourcedetection`: Add support for upcloud in resourcedetectionprocessor (#42801) - `receiver/kafka`: Add support for disabling KIP-320 (truncation detection via leader epoch) for Franz-Go (#42226) - `haproxyreceiver`: Add support for act, weight, ctime, qtime, rtime, bck and slim metrics from HAProxy (#42829) - `hostmetricsreceiver`: Add useMemAvailable feature gate to use the MemAvailable kernel's statistic to compute the "used" memory usage (#42221) - `otlpencodingextension`: Promote the otlpencodingextension extension to beta. (#41596) - `receiver/kafkareceiver`: Use franz-go client for Kafka receiver as default, promoting the receiver.kafkareceiver.UseFranzGo feature gate to Beta. (#42155) - `oracledbreceiver`: Add `service.instance.id` resource attribute (#42402) The `service.instance.id` resource attribute is added in the format `:/` to uniquely identify Oracle DB hosts. This resource attribute is enabled by default for metrics and logs. - `extension/SumologicExtension`: removing collector name from credential path for sumologic extension (#42511) - `opensearchexporter`: Add support for bodymap mapping mode (#41654) The bodymap mapping mode supports only logs and uses the body of a log record as the exact content of the OpenSearch document, without any transformation. - `tailsamplingprocessor`: Add support for extensions that implement sampling policies. (#31582) Extension support for tailsamplingprocessor is still in development and the interfaces may change at any time. - `telemetrygen`: Add span links support to telemetrygen (#43007) The new --span-links flag allows generating spans with links to previously created spans. Each span can link to random existing span contexts, creating relationships between spans for testing distributed tracing scenarios. Links include attributes for link type and index identification. - `telemetrygen`: Add load size to telemetrygen metrics and logs. (#42322) ### 🧰 Bug fixes 🧰 - `awsxrayexporter`: infer downstream service for producer spans (#40995) - `azureeventhubreceiver`: Use `$Default` as the default consumer group with the new azeventhubs SDK (#43049) - `azureeventhubreceiver`: Offset configuration option is now correctly honored, and the default start position is set to latest. (#38487) - `elasticsearchexporter`: Fix routing of collector self-telemetry data (#42679) - `elasticsearchexporter`: profiling: fix fetching location for stack (#42891) - `receiver/googlecloudmonitoring`: Add metric labels from Google Cloud metrics to all OTel metric attributes (#42232) - `jmxreceiver`: Fix the jmx-scraper hash for version 1.49.0 (#121332) - `postgreqsqlreceiver`: Fix for memory leak when using top queries (#43076) - `ntpreceiver`: Fix missing resource attribute 'ntp.host' to ntpreceiver metrics (#43129) - `receiver/k8seventsreceiver`: Prevent potential panic in the events receiver by safely checking that informer objects are *corev1.Event before handling them. (#43014) - `awscloudwatchlogexporter, awsemfexporter, awsxrayexporter`: Fix support for role_arn (STS, short-lived token authentication). (#42115) - `jmxreceiver`: restart the java process on error (#42138) Previously, the java process would not restart on error. By default, this receiver will now always restart the process on error. - `processor/k8sattributes`: Use podUID instead podName to determine which pods should be deleted from cache (#42978) - `kafka`: Fix support for protocol_version in franz-go client (#42795) - `libhoneyreceiver`: return full array of statuses per event (#42272) Libhoney has a per-event-within-each-batch response code array for each batch received. This has now been implemented for both initial parsing errors as well as downstream consumer errors. - `telemetrygen`: Publish int and bool attributes for logs (#43090) - `oracledbreceiver`: Fix for wrong trace id in oracle top query records (#43111) - `oracledbreceiver`: Fix for memory leak in top queries and query samples collection. (#43074) - `prometheusexporter, prometheusremotewriteexporter`: Connect pkg.translator.prometheus.PermissiveLabelSanitization with relevant logic. (#43077) - `postgresqlreceiver`: Properly set `network.peer.address` attribute (#42447) - `postgresqlreceiver`: Fix for inflated metric values in query metrics collection (#43071) - `prometheusexporter`: Fix 'failed to build namespace' logged as error when namespace is not configured (#43015) - `signalfxexporter`: Add HostID resource attribute to Histogram data in OTLP format (#42905) - `statsdreceiver`: Fix a data race in statsdreceiver on shutdown (#42878) ## v0.136.0 ### 🛑 Breaking changes 🛑 - `countconnector`: Upgrade profiles proto to 1.8.0 (#42526) - `datadogexporter`: Deprecate zorkian codepath (#17373) Feature gate exporter.datadogexporter.metricexportnativeclient is now deprecated; the default metrics exporter is now Metrics Export Serializer unless feature gate exporter.datadogexporter.metricexportserializerclient is disabled. See https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.122.0 and #37930 for more info about Metrics Export Serializer. - `elasticsearchexporter`: Upgrade profiles proto to 1.8.0 (#42526) - `internal/kafka`: Disable Kafka client metrics (#42662) We disable publishing Kafka client metrics to brokers, since they were not added intentionally and may lead to log spam when the broker does not really support metrics. We may make this configurable in the future. - `golden`: Upgrade profiles proto to 1.8.0 (#42526) - `pkg/ottl`: Upgrade profiles proto to 1.8.0 (#42526) See proto changelog. https://github.com/open-telemetry/opentelemetry-proto/blob/main/CHANGELOG.md#180---2025-09-02 - `signaltometricsconnector`: Upgrade profiles proto to 1.8.0 (#42526) - `transformprocessor`: Upgrade profiles proto to 1.8.0 (#42526) ### 💡 Enhancements 💡 - `azureblobexporter`: Added template_enabled option to azureblobexporter blob_name_format to enable or disable template rendering. (#42643) - `prometheusremotewritereceiver`: Adds support to accept METRIC_TYPE_UNSPECIFIED as gauge type (#41840) - `isolationforestprocessor`: Add comprehensive unit tests with 93% coverage (#42693) - `exporter/awss3`: Add S3PartitionTimezone config value to be able to change the timezone used for time-based partitioning (#42319) - `clickhouseexporter`: Add TLS configuration for cert based authentication. (#22805) - `telemetrygen`: Updates the semconv to use 1.37.0 (#42567) - `coralogixexporter`: Enable rate limiter mechanism in the Coralogix exporter. To disable it set `rate_limiter.enabled` to `false`. (#42552) - `failoverconnector`: Adds queue_settings to failoverconnector to enable queueing on the "exporter portion" of the connector. (#33077) - `farotranslator, faroreceiver`: Do not use faro event timestamp as the log record timestamp (#42600) Faro events originate in the user's browser, where the local clock may differ from actual time. | As a result, log record timestamps can be inaccurate, leading to ingestion issues (e.g., timestamps too old or too far in the future). - `processor/k8sattributesprocessor`: Add support for k8s.cronjob.uid attribute in k8sattributesprocessor (#42557) - `awslogsencodingextension`: Add instrumentation scope attributes to aws logs (#42788) - `opampsupervisor`: Add support for client initiated OpAMP heartbeats in the supervisor. (#42533) - `internal/tools`: Add support for modernize in Makefile (#42542) - `processor/resourcedetection`: Add support for linode cloud in resourcedetectionprocessor (#42543) - `processor/resourcedetectionprocessor`: Add support for Scaleway host image attributes in the resourcedetectionprocessor (#42682) - `processor/resourcedetectionprocessor`: Add support for Vultr cloud provider in the resourcedetectionprocessor (#42569) - `spanmetricsconnector`: Supports adding the `collector.instance.id` attribute to data points generated by the spanmetrics connector. (#40400) This feature currently in alpha stage, user should enable it by feature-gate `--feature-gates=+connector.spanmetrics.includeCollectorInstanceID` - `processor/resourcedetectionprocessor`: Add support for Scaleway cloud provider in the resourcedetectionprocessor (#42664) - `exporter/awss3exporter`: adds configuration field 's3_base_prefix' to be able to set a base path for all S3 file uploads (#42661) - `journaldreceiver`: Enable reading from all journals, including remote ones. A new option `merge` is added to the configuration. (#39188) - `kafkametricsreceiver`: Implement client reset for recoverable errors in Sarama calls (#41363) This change implements client reset functionality to address recoverable errors in Sarama calls, such as connection resets and EOF errors. When a recoverable error is encountered, the client is reset, enabling the scraper to reconnect and resume metric collection seamlessly. - `tailsamplingprocessor`: Set a `tailsampling.cached_decision` attribute on traces that were sampled by the decision cache. (#42535) - `postgresqlreceiver`: Including execution time metric for currently running queries in query samples. (#42429) The duration for currently running queries is calculated using the query_start time available in pg_stat_activity table. - `receiver/k8scluster`: Add experimental metric for container status reason (#32457) - `telemetrygen`: Add --allow-export-failures flag to telemetrygen to continue running when export operations fail (instead of terminating) (#42135) - `telemetrygen`: Add exponential histogram metric type to telemetrygen (#42322) - `countconnector`: Updates the countconnector metric timestamps to use earliest timestamp from batch as start timestamp and latest as timestamp, instead of using timestamp from metric creation time. (#40573) ### 🧰 Bug fixes 🧰 - `receiver/snowflake, receiver/sqlquery`: Fix panic on startup caused by gosnowflake `v1.16.0` (#42605) The solution was to downgrade the dependency version to `v1.15.0`. For more information, refer to the [upstream gosnowflake issue](https://github.com/snowflakedb/gosnowflake/issues/1533) - `elasticsearchexporter`: Fix a bug where data stream attributes in 'none' mapping mode have invalid prefix. (#42454) - `kafkaexporter`: Fix bug where Kafka exporter ignored `auth.tls` configuration syntax. (#42754) - `extension/storage`: Fix 'recreate' rename file only on panic (#41802) * This recovers from a panic when the bbolt db is corrupted and renames the file when a panic occurs. * This changes the `recreate` behavior to not rename the file upon every start of the collector. - `isolationforestprocessor`: This PR fixes goroutine leaks in the isolation forest processor caused by improper shutdown coordination of background `modelUpdateLoop` goroutines. (#42675) - `servicegraphconnector`: Fix exponential histogram doesn't clean when expire (#42019) - `awss3receiver`: Ensures default wait time is applied in SQS configuration when not explicitly set. (#42608) - `exporter/loadbalancing`: Drop resources if the service routing key does not exist (#41550) - `processor/redaction`: Support redaction of scope level atrributes (#42659) - `faroexporter`: Fix success response handling in faroexporter so any HTTP 2xx status code indicates success instead of only 202 Accepted. (#42658) - `splunkenterprisereceiver`: Fix a typo from a previous PR implementing the search artifact size metrics, which has caused errors from parsing empty strings. (#42615) - `signalfxexporter`: Only validate the root_path of the collector if `sync_host_metadata` is enabled. (#42688) ## v0.135.0 ### 🛑 Breaking changes 🛑 - `apachereceiver`: Add number of connections per async state metrics. (#41886) - `githubreceiver`: Update semantic conventions from v1.27.0 to v1.37.0 with standardized VCS and CICD attributes (#42378) - Resource attributes changed: `organization.name` -> `vcs.owner.name`, `vcs.vendor.name` -> `vcs.provider.name` - Trace attributes now use standardized VCS naming: `vcs.ref.head.type` -> `vcs.ref.type` - Added new standardized attributes: `vcs.ref.base.name`, `vcs.ref.base.type`, `vcs.ref.type` - Delta metrics now include base reference tracking attributes - Updated schema URL to https://opentelemetry.io/schemas/1.37.0 - `k8sattributesprocessor`: Introduce allowLabelsAnnotationsSingular feature gate to use singular format for k8s label and annotation resource attributes (#39774) The feature gate, when enabled, will change the default resource attribute key format from k8s..labels. to k8s..label.. Same applies for annotations. - `receiver/sapm`: The `SAPM Receiver` component has been removed from the repo and is no longer being published as it has been deprecated since 22nd October 2024 and the removal date of April 2025 has passed. (#41411) ### 💡 Enhancements 💡 - `transformprocessor`: Add support for merging histogram buckets. (#40280) The transformprocessor now supports merging histogram buckets using the `merge_histogram_buckets` function. - `k8seventsreceiver`: Adds scope name and version to logs (#42426) - `googlecloudlogentry_encoding`: Add support for request attributes and destination attributes in cloud audit logs (#42160) - `azureeventhubreceiver`: Added feature flag to use the new Azure SDK (#40795) - `dockerstatsreceiver`: Add Windows support (#42297) The dockerstatsreceiver now supports Windows hosts. - `elasticsearchexporter`: Populate profiling-hosts index with resource attribute information. (#42220) - `tinybirdexporter`: Limit request body to 10MB to avoid exceeding the EventsAPI size limit. (#41782) - `exporter/kafkaexporter`: Use franz-go client for Kafka exporter as default, promoting the exporter.kafkaexporter.UseFranzGo feature gate to Beta. (#42156) - `exporter/kafka`: Add allow_auto_topic_creation producer option to kafka exporter and client (#42468) - `processor/resourcedetection`: Add support for hetzner cloud in resourcedetectionprocessor (#42476) - `kafkareceiver`: Add `rack_id` configuration option to enable rack-aware replica selection (#42313) When configured and brokers support rack-aware replica selection, the client will prefer fetching from the closest replica, potentially reducing latency and improving performance. - `statsdreceiver`: Introduce explicit bucket for statsd receiver (#41203, #41503) - `coreinternal/aggregateutil`: Aggregate exponential histogram data points when different offsets are present (#42412) - `prometheusremotewriteexporter`: Remove unnecessary buffer copy in proto conversion (#42329) - `pkg/translator/prometheusremotewrite`: `FromMetricsV2` now supports translating exponential histograms. (#33661) The translation layer for Prometheus remote write 2 now supports exponential histograms but is not fully implemented and ready for use. - `processor/k8sattributes`: Support extracting labels and annotations from k8s DaemonSets (#37957) - `processor/k8sattributes`: Support extracting labels and annotations from k8s Jobs (#37957) - `k8sclusterreceiver`: Add option `namespaces` for setting a list of namespaces to be observed by the receiver. This supersedes the `namespace` option which is now deprecated. (#40089) - `k8sobjectsreceiver`: Adds the instrumentation scope name and version (#42290) - `receiver/kubeletstats`: Introduce k8s.pod.volume.usage metric. (#40476) - `datadogexporter`: Add alpha feature gate 'exporter.datadogexporter.InferIntervalForDeltaMetrics'. (#42494) This feature gate will set the interval for OTLP delta metrics mapped by the exporter when it can infer them. - `sqlserverreceiver`: Add `service.instance.id` resource attribute to all metrics and logs (#41894) The `service.instance.id` attribute is added in the format `:` to uniquely identify SQL Server hosts. ### 🧰 Bug fixes 🧰 - `awslogsencodingextension`: Fixed gzip header detection for mixed compressed/uncompressed files (#41884) The extension now properly detects gzip magic bytes (0x1f, 0x8b) before attempting decompression, preventing "gzip: invalid header" errors when processing files with .gz extensions that are not actually compressed. Affected formats: WAF logs, CloudTrail logs, CloudWatch subscription filter logs, and VPC Flow logs. - `opampsupervisor`: Always respond to `RemoteConfig` messages with a `RemoteConfigStatus` message (#42474) Previously the Supervisor would not respond if the effective config did not change. This caused issues where the same config with a different hash (e.g. reordered keys in the config) would not be reported and would appear unapplied by the Supervisor. - `elasticsearchexporter`: Ignore expected errors when making bulk requests to profiling indices. (#38598) - `libhoneyreceiver`: Properly handle compressed payloads (#42279) Compression issues now return a 400 status rather than panic. Exposes the http library's compression algorthms to let users override if needed. - `libhoneyreceiver`: Allow service.name with unset scope.name (#42432) This change allows the receiver to handle multiple service.names even if there are spans without the scope set. It also avoids a panic when a downstream consumer is missing. ## v0.134.0 ### 🛑 Breaking changes 🛑 - `receiver/awscloudwatchmetrics`: Remove unmaintained component (#42238) - `opencensusreceiver`: Remove the deprecated opencensus receiver. (#36791) - `opencensusexporter`: Remove the deprecated opencensus exporter. (#36791) - `pkg/ottl`: Keep the original map and continue processing keys if an error is encountered when calling an optional replacement function in `replace_all_patterns`. (#42359) ### 💡 Enhancements 💡 - `cmd/opampsupervisor`: Add metrics to the Supervisor application. (#40155) Add some metrics to the cmd/opampsupervisor application. The following metrics are added: - supervisor.collector.health_status: The health status of the collector. - `cfgardenobserver`: Move to alpha (#41586) - `exporter/prometheus`: Add debug logging for refused metric points. (#13643) - `httpcheckreceiver`: Add response body validation (#41325) The httpcheckreceiver now supports validating the response body using a few approaches. String matching, JSON path matching, size ranges, and regex matching are supported. - `httpcheckreceiver`: Fix race for timing of request steps (#42042) The httpcheckreceiver uses atomic operations to track the timing of request steps to avoid race conditions. - `pkg/ottl`: Avoid multiple copies of the Map in replace_all_patterns. (#42359) - `kafkareceiver`: Add profiles support (#41479) - `pkg/ottl`: Remove unnecessary Value initialization when setting an attribute/body (#42335, #42362) - `opampsupervisor`: Emit spans for handling OpAMP messages (#38724) - `pkg/ottl`: Add an `Index(target, value)` OTTL function which returns the index of the first occurrence of `value` in `target`. (#40351) - `pkg/stanza`: add `sanitize_utf8` operator to replace invalid UTF-8 characters. (#42028) - `internal/coreinternal`: Better error messages for attributes processing. ### 🧰 Bug fixes 🧰 - `elasticsearchexporter`: Fix the warning on Kibana when using `sum` operation on delta temporality sum metric mapped as a counter (#40804) - `failoverconnector`: fix for flaky test in failover_test.go (#42020) - `k8sattributesprocessor`: Allow service.namespace to be used in rules and fix docs (#40859) - `prometheusremotewriteexporter`: Make sure concurrency is set to the appropriate value (#41785) - `tailsamplingprocessor`: Fix a race condition in the tailsampling processor that could cause traces to be dropped prematurely. (#41656) - `sqlserverreceiver`: Fix memory leak from top queries and query samples features (#42302) The issue was caused by the misuse of the obfuscate library. - `telemetrygen`: Fix infinite duration bug and add tests. (#42170) ## v0.133.0 ### 🛑 Breaking changes 🛑 - `coralogixexporter`: Remove unused deprecated configgrpc.ClientConfig (#40853) - `googlecloudlogentry_encoding`: Parse cloud audit logs into log record attributes instead of placing it in the body as is. (#42035) - `all`: Increase minimum Go version to 1.24 (#41968) - `signaltometricsconnector`: Use configoptional for optional metric fields (#41922) - `routingprocessor`: Remove deprecated component routingprocessor (#19739) Please use the [routing connector](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/routingconnector) instead. ### 💡 Enhancements 💡 - `elasticsearchexporter`: Enhance telemetry metrics to include error.type attribute for better error categorization. (#41962) Improve the telemetry metrics by adding the `error.type` attribute to the `elasticsearch.docs.processed` metric. This change allows for better categorization and understanding of errors that occurs while processing documents. - `awslogsencodingextension`: Adds `aws.access_key.id` to CloudTrail logs and aligns `aws.resources` attribute fields with naming conventions. (#41815) - `k8sclusterreceiver`: Add optional experimental k8s.container.status.state metric (#32457, #32457) - `farotranslator`: Improve error hashing by draining exception values (#42032) - `faroreceiver`: Added Timestamp, ObservedTimestamp, SpanId, TraceId fields to the Log Record (#40800) - `kafkareceiver`: Add `on_permanent_error` option to `message_marking` configuration. (#41333) - `filelogreceiver`: Move filelog.decompressFingerprint feature gate to beta stage (#42189) - `googlecloudlogentry_encoding`: Add support to decode multiple logs (#41137) - `httpcheckreceiver`: Add request body to http requests (#41325) The httpcheckreceiver can be configured to send a request body to the target endpoint. - `tailsamplingprocessor`: Optimize telemetry collection in tailsamplingprocessor (#41888) - `zipkinexporter`: Include instrumentation scope attributes (#39206) - `oidcauthextension`: Add support for accessing custom JWT claims. (#41449) Users can now access JWT claims from OIDC Auth context allowing dynamic processing based on received JWT token. - `oracledbreceiver`: Add support for Oracle DB receiver to read session action as trace context. (#41878) - `oracledbreceiver`: Removing the toLowercase conversion on sql text in top_query payload. Also, adding child_address into the query_samples payload. (#37478) - `opensearchexporter`: Add dynamic index naming support for traces (#34746, #38595) - This feature supports trace index names in config. - It allows users to specify dynamic trace indices based on attributes. - It supports time-based index name formatting and fallback options. - Improves code consistency between logs and trace exporter. - `exporter/prometheusremotewriteexporter`: Improve logging of remote write errors (#41856) - `prometheusreceiver`: Remove temporary fix for metric name validation, fix upstream resolved (#42004) - `metricstarttimeprocessor`: Add reset detection to the starttimemetric strategy in the metricstarttimeprocessor (#41870) - `tailsamplingprocessor`: Add a new option to block on num traces overflow. (#41546) - `cmd/telemetrygen`: Support custom metric names via --otlp-metric-name flag (#42070) - `telemetrygen`: Allow `inf` duration for continuous run (#40225) - `textencodingextension`: Move textencodingextension to beta (#41595) - `receiver/webhookeventreceiver`: Adds configuration to split logs at JSON object boundaries. (#39766) - `webhookeventreceiver`: Move webhookevent receiver to beta (#41997) ### 🧰 Bug fixes 🧰 - `awss3receiver`: Fixed an issue where the AWS S3 receiver failed to retrieve data from S3 buckets when notified by SQS if the S3 key was URL-encoded. (#42027) - `jmxreceiver`: support `jmx_configs` for jmx scraper usecase (#41952) - `logdedupprocessor`: Fix UB caused by holding reference to mutable data. (#42147) - `metricstarttimeprocessor`: Fix UB caused by holding reference to mutable data. (#42151) - `libhoneyreceiver`: Parsing Span and Trace IDs no longer panic if there is a parsing issue. (#42200) - `vcenterreceiver`: Fixes a potential issue with vm collection without a types.VirtualMachineConfigInfo attached to the VM. (#42098) - `prometheusreceiver`: Fixes a bug where static configuration labels were dropped when using the Prometheus receiver. Previously, labels defined in the static config were not being applied to the metrics. (#41727) - `opencensusreceiver`: Perform graceful shutdown of HTTP server on shutdown (#42117) - `signaltometricsconnector`: Strictly validate configuration for component. (#41970) - `mysqlreceiver`: Fix for the conversion error on mysql.event_id. Setting an int (0) as default value in SQL. (#42040) - `windowseventlogreceiver`: Fixes issue for remote log collection where domain was not properly passed into EvtOpenSession syscall (#41950) ## v0.132.0 ### 🛑 Breaking changes 🛑 - `azuremonitorreceiver`: Updated `append_tags_as_attributes` configuration type from boolean to array. It controls which Azure resource tags are added as resource attributes to the metrics. The values can be a list of specific tag names or `["*"]` to include all tags. (#40988) - `elasticsearchexporter`: Change default flush::interval and batcher::flush_timeout to 10s (#41726) - `googlecloudlogentry_encoding`: Add 'observedTimestamp' and 'flags' field to resulting log, and throw error if log failed to parse. (#41467) - `googlecloudlogentry_encoding`: Fix type on apphub destination GCP fields (#41836) - `googlecloudlogentry_encoding`: Rename the remaining common fields in log entry to follow the semantic conventions. (#41087) - `googlecloudlogentry_encoding`: Use semantic conventions for the cloud log entry fields (part 1 of 2) (#41718) - `googlepubsubreceiver`: Remove build-in support for cloud_logging and raw_text encoding. (#41812) The build-in encodings now have alternative encoding extensions to replace them. - `stefexporter, stefreceiver`: Update STEF to v0.0.7. This is a breaking change in protocol. (#41858) - `postgresqlreceiver`: unify the configuration to align with mdatagen tools and enable events by default (#41700) Removed the existing query_sample_collection.enabled and top_query_collection.enabled flags in favor of using the field generated by mdatagen. Both collections are now enabled by default. ### 🚩 Deprecations 🚩 - `elasticsearchexporter`: Allow `sending_queue` to queue and batch based on the new API and deprecate `batcher` config (#41338) - `kafkareceiver`: Improve kafkareceiver internal metrics telemetry consistency, measure latency in seconds (#41109) Add a new metric kafka_receiver_records_delay to capture the time between producing and receiving a batch of records. Improve internal metrics telemetry consistency: kafka_broker_throttling_duration is deprecated in favor of kafka_broker_throttling_latency and will be removed in the next minor release kafka_receiver_latency is deprecated in favor of kafka_receiver_read_latency and will be removed in the next minor release kafka_receiver_messages is deprecated in favor kafka_receiver_records and will be removed in the next minor release ### 🚀 New components 🚀 - `isolationforestprocessor`: The processor applies the Isolation-Forest algorithm (an unsupervised, tree-based outlier-detection method) to every incoming span, trace, log, or metric. (#41707) It emits an anomaly score (iforest.anomaly_score) and/or a boolean flag (iforest.is_anomaly) inside the Collector—no external ML service required. ### 💡 Enhancements 💡 - `redactionprocessor`: Add database sanitization capability to the redaction processor. (#41647) - `elasticsearchexporter`: Enhance logs with additional metadata fields for failed requests to Elasticsearch bulk API (#41674) Metadata attributes are appended to the log fields, providing additional context for debugging failed requests to the Elasticsearch bulk API. - `awslogsencodingextension`: Add support for ELB Access Logs. (#40710) - `pkg/ottl`: Add `UUIDv7` function to generate v7 UUIDs. (#41268) - `oracledbreceiver`: Add options and child_address into oracle plan (#37478) Adding options and child_address into oracle plan to enhance the details - `filelogreceiver`: Add a new setting, `polls_to_archive`, to control the number of poll cycles to store on disk, rather than being discarded. (#32727) If `polls_to_archive` setting is used in conjunction with `storage` setting, file offsets older than three poll cycles are stored on disk rather than being discarded. This feature enables the receiver to remember file for a longer period and also aims to use limited amount of memory. - `azureauthextension`: Add support for custom scopes in Azure authentication (#41003) - `pkg/stanza`: Add support for batch processing in most operators (#39575) The following operators now support batching: `add`, `assign_keys`, `copy`, `flatten`, `move`, `regex_replace`, `remove`, `retain`, `unquote` `json_parser`, `json_array_parser`, `key_value_parser`, `regex_parser`, `scope_name`, `severity`, `timestamp`, `trace_parser`, `uri_parser`. The following operators do not support batching yet: `container`, `csv_parser`, `filter`, `recombine`, `router`, `syslog`. - `bmchelixexporter`: Support .percent and .rate metric derivation for ratio and counter metrics respectively (#41611) - `awscloudwatchreceiver`: Added `pattern` configuration option for filtering log groups (#40981) - `elasticsearchexporter`: Serialize the `@timestamp` field for metrics as a number (epoch millis) instead of a string (epoch mills with fractional). This improves the ingestion performance in Elasticsearch as it can leverage an optimized code path for date parsing. (#41811) - `sqlserverreceiver`: enable events collection on windows (#41762) - `elasticsearchexporter`: Update error handling to return a permanent error when the Elasticsearch exporter rejects an entire batch due to invalid mapping modes (#38268) - `internal/kafka`: Allow to configure the metdata refresh interval when using the franz-go client in kafkareceiver or kafkaexporter. (#41088) The `Metadata.RefreshInterval` is set as `MetadataMaxAge` when using the franz-go client implementation for the kafkareceiver or kafkaexporter. - `servicegraphconnector`: Add native histograms support (#35460) Add a new setting `exponential_histogram_max_size` to specify the maximum number of buckets for each positive or negative range in an exponential histogram. Ensure that either `latency_histogram_buckets` or `exponential_histogram_max_size` is used, but not both. - `cmd/golden`: Build a docker image for the golden binary, available as snapshot and release artifact (#40538) - `pkg/translator/prometheusremotewrite`: Handle conflicts in PRW v2 (#33661) - `httpcheckreceiver`: Add detailed timing metrics (#41379) The timing metrics added to the receiver now include durations for dns lookup, tcp connection, tls handshake, request, and response. - `k8sobjectsreceiver`: Introduces `include_initial_state` for watch mode, so the existing state of watched objects emitted as log events. (#41536) - `kafkaexporter`: Enrich kafkaexporter errors with topic (#41691) - `kafkaexporter`: Use exporterhelper's `WithQueueBatch` and configure batch partitioner based on configured metadata keys (#41775) - `oracledbreceiver`: Moving child_address from plan details to attributes in top N query collection. (#37478) - `mysqlreceiver`: Add 'mysql.page_size' metric (#41572) - `solarwindsapmsettingsextension`: SolarWinds is deprecating apm-proto and now provides an HTTP endpoint for retrieving settings. This change replaces apm-proto with HTTP (#41860) - `exporter/prometheus`: Add `translation_strategy` configuration option to control how OTLP metric names are translated to Prometheus format. (#35459) The new `translation_strategy` option provides four different translation modes: - `UnderscoreEscapingWithSuffixes`: Escapes special characters to underscores and appends type/unit suffixes - `UnderscoreEscapingWithoutSuffixes`: Escapes special characters but omits suffixes - `NoUTF8EscapingWithSuffixes`: Preserves UTF-8 characters while adding suffixes - `NoTranslation`: Passes metric names through unaltered When `translation_strategy` is set, it always takes precedence over the deprecated `add_metric_suffixes` option. The `exporter.prometheusexporter.DisableAddMetricSuffixes` feature gate can be used to completely ignore the deprecated `add_metric_suffixes` setting. - `metricstarttimeprocessor`: refactor datastorage cache so it can be shared across strategies (#38381) - `datadogsemanticsprocessor`: Add mapping for Datadog source code integration through VCS attributes (#41716) maps `vcs.ref.head.revision` to `git.commit.sha` and `vcs.repository.url.full` to `git.repository_url` with stripped protocol - `servicegraphconnector`: Add support for `metrics_timestamp_offset` configuration option to adjust metric timestamps. (#40999) The servicegraphconnector now supports a `metrics_timestamp_offset` configuration option that allows adjusting metric timestamps by subtracting a specified duration from the current time. This enables metrics to appear as if they were generated in the past, which can be useful for testing scenarios or when aligning metrics with historical data. The default value is 0, preserving existing behavior. - `cmd/opampsupervisor`: The Supervisor can now be configured to expose a health check endpoint (#40529) Use `agent::healthcheck` to configure the Supervisor's health check endpoint. It supports all of the configuration from `confighttp.ServerConfig`. The health check endpoint is checking the following conditions: - The persistent state is not nil: this should cover the existence of the instance ID, among other things. - The config state is not nil: this should cover the existence of the merged config. - `processor/transform`: Introduce convert_summary_quantile_val_to_gauge() function (#33850) - `tailsamplingprocessor`: Add `decision` attribute to metrics tracking sampling decisions (#41819) Possible values for the `decision` attribute are `sampled`, `not_sampled` and `dropped` ### 🧰 Bug fixes 🧰 - `otelarrowexporter`: Retract 0.130.0, 0.131.0, fix missing Batch.Sizer regression (#41241) - `splunkenterprisereceiver`: fixes behavior of kvstore metrics scraper (#41527) - `splunkhecreceiver`: Accept dashes in metric names (#41127) - `awscontainerinsightreceiver`: Set Aws config in the info to pass the creds (#41799) - `exporter/splunkhec`: Do not log entries if they are rejected as too long (#41575) - `spanmetricsconnector`: Adds a default maximum number of exemplars within the metric export interval. (#41679) 1. If the user manually sets max_per_data_point, there will be no impact. 2. If the user does not set max_per_data_point, the default value will take effect, with max_per_data_point = 5. - `statsdreceiver`: Fixes a bug when storing k8s.pod.ip in the metrics. Previously otelcol IP was used instead of the client IP. (#41361, #41362) - `awss3exporter`: Fixes S3 path joining in the AWS S3 exporter to ensure correct partitioning and prefix handling. (#41675) - `jmxreceiver`: fix sha256sum for opentelemetry-jmx-scraper-1.48.0-alpha.jar (#41864) - `datadogexporter`: Return an error on non monotonic bounds for histogram metrics. Previously, this would create a panic. (#41842) - `vcenterreceiver`: Fixes a potential NPE during VM collection (#41018) - `all`: Downgrade go.opentelemetry.io/otel/exporters/prometheus to v0.58.0 (#41869) This avoids accidentally pulling in go.opentelemetry.io/otel/exporters/prometheus v0.59.x when building your distros. v0.59.x has a known bug in metric names. See https://github.com/open-telemetry/opentelemetry-collector/pull/13466. - `connector/routing`: Add support for the `IsRootSpan` OTTL function. (#41462) - `solacereceiver`: The Solace receiver may leak memory on reporting traces when used under high load. (#41792) - `opampsupervisor`: Propagate feature flag service.AllowNoPipeline to collector started by OpAMP supervisor (#41537) ## v0.131.0 ### 🛑 Breaking changes 🛑 - `iisreceiver`: Enable IIS Application Pool state and uptime metrics by default. (#34924) WARNING: This change enables the `iis.application_pool.state` and `iis.application_pool.uptime` metrics by default. This may cause a significant increase in the number of metrics collected if you have many application pools. If you are concerned about the number of metrics, you can disable these metrics in your configuration. - `kineticaexporter`: Remove the kineticaexporter (#38911) - `exporter/loki`: The `Loki Exporter` component has been removed from the repo and is no longer being published as it has been deprecated since 9th July 2024. (#41413) Users of the `lokiexporter` can migrate to using an OTLP exporter. See https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33916 ### 🚩 Deprecations 🚩 - `kafkaexporter`: Improve kafkaexporter internal metrics telemetry consistency, measure latency in seconds (#41108) Improve internal metrics telemetry consistency: kafka_broker_throttling_duration is deprecated in favor of kafka_broker_throttling_latency kafka_exporter_latency is deprecated in favor of kafka_exporter_write_latency kafka_exporter_messages is deprecated in favor kafka_exporter_records ### 🚀 New components 🚀 - `tinybirdexporter`: Mark the tinybirdexporter as alpha (#40475) ### 💡 Enhancements 💡 - `elasticsearchexporter`: Add telemetry for measuring latency to Elasticsearch bulk API (#41389) Measure latency of Elasticsearch bulk API calls - `coralogixexporter`: Print trace IDs in partial success response in the log message (#41544) - `jmxreceiver`: Add support for jmx-scraper JARs (#37469) - `bmchelixexporter`: Enhance metric name disambiguation using attributes (#41303) - `awss3exporter`: Add a new configuration `resource_attrs_to_s3/s3_bucket` to enable mapping OTel resource attributes to s3 bucket (#40321) - `cloudflarereceiver`: Support unixnano format timestamp for cloudflarereceiver (#40342) - `tinybirdexporter`: Updated Readme.md file to guide users on the usage of the exporter. (#40475) - `elasticsearchexporter`: An experimental feature to enrich internal telemetry from configured client metadata keys. (#41284) - `tinybirdexporter`: Add metrics implementation (#40475) - `pkg/ottl`: Add OS name and version attributes in the `UserAgent` function output. (#35458) - `exporter/azureblobexporter`: Add support for Workload ID authentication to Azure Blob Exporter (#41285) Enable the use of workload identity authentication when running the exporter in an AKS pod. - `awss3exporter`: Add support for UUIDv7 as a unique key function in the S3 exporter. (#40515) - `httpcheckreceiver`: Add TLS certificate checking capability for HTTPS endpoints. (#35968) The receiver can collect TLS certificate metrics including time remaining until expiry, issuer, common name, and SANs. If the HttpCheckTLSCertRemaining metric is enabled and the endpoint is HTTPS, it will collect the certificate metrics. - `httpcheckreceiver`: Remove unnecessary status codes (#38564) The httpcheckreceiver now removes the http.status_code attribute from httpcheck.status metrics when the metric value is 0, as per the feature request to avoid redundant status codes. - `prometheusremotewriteexproter`: Adds additional metrics to the Prometheus Remote Write Exporter when RW2 enable. The new metrics are: - `otelcol_exporter_prometheusremotewrite_written_samples`: Number of Prometheus Samples that were successfully written to the remote write endpoint. - `otelcol_exporter_prometheusremotewrite_written_histograms`: Number of Prometheus Histograms that were successfully written to the remote write endpoint. - `otelcol_exporter_prometheusremotewrite_written_exemplars`: Number of Prometheus Exemplars that were successfully written to the remote write endpoint. (#33661) - `processor/k8sattributes`: Support extracting labels and annotations from k8s StatefulSets (#37957) - `libhoneyreceiver`: Handle metadata in libhoneyreceiver (#40953) By adding metadata handling to the libhoney receiver, users can configure the headers_setter extension with it. - `text_encoding`: Move `text_encoding` extension to alpha, adding it to the contrib distribution (#41452) - `mysqlreceiver`: Support query-level collection. (#40965) Added query sample collection. The query will gather the queries that were currently running at the moment when scraping is happening. The number of collected queries can be configured. This will enable user to have better understanding on what is going on with the database. This enhancement empowers users to not only monitor but also actively manage and optimize their MSSQL database performance based on real usage patterns. - `mysqlreceiver`: Add the total number of buffer pool pages (#41252) - `prometheusremotewriteexproter`: Adds wal pipeline lag metric to the Prometheus Remote Write Exporter. The new metric is: - `otelcol_exporter_prometheusremotewrite_wal_lag`: WAL pipeline lag. The frequency of recording pipeline lag can be configured with `lag_record_frequency` (#39556) - `oidcauthextension`: Add support for multiple OIDC providers. (#40854) Users can now configure multiple OIDC providers in the OIDC Auth extension. Tokens will be matched to a provider based on the `iss` claim. - `oracledbreceiver`: Add 'oracledb.logons' metric (#41067) - `oracledbreceiver`: Support query-level log collection, fetching query samples. (#37478) With the introduction of query level log collection, details about currently running queries can be collected. The maximum number of queries to be collected can be configured. This feature helps the user to have a better understanding of the database operations. - `oracledbreceiver`: Support query-level log collection, fetching top N query metrics. (#37478) With the introduction of query level log collection, the oracledbreceiver can now send metrics for Top N queries, filtered based on the highest CPU time consumed. The number of queries can be configured. This helps the user to have a better understanding of the database operations. - `pkg/ottl`: Add support for combining `scope` with other OTTL contexts. (#39308) Previously, OTTL paths could only use the `instrumentation_scope` context when combined with lower-level contexts like `log` or `metric`. This change allows the `scope` context to be used interchangeably with `instrumentation_scope`, improving flexibility and consistency. - `pkg/ottl`: Added a new `Values` OTTL Function. (#41243) - `pkg/ottl`: Allow optional KeyPath in OTTL SliceToMap function. (#41390) - `postgresqlreceiver`: Add `postgresql.function.calls` metric. (#40969) Requires `track_functions=pl|all` in Postgres config - `postgresqlreceiver`: Add 'postgresql.temp.io' metric (#41365) The metric emits the amount of data written to temporary files. - `kafkaexporter`: Add profiles support (#41369) - `prometheusreceiver`: Add retry logic for connection refused errors so the collector doesn't crash at startup. (#40982) This change adds retry logic for connection refused errors. The target allocator could be busy starting up the receiver and the first connection attempt may fail. - `receiver/prometheus`: Add support for otel_scope_schema_url label mapping to OpenTelemetry ScopeMetrics schema URL field (#41488) - `prometheusremotewritereceiver`: Promote prometheusremotewritereceiver to alpha (#37277) - `receiver/prometheusremotewrite`: Add support for Native Histogram Custom Buckets (NHCB). (#41043) - `architecture`: New Tier 3 platform riscv64 allowing the collector to be built and distributed for this platform. (#41507) - `redactionprocessor`: The new `redact_all_types` option redacts all field types after casting them to string. (#36684) - `sqlserverreceiver`: Add 'sqlserver.computer.uptime' metric (#41207) - `sqlserverreceiver`: Make queries compatible with Azure SQL Database and Azure SQL Managed Instance. (#41102) - `telemetrygen`: Adds a new telemetrygen flag to generate unique timestamps for within a second interval (#39933) ### 🧰 Bug fixes 🧰 - `tailsamplingprocessor`: Numeric-range values, if zero, are properly treated as unset. (#41562) - `bmchelixexporter`: Fix distinct datapoints merged into a single metric payload (#40991) - `redisstorageextension`: Ensure get operations fetch the values from redis storage. (#41328) - `elasticsearchexporter`: An experimental feature to enrich internal telemetry from configured client metadata keys. (#41375) Fixes collisions of frame IDs in profiling. - `elasticsearchexporter`: Shutdown `TelemetryBuilder` on expoter shutdown (#41278) - `awscloudwatchreceiver`: ensures on component shutdown that it calls any open storage clients from the receiver (#41215) - `filestorageextension`: Add an option to recreate databse if the database file is corrupted. (#35899) - `tinybirdexporter`: Default logs' Timestamp value to ObservedTimestamp when Timestamp is not set (#41447) - `googlecloudmonitoringreceiver`: Conversion of Distribution to Histogram handles implicit zero counts. (#41351) - `k8sleaderelector`: handle late registration of receivers to k8sleaderelector (#40346) - `metricstarttimeprocessor`: Fix an issue where the start time wasn't properly set, but values were decreased. (#41286) - `elasticsearchexporter`: fix missing build ID for profiles (#41344) - `receiver/prometheus`: Fix otel_scope_name and otel_scope_version labels not being dropped from metric attributes (#41456) - `ottlprofile`: Fix the handling of references to location. (#41466) - `splunkenterprisereceiver`: Add test for empty string response on search artifact metrics & fix unmarshall error (#41288) - `awss3exporter`: Fixed panic error when more than 1 exporter is in the pipeline with s3 exporter (#41262) - `datadogexporter`: Log attribute values of type bool, int and double will be represented as such. Previously, they were incorrectly converted to string. (#41561) ## v0.130.0 ### 🛑 Breaking changes 🛑 - `kubeletstats`: Move receiver.kubeletstats.enableCPUUsageMetrics feature gate to stable (#39650) - `geoipprocessor`: Use semantic convention Geo attributes (#34745) Replace `geo.continent_code`, `geo.country_iso_code`, `geo.region_iso_code` with semantic conventions `geo.continent.code`, `geo.country.iso_code`, `geo.region.iso_code` attributes. - `kafka`: The default client ID for Kafka components now honours configuration, and defaults to "otel-collector". (#41090) The client ID configuration was ineffective, and (when using the Sarama implementation) always defaulted to "sarama". We now honour the configuration, and the default has changed, hence this is a breaking change for anyone relying on the client ID being "sarama". - `servicegraphconnector`: Remove deprecated field `database_name_attribute` and update the documentation. (#41094) - `cmd/opampsupervisor`: Remote configuration by default now merges on top of user-provided config files. (#39963) Previous, by default, user-provided config files were merged on top of all other configuration. This is not the case anymore. The new default order configuration merging is as follows (from lowest to highest precedence): - `$OWN_TELEMETRY_CONFIG` - - `$OPAMP_EXTENSION_CONFIG` - `$REMOTE_CONFIG` ### 🚩 Deprecations 🚩 - `splunkhecexporter`: Deprecate 'batcher' config, use 'sending_queue::batch' instead (#41224) - `spanmetricsconnector`: Mark dimensions_cache_size as deprecated following the upstream guidelines (#41101) ### 🚀 New components 🚀 - `tinybird`: Implement logs propagation for Tinybird exporter (#40475) ### 💡 Enhancements 💡 - `elasticsearchexporter`: Add telemetry for bulk indexers used to index documents to Elasticsearch. (#38610) - `coralogixprocessor`: Add transactions feature (#40863) The transactions feature enables tracking of distributed transactions across microservices in a distributed system. It provides end-to-end visibility into request flows by correlating spans across different services, allowing developers to understand the complete journey of a request through their microservices architecture. This feature is particularly useful for identifying performance bottlenecks, debugging issues, and monitoring the health of distributed applications. More information: https://coralogix.com/docs/user-guides/apm/features/transactions - `coralogixprocessor`: Promote traces to alpha stability. (#41061) - `awslogsencodingextension`: Bump the stability to Alpha, and include it in otelcontribcol. (#38627) - `cgroupruntimeextension`: Promote to alpha stability (#41128) - `awslogsencodingextension`: Add support for AWS CloudTrail logs. (#40246) The AWS Logs Encoding Extension now supports unmarshaling AWS CloudTrail logs into OpenTelemetry logs format. The implementation follows OpenTelemetry semantic conventions for attributes like `rpc.method`, `rpc.system`, `rpc.service`, `cloud.provider`, `cloud.region`, and `cloud.account.id`. CloudTrail logs can be used to monitor API activity across your AWS infrastructure, and this integration enables ingestion of these logs into your OpenTelemetry pipeline for unified observability. - `elasticsearchexporter`: Support profiles variable sampling frequency. (#40115) - `elasticsearchexporter`: Duplicate profiling events with count values larger than 1 (#40946) Having all events with count=1 enables random sampling on the read path. - `elasticsearchexporter`: Store Sample level `service.name` with each profiling event. (#40967) - `elasticsearchexporter`: Increase metric grouping hash and _metric_names_hash from 32 bit to 64 bit to reduce collisions and chance of consequent data loss. (#41208) - `faroreceiver`: Ensure that the level is added to all the faro logs. (#40701) - `tinybirdexporter`: Add traces implementation (#40475) - `jsonlogencodingextension`: Add array_mode configuration option and add support to process arbitrary JSON inputs (#40877, #40545) `array_mode` is default set to true to preserve backward compatibility. When set to `true`, extension accepts single or concatenated Json (ex:- NDJSON) - `filelogreceiver`: Add option `include_file_record_offset` to insert offset as attribute in log records as `log.file.record.offset` (#39684) - `githubreceiver`: Added the ability to convert custom repository properties to span attributes (#40878) - `elasticsearchexporter`: Improve error messages for invalid datapoints by including metric names in error output (#39063) Previously, error messages for invalid number data points and histogram data points were generic. Now they include the specific metric name to help with debugging and troubleshooting. - `loadbalancingexporter`: Use a linear probe to decrease variance caused by hash collisions, which was causing a non-uniform distribution of loadbalancing. (#41200) - `metricstarttimeprocessor`: Add the start_time_metric, which sets the start time based on another metric in the batch of metrics. (#38383) - `mysqlreceiver`: Collect 'fsync' log operations. (#41175) - `mysqlreceiver`: Add mysql.max_used_connections metric (#40626) mysql.max_used_connections contains the maximum number of used sessions since the instance start. - `sqlserverreceiver`: Adding 'sqlserver.cpu.count' metric (#41032) - `postgresqlreceiver`: Only scrape the query samples that are newer than last scraped (#40622) - `pkg/ottl`: Add new `Keys` converter to extract all keys from a given map. (#39256) - `pkg/ottl`: Added a new `ParseInt` OTTL Function. (#40758) - `receiver/postgresql`: Move receiver.postgresql.connectionPool feature gate to alpha (#30831) This change updates the receiver to use the connection pooling for performance benefits. - `transformprocessor`: Add profiles support to transformprocessor. (#39009) - `prometheusremotewriteexporter`: Adds WAL bytes read/write metrics to the Prometheus Remote Write Exporter. The new metrics are: - `otelcol_exporter_prometheusremotewrite_wal_bytes_written`: The total number of bytes written to the WAL. - `otelcol_exporter_prometheusremotewrite_wal_bytes_read`: The total number of bytes reads from the WAL. (#39556) - `cmd/opampsupervisor`: Allow the Supervisor send a SIGHUP signal to the agent to reload its configuration. (#40410) This behavior is disabled by default. To enable it, set the `agent::enable_hup_reload` flag to `true` in the supervisor configuration. - `cmd/opampsupervisor`: Add support for total control of configuration merging through special configuration files (#39963) The special configuration files can be used through the `agent::config_files` option to control the order in which configuration is merged. This allows greater customization of this feature, so that it can adapt many use cases without requiring code changes. Configuration is merged from the top of the list to the bottom, in order. This means that the first configuration files will get overwritten by the later ones. Here's a list of the available special configuration options and what they represent: - "$OWN_TELEMETRY_CONFIG": configuration to set up the agent's own telemetry (resource, identifying and non-identifying attributes, etc.). - "$OPAMP_EXTENSION_CONFIG": configuration for the agent's OpAMP extension to connect to the Supervisor. - "$REMOTE_CONFIG": remote configuration received by the Supervisor. Here's an example that could be used to configure the Agent: ``` agent: config_files: - base_config.yaml - $OWN_TELEMETRY_CONFIG - $OPAMP_EXTENSION_CONFIG - $REMOTE_CONFIG - compliance_config.yaml ``` If **one or more** of the special files are not specified, they are automatically added at predetermined positions in the list. The order is as follows: - `$OWN_TELEMETRY_CONFIG` - - `$OPAMP_EXTENSION_CONFIG` - `$REMOTE_CONFIG` - `syslogexporter`: Add support for Unix sockets (#40740) The `network` configuration now accepts `"unix"` as a valid option in addition to `"tcp"` and `"udp"`. When `network` is set to `"unix"`, the `endpoint` must be a valid Unix socket file path, and `port` is ignored. ### 🧰 Bug fixes 🧰 - `kafkareceiver (franz-go client)`: Fix race on lost partition (#41239) When using the franz-go client, fixes an edge case where a consumer could lose a partition while it is consuming messages. This leads to unexpected behavior due to the race and likely cause the consumer to malfunction. - `clickhouseexporter`: Fix log `Body` only recording `String` data (#41141) - `dorisexporter`: fix ddl for doris 3.0.6 and 2.1.10 (#40578, #40827) 1. Use `size_based` compaction policy for the trace graph table instead of `time_series`. | 2. Use `"inverted_index_storage_format"="V2"`. | 3. Use `zstd` as the default compression algorithm for all tables. - `prometheusremotewritereceiver`: Drop summary and classic histogram series as we will not handle them. (#40975) - `elasticsearchexporter`: Fetch `HostID`, `ContainerID`, `K8SPodName` and `K8sNamespaceName` from Resource instead of from Sample. (#40967) - `elasticsearchexporter`: Fix how profiles locations are interpreted and stored. (#40959) - `elasticsearchexporter`: Fix storing of sample attributes. (#40961) - `elasticsearchexporter`: Store process.executable.name as part of profiling events. (#40961) - `elasticsearchexporter`: Fix regression `retry::max_retries` not applying correctly for HTTP request levels retries (#39670) The regression affected versions from v0.120.0 and might cause data loss due to prematurely stopping HTTP request level retries, e.g. when ES is unavailable, as it was cap to a maximum of 2 retries. - `elasticsearchexporter`: Fix incorrect retry backoff duration calculation (#41187) Fixes a bug where backoff function is stateful and shared between bulk indexers, resulting in data race and incorrect retry backoff duration calculation. - `receivercreator`: Fix incorrect traces consumer filtering in filterConsumerSignals function (#41033) The bug caused traces consumers to be incorrectly filtered when metrics were disabled. - `receiver/lokireceiver`: fix parsing of Content-Type header (#41192) When sending logs in json format a valid header like `Content-Type: application/json; charset=utf-8` was rejected because the value was not equal to `application/json`. This changes the parsing of `Content-Type` header to accept optional parameters. - `pkg/ottl`: Fix OTTL functions by using setters. (#39100) - `cmd/opampsupervisor`: Supervisor without remote config capabilities now correctly ignores remote config messages. (#41166) - `awsxrayexporter`: Fix incorrect http url generation in trace segment when url.path is present (#40809) - `awscloudwatchreceiver`: Fixes issue with autodiscovered groups that were deleted preventing logs during that poll (#38940) - `receiver/prometheusreceiver`: Fixes masking of authentication credentials in Prometheus receiver, when reloading the Prometheus config. (#40520, #40916) - `kafkaexporter, kafkatopicsobserver, kafkametricsreceiver, kafkareceiver`: Fix aws_msk configuration in the doc (#41118) - `exporter/datadogexporter`: Ignore APM-related metrics for the running metric for metrics (#41228) Runtime metrics and APM stats metrics are considered to be part of the APM product and as such they will not generate a metrics running metric. - `filelogreceiver`: Fix `remove`, `copy`, and `move` operator configuration validation. (#40728) Previously, the receiver would allow configurations that were guaranteed to cause a Collector panic. The Collector will now fail to start with friendly error messages. - `pkg/ottl`: Fix an issue where the attribute values were amended in the profiles dictionary. (#40738) - `pkg/ottl`: Fixes the OTTL nanoseconds formatter to correctly handle 9 digits of nanoseconds, ensuring accurate time formatting and parsing. (#41144) Places that import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils" are likely affected by this change. For example, `FormatTime`and `Time` OTTL functions are affected. See [here](https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-collector-contrib+%22github.com%2Fopen-telemetry%2Fopentelemetry-collector-contrib%2Finternal%2Fcoreinternal%2Ftimeutils%22&type=code) for a full list of affected functionalities. - `receiver/prometheusremotewrite`: Handle metrics with unspecified types without panicking. (#41005) - `sqlserverreceiver`: Fix incorrect configuration used in query sample collection. It was intended to retrieve the maximum number of rows per query from config.MaxRowsPerQuery, but it was mistakenly using config.TopQueryCount instead. (#40943) - `datadogexporter`: Added ability for Datadog metrics serializer exporter to set proxy variables (#41041) ## v0.129.0 ### 🛑 Breaking changes 🛑 - `elasticsearchexporter`: Add better ECS mapping for traces when using ECS mapping mode. Previously, traces were incorrectly processed by the generic encoder instead of applying ECS-compliant field mappings. (#40807) - `receiver/httpcheck`: Always close resp.Body and add timeout (#40552) - `pkg/stanza`: Remove deprecated decode package (#40861) - `podmanreceiver`: Deprecate "ssh-dss" host key algorithm for SSH connections (#40796) - `pkg`: Remove the fields from category FrontDoorAccessLog from the body log record and place them as log record attributes in translator azurelogs. (#40453) - `kafka`: remove broken SASL/AWS_MSK_IAM auth mechanism from Kafka components (#40554) - `kafkareceiver`: Improve kafkareceiver internal metrics telemetry (#40816) This change adds the following internal telemetry metrics to the receiver: - kafka_broker_connects - kafka_broker_closed - kafka_broker_throttling_duration - kafka_receiver_bytes - kafka_receiver_bytes_uncompressed - kafka_receiver_latency In addition it removes explicit component "name" metrics attribute which should be enabled with "telemetry.newPipelineTelemetry" collector feature gate instead. And changes "partition" metrics attribute to more direct "int64" type instead of "string". - `datadogexporter`: Graduate exporter.datadogexporter.UseLogsAgentExporter feature gate to stable (#40925) - `sqlserverreceiver`: Only empty strings for query texts and query plans when obfuscation failed. (#40527) This change applies only to top query collection and query sample collection. ### 🚩 Deprecations 🚩 - `logzioexporter`: Deprecates `jsonlog` and `logziospan` usage and replace with `plogotlp.ExportRequest` and `ptraceotlp.ExportRequest` accordingly. (#40192) - `datadogexporter`: Config `logs::dump_payloads` is no longer supported now that the UseLogsAgentExporter feature gate is stable. (#40925) - `prometheusremotewriteexporter`: Remove the stable exporter.prometheusremotewriteexporter.deprecateCreatedMetric featuregate (#40570) It was supposed to be removed with v0.118.0. - `resourcedetectionprocessor`: Promote the processor.resourcedetection.removeGCPFaasID feature gate to beta. (#40601) The faas.id attribute is replaced by the faas.instance attribute. | This disables detection of the faas.id resource attribute by default. | Re-enable by disabling the processor.resourcedetection.removeGCPFaasID feature gate. - `googlecloudexporter`: Remove the stable exporter.googlecloud.OTLPDirect featuregate (#17192) It was supposed to be removed in v0.69. - `resourcedetectionprocessor`: Remove the stable processor.resourcedetection.hostCPUSteppingAsString featuregate (#40569) It was supposed to be removed in v0.110.0. - `prometheusexporter, prometheusremotewriteexporter`: Promote the pkg.translator.prometheus.NormalizeName feature gate to stable. (#40603) Use the add_metric_suffixes option on the prometheus exporters to | control the addition of suffixes instead of the feature gate. - `prometheusreceiver`: Promote the receiver.prometheusreceiver.RemoveLegacyResourceAttributes featuregate to stable (#40572) It has been beta since v0.126.0 ### 🚀 New components 🚀 - `extension/datadog`: Releases Datadog Extension in alpha. (#39589, #40715) The Datadog Extension is now released in alpha status. Using the configuration settings listed in the README will allow collectors to report configuration data to Datadog backend. If enabled, collector configuration and build info will be viewable in Datadog Infrastructure Monitoring, specifically in Host List and Resource Catalog. - `tinybirdexporter`: Introduce Tinybird Exporter (#40475) ### 💡 Enhancements 💡 - `windowseventlogreceiver`: Added option to prevent collector shutdown due to errors while opening channels (#36237) - `azuremonitorreceiver`: Add support for azureauth when batch api is enabled. (#40872) - `prometheusremotewritereceiver`: Add exponential histograms datapoints to the prometheusremotewritereceiver (#37277) - `hostmetricsreceiver`: Skeleton nfsscraper -- adds Linux nfs and nfsd metrics from /proc (#39978) - `receiver/hostmetrics`: Add `system.paging.faults` metrics on Windows (#40468) - `awslogsencodingextension`: Add support for AWS WAF logs. (#39407) - `azuremonitorreceiver`: fix unnecessarily exported struct (#40662) - `clickhouseexporter`: Support JSON type for logs and traces (#40547) Added a feature gate to enable a JSON pipeline for logs and traces. This feature gate ID is `clickhouse.json`, and will automatically use the new DDL and column type on supported server versions. You may also need to add `enable_json_type=1` to your connection settings, depending on the server version. - `datadogexporter`: Improve accuracy of conversion for single-point exponential histograms (#40867) - `datadogreceiver`: Implement the `/intake` endpoint (#39787) - `elasticsearchreceiver`: Add support for ES version 9 (#39929) - `exporter/datadog`: Adds support for `proxy_url` when using the logs agent exporter (#40640) - `kafkareceiver`: Add an Alpha feature gate `receiver.kafkareceiver.UseFranzGo` to use franz-go in the Kafka receiver for better performance. (#40628) Adds an experimental opt-in support to use the franz-go client in the Kafka receiver. The franz-go client is a high-performance Kafka client that can improve the performance of the Kafka receiver. The default client remains sarama, which is used by the Kafka exporter and other components. Enable the franz-go client by setting the `receiver.kafkareceiver.UseFranzGo` feature gate. - `kafkareceiver`: Refactor Sarama client to pave the way for franz-go `featuregate` opt-in (#40628) - `googleclientauthextension`: Promote the googleclientauth extension to beta. (#31412) - `googlecloudmonitoringreceiver`: Add support for converting Google Cloud monitoring delta distribution metrics to OpenTelemetry histograms. (#39600) - `pkg/translator/prometheusremotewrite`: `FromMetricsV2` now supports translating histograms. (#33661) The translation layer for Prometheus remote write 2 now supports histograms but is not fully implemented and ready for use. - `pkg/translator/prometheusremotewrite`: `FromMetricsV2` now supports translating summaries. (#33661) The translation layer for Prometheus remote write 2 now supports summaries but is not fully implemented and ready for use. - `kafkaexporter`: Improve kafkaexporter internal metrics telemetry (#40815) - `kafkareceiver`: Create the consumer group asynchronously, and report component status (#40516) This change ensures that the collector can start up if the Kafka cluster is not available or the consumer group creation fails due to some other transient, retryable error. We also now report the component status to indicate if and when the consumer group has been successfully created, and whether the receiver is ready to consume messages. This can be observed via the healthcheckv2 extension. - `logzioexporter`: Support `plogotlp.ExportRequest` struct for logs export, and `ptraceotlp.ExportRequest` struct for traces export. (#40192) - `netflowreceiver`: Add TCP flags attribute to netflow receiver. (#40487) - `prometheusremotewriteexporter`: Adds WAL latency metrics to the Prometheus Remote Write Exporter. The new metrics are: - `otelcol_exporter_prometheusremotewrite_wal_write_latency`: The latency of WAL writes. - `otelcol_exporter_prometheusremotewrite_wal_read_latency`: The latency of WAL reads. (#39556) - `opensearchexporter`: Add support for dynamic log indexing in OpenSearch exporter (#34746, #38595) - This feature allows users to specify dynamic log indices based on attributes. - It supports time-based index name formatting and fallback options. - `pkg/ottl`: Add new ContainsValue converter to check whether a value is present in a slice. (#30420) Add `ottl.PSliceGetter`, a typed getter for `pcommon.Slice` - `pkg/ottl`: Add accessors for profile attributes (#39681) - `azuremonitorreceiver`: Added new config that sets the number of unique resource IDs to fetch per Batch API call (#40112) - `sqlserverreceiver`: add feature gate for removing metrics resource attributes `server.address`, and `server.port` (#40579) These are not resource attributes according to the semantic conventions. To enable this feature gate, when running the otel collector, pass the following argument `--feature-gates=receiver.sqlserver.RemoveServerResourceAttribute`. - `sqlqueryreceiver`: Add SQL connection fields `host`, `port`, `database`, `username`, `password`, and `additional_params`. (#39760) These options can be used instead of the existing `datasource` configuration option. - `sqlserverreceiver`: Update obfuscation library to use `mssql` mode. (#40525) Now it can obfuscate more SQL Server specific queries which may not work before. - `processor/transform`: Introduce optional metric name suffix setup for metric conversion functions (#33850) The affected functions are: convert_summary_count_val_to_sum(), convert_summary_sum_val_to_sum(), extract_count_metric(), extract_sum_metric() ### 🧰 Bug fixes 🧰 - `snowflakereceiver`: adds a pre-scrape check to see if metrics are enabled. (#40418) - `coralogixexporter`: Fix rate limit error count reset (#40811) The rate limit error count was not reset just after a successful request. Also, we are printing now when the rate limit is triggered. - `kafkareceiver`: Protect partition lost/revoke callback against unassigned groups (#40920) - `collectdreceiver`: Ensure the receiver closes its port when shutting down quickly after starting. (#40406) Note that due to the nature of the timing issue this is extremely unlikely to affect a real user, and really only likely to occur in unit tests. - `datadogconnector`: Use proper synchronization to fix a collector panic when an error occurs (#40845) - `sqlserverreceiver`: export `host.name` as resource attributes for metrics (#40576) in the metadata file, the `host.name` resource attribute is defined for metrics, but it is not exported in reality. this fixed the issue and export it as a resource attribute. - `opampextension`: Set the default value of `ReportsAvailableComponents` to `true` (#40485) - `receivercreator`: Properly handle default endpoint for annotation discovery (#40712) Annotation discovery should not add the default endpoint explicitly. Configuration should be left empty if users do not set anything. Main flow of the receiver_creator already adds the default endpoint, if not provided, at a later stage by also checking if target receiver supports it. This patch ensures this logic is unified for both annotation discovery and templated based discovery. - `kafka`: Fixes a defect introduced in #39115 that prevents MSK IAM auth from working (#40720) IAM auth requires TLS, but the config translation was enabling SASL when it intended to enable TLS - `receiver/httpcheck`: Fix resource leak caused by failure to close request body (#40695) - `receiver/simpleprometheus`: Fix bug that caused the labels configuration option to be ignored (#40722) - `awslogsencodingextension`: Fix bug in which concurrent go routines can end up using the same gzip reader (#40838) - `logdedupprocessor`: Taught logdedupprocessor not to panic if the dedup field source was not found or not a map (#40204) - `k8sattributesprocessor`: Make sure getIdentifiersFromAssoc() can handle container.id (#40745) - `libhoneyreceiver`: Fix parent id handling in libhoneyreceiver (#40934) - `prometheusreceiver`: Fix invalid metric name validation error in scrape start from target allocator. (#35459, #40788) Prometheus made setting metric_name_validation_scheme, metric_name_escaping_scheme mandatory mandatory, use sane defaults. - `routingconnector`: Copy IsMonotonic and AggregationTemporality when routing metrics on datapoint context. (#37273) - `snowflakereceiver`: Correct handling of datatypes of Snowflake receiver (#40418) - `snowflakereceiver`: Rectified datatypes of storagemetrics of Snowflake receiver (#40857) - `hostmetricsreceiver`: Minor fix to the handling of conntrack errors (#40175) ## v0.128.0 ### 🛑 Breaking changes 🛑 - `pkg`: Remove the fields from category FrontDoorWebApplicationFirewallLog from the body log record and place them as log record attributes. (#39993) - `opampsupervisor`: Update passthrough logging to use Error for stderr pipe. (#40491) - `countconnector`: Upgrade profiles proto to 1.7.0 (#40285) - `elasticsearchexporter`: Upgrade profiles proto to 1.7.0 (#40285) - `golden`: Upgrade profiles proto to 1.7.0 (#40285) - `otelarrowexporter`: Configure the combined queue-batch facility, modifies the defaults `sending_queue` settings. (#40211) Removes experimental batcher config, which was never recommended, and documents how to replace the formerly recommended concurrentbatchprocessor configuration. - `ottl`: Upgrade profiles proto to 1.7.0 (#40285) - `redisstorageextension`: Add TLS support (#40185) TLS is now enabled by default. To disable TLS, use: tls: insecure: true - `pkg/ottl`: Remove access to the profile lookup tables (#40227) the mapping_table, location_table, function_table, attribute_table, attribute_units, link_table, string_stable have been moved to a root dictionary attribute and are not part of profile anymore. - `signaltometricsconnector`: Upgrade profiles proto to 1.7.0 (#40285) - `sqlserverreceiver`: Rename flags for enabling top query collection and query sample collection. (#40416) Renamed `top_query_collection.enabled` to `events."db.server.top_query".enabled` in top query collection. Renamed `query_sample_collection.enabled` to `events."db.server.query_sample".enabled` in query sample collection. ### 🚩 Deprecations 🚩 - `receiver/hostmetrics`: Mark `hostmetrics.process.onWindowsUseNewGetProcesses` feature gate as stable (#32947) ### 💡 Enhancements 💡 - `resourcedetectionprocessor`: Add the option to retrieve resource attributes from the K8s API server and EC2 api when the IMDS service is not available. (#39503) - `windowseventlogreceiver`: Add a boolean option to include the `log.record.original` attribute of each event record. (#40365) - `prometheusremotewritereceiver`: Improve observability about data ingestion (#37277) - `prometheusremotewritereceiver`: Add LRU cache for resource metrics in prometheusremotewritereceiver. (#37277) To avoid memory leaks, the receiver will now use a LRU cache to store resource metrics. The less recently used resource metrics are evicted from the cache given a maximum size. For now the maximum size is 1000. - `prometheusremotewritereceiver`: Add a count of all successfully written samples when elements were processed. (#37277) - `resourcedetectionprocessor`: Add additional OS properties to resource detection: `os.build.id` and `os.name` (#39941) - `receivercreator`: Add an option to set default annotations to override the discovery logic (#37436) - `kafkaexporter`: Add an Alpha feature gate `exporter.kafkaexporter.UseFranzGoClient` to use franz-go in the Kafka exporter for better performance. (#40364) This change adds an experimental opt-in support to use the franz-go client in the Kafka exporter. The franz-go client is a high-performance Kafka client that can improve the performance of the Kafka exporter. The default client remains sarama, which is used by the Kafka receiver and other components. Enable the franz-go client by setting the `exporter.kafkaexporter.UseFranzGo` feature gate. - `receiver/cloudflare`: Enable the receiver to consume fields from Cloudflare containing a map (#40318) - `filelogreceiver`: The fingerprint of gzip compressed files is created by decompressing and reading the first `fingerprint_size` bytes. (#37772) This feature can be enabled via the following feature gate `--feature-gates=filelog.decompressFingerprint`. This can cause existing gzip files to be re-ingested because of changes in how fingerprints are computed. - `sqlserverreceiver`: add one attribute for performance_counter.object_name to deduplicate data (#40359) - `processor/k8sattributes`: Support extracting labels and annotations from k8s Deployments (#37957) - `receiver/k8s_cluster`: Add onDelete handler to emit the experimental entity delete events (#40278) - `datadogexporter`: Add support for host aliasing via resource attribute `datadog.host.aliases` (#40409) - `prometheusremotewriteexproter`: Adds wal metrics to the Prometheus Remote Write Exporter. The new metrics are: - `otelcol_exporter_prometheusremotewrite_wal_reads`: The total number of WAL reads. - `otelcol_exporter_prometheusremotewrite_wal_reads_failures`: The total number of WAL reads failures. (#39556) - `processor/resourcedetection`: add `host.interface` resource attribute to `system` detector (#39419) - `pkg/ottl`: Add `event_name` path to the OTTL Log context (#40230) - `pkg/ottl`: Add metric.metadata as a valid OTTL path (#40214) - `pkg/ottl`: Add ability to compare slices/pcommon.Slice in OTTL Boolean Expressions (#40370) - `postgresqlreceiver`: add the ability to obtain query plan for top n queries (#39995) - `splunkenterprisereceiver`: Add search artifact size metrics to the existing search dispatch collection, which uses the /services/server/status/dispatch-artifacts API. (#40383) - `pkg/ottl`: Improve time parsing error messages by including the ctime directive instead of the go time layout (#35176) - `tlscheckreceiver`: Do not crash on target validation & implement better scrape errors (#40341) ### 🧰 Bug fixes 🧰 - `elasticsearchexporter`: Fix a bug where unset span status code was being serialized as 'Unset' instead of being ignored (#39498) - `coralogixexporter`: Fix Authorization header not being set in metadata. (#40330) - `datadogexporter`: Fix automatic initial point dropping when converting cumulative monotonic sum metrics (#40426) The exporter turns OpenTelemetry's cumulative monotonic sum metrics into Datadog's (delta) count metrics by computing the difference between successive points. The logic to determine whether the first received value should be ignored or passed through as a delta was faulty, leading to large spikes in metrics when the Collector restarts but the source application does not, which should now be fixed. - `azureauthextension`: Fix the scope retrieval issue for the client authentication of AzureAuthExtension. (#40032) - `kafkareceiver`: enforce a backoff mechanism on non-permanent errors, such as when the queue is full (#39580) - `exporter/datadog`: Adds `hostname_detection_timeout` configuration option for Datadog Exporter and sets default to 25 seconds. (#40373, #40377) - This fixes a bug on Kubernetes daemonset deployments where collector hangs/reboots on startup. - This configuration option already existed but was not available for customer configuration. - `pkg/translator/prometheusremotewrite`: Fix bug where metric metadata was sent with incorrect metric name if configuration includes 'namespace' (#39826) - `kafkaexporter`: Fix Snappy compression codec support for the Kafka exporter (#40288) - `kafkareceiver`: Don't restart the Kafka consumer on failed errors when message marking is enabled for them. (#39909) The Kafka consumer will now only be restarted due to failed messages if both `message_marking::after` is true, and `message_marking::on_error` is false. In this case the message will not be marked as consumed, and the consumer will restart with an error. - `libhoneyreceiver`: Fix response encoding for msgpack (#40413) The libhoneyreceiver now correctly encodes the response for msgpack. This fixes the issue where the response was not being encoded correctly. - `datadogexporter`: Send host metadata on new hosts. (#40409) - `datadogexporter`: config `tls::insecure_skip_verify` is now taken into account in metrics path. (#40507, #40085) - `prometheusrecevier`: Add feature gate to allow enabling and disabling the Prometheus created timestamp zero ingestion feature flag. (#40245) - `signalfxexporter`: Fix invalid and missing host metadata when the collector is deployed in a containerized environment and | the host root filesystem is mounted to non-standard location. (#40218) Use the newly introduced `root_path` configuration option to specify the root path of the host filesystem.| This is required when the host root filesystem is mounted to a non-standard location. - `sqlserverreceiver`: Fix incorrect attribute name for database system name in the top query event collection. (#40361) Rename `db.server.name` to `db.system.name` in SQL Server receiver to align with semantic conventions. - `sqlserverreceiver`: Fix scraping failure on SQL obfuscation on top query collection and query sample collection. (#40347) Collector will now report original SQL statement if the obfuscation is failed. - `sumologicextension`: Be more tolerant of process discovery failures. (#40252) Discovered after a gopsutil update - `opampsupervisor`: Supervisor now persists the remote config status to disk. This allows more accurate reporting of the remote config status. Also reports healthy status when not running the agent due to empty config (previous performance optimization). (#40467) - `receiver/faro`: Ensure that the Faro receiver waits for http server shutdown to complete before exiting. (#40331) ## v0.127.0 ### 🛑 Breaking changes 🛑 - `sqlserverreceiver`: Zero values in delta attributes will be reported in top query collection. (#40041) This change includes the following attributes: - sqlserver.total_worker_time - sqlserver.execution_count - sqlserver.total_logical_reads - sqlserver.total_logical_writes - sqlserver.total_physical_reads - sqlserver.total_rows - sqlserver.total_grant_kb - `stefreceiver, stefexporter`: Updated to STEF 0.0.6, which had a breaking change in the format from 0.0.5 (#40058) ### 🚀 New components 🚀 - `stefreceiver`: Update stability of STEF receiver to Alpha. (#40062) ### 💡 Enhancements 💡 - `coralogixexporter`: Added a mechanism to drop telemetry data when rate limit, quota or authorization errors are encountered. (#40074) Added a new configuration option to the Coralogix exporter to enable a rate limiter mechanism. The rate limiter mechanism is disabled by default. It can be configured using the following configuration options: rate_limiter: enabled: true threshold: 10 duration: 1m Where: - `enabled` is a boolean flag to enable the rate limiter mechanism. - `threshold` is the number of errors to trigger the rate limiter mechanism (default: 10). - `duration` is the duration of the rate limit window (default: 1 minute). Note the number of errors is cumulative and reset after the duration has passed or a successful request is made. - `coralogixexporter`: Print metrics causing the partial success response from the backend. (#40199) - `awss3receiver`: Add SQS support to the awss3receiver component (#36315) - `azuremonitorreceiver`: Add support for azureauthextension as a token provider for azuremonitorreceiver. (#39048) - `datadogreceiver`: Address semantic conventions noncompliance and add support for http/db (#36924) * Bump semantic conventions to v1.30.0 * Add support for http and db attributes * Use datadog's base service as service.name when available * Set `server.address` on client/producer/consumer spans * Properly name postgresql/redis/servlet/spring spans - `kafkaexporter`: Allow kafka exporter to produce to topics based on metadata key values (#39208) Allows the Kafka exporter to dynamically use a signal's export target topic based on the value of the pipeline's metadata, allowing dynamic signal routing. - `faroreceiver, faroexporter`: Stability level changed from development to alpha. (#40000) - `processor/tailsampling`: Add first policy match decision to tailsampling processor (#36795) - `gitlabreceiver`: add GitLab pipeline tracing functionality (#35207) - `receiver/k8sclusterreceiver`: Added new resource attributes `k8s.hpa.scaletargetref.kind`, `k8s.hpa.scaletargetref.name`, and `k8s.hpa.scaletargetref.apiversion` to the `k8s.hpa` resource. These attributes are disabled by default. (#38768) - `datdogexporter, datadogconnector`: Graduate the datadog.EnableReceiveResourceSpansV2 feature gate to beta. (#40083) - `k8sobserver`: Add namespaces setting for scoping k8s client to specific namespaces (#39677) - `lokireceiver`: Add support for structured metadata in lokireceiver (#40095) - `awss3exporter`: Add the retry mode, max attempts and max backoff to the settings (#36264) - `receiver/netflow`: Adds additional common EtherTypes for `network.type`. (#40219) - `prometheusremotewriteexproter`: Adds wal metrics to the Prometheus Remote WRite Exporter. The new metrics are: - `otelcol_exporter_prometheusremotewrite_wal_writes`: The total number of WAL writes. - `otelcol_exporter_prometheusremotewrite_wal_writes_failures`: The total number of WAL write failures. (#39556) - `sumologicexporter`: Change how infinity bounds are represented in histogram buckets so that the Sumologic backend can properly handle them. (#39904) - `k8sattributesprocessor`: Add option to configure automatic service resource attributes (#37114) Implements [Service Attributes](https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-attributes/#service-attributes). If you are using the file log receiver, you can now create the same resource attributes as traces (via OTLP) received from an application instrumented with the OpenTelemetry Operator - simply by adding the `extract: { metadata: ["service.namespace", "service.name", "service.version", "service.instance.id"] }` configuration to the `k8sattributesprocessor` processor. See the [documentation](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/k8sattributesprocessor/README.md#configuring-recommended-resource-attributes) for more details. - `signaltometricsconnector`: Add support for parsing gauge metrics from any signal types (#37093) - `receiver/sqlserver`: Add new metric for disk IO rate on a resource pool (#39977) The new metric `sqlserver.resource_pool.disk.operations` is disabled by default. - `receiver/sqlserver`: Add new metric `sqlserver.lock.wait.count` (#39892) This metric is disabled by default. - `receiver/sqlserver`: Add new metric to track OS wait times (#39977) The new metric is named `sqlserver.os.wait.duration` and disabled by default. - `receiver/sqlserver`: Enable `sqlserver.page.life_expectancy` metric for all configurations (#39940) This metric was originally only available when running on Windows, but is now available for all configuration options, including direct connection. Since this metric is enabled by default, users who have direct connection configured will now have this metric emitted by default. - `sqlserverreceiver`: Add configuration option `top_query_collection.collection_interval` for top query collection to make the collection less frequent. (#40002) - This change only applies to the `top_query_collection` feature. - The default value is `60s` ### 🧰 Bug fixes 🧰 - `elasticsearchexporter`: Fix panic when encoding non-string scope attributes. (#37701) - `awsfirehosereceiver`: Parse encoding as a component ID, not just type, allowing for named encodings. (#39808) - `awsfirehosereceiver`: Fix decoding for OTLP-formatted metrics. (#39462) OTLP-formatted metrics were not being decoded correctly until now. - `azuremonitorreceiver`: use ``metrics`` aggregation filter when ``use_batch_api: true`` (#40079) - `googlecloudexporter`: Update the MapMonitoredResource mapping when the exporter.googlecloud.CustomMonitoredResources feature flag is used (#40186) - `golden`: Return an error on timeout without receiving any data (#40076) - `postgresqlreceiver`: fix too many top query got reported. top query should only report those queries were executed during the query interval (#39942) - `filelogreceiver`: Introduce `utf8-raw` encoding to avoid replacing invalid bytes with \uFFFD when reading UTF-8 input. (#39653) - `internal/splunk`: Treat HTTP 403 Forbidden as a permanent error. (#39037) - Splunk responses with a 403 typically indicate an authentication or authorization issue that is not likely to be resolved by retrying. - This change ensures that the error is treated as permanent to avoid unnecessary retries. - This change is applicable to `splunkhecexporter`, `signalfxexporter`. - `spanmetricsconnector`: Fix bug causing span metrics calls count to be always 0 when using delta temporality (#40139) - `kafkareceiver, kafkaexporter`: Add support for named encoding extensions in kafkareceiver and kafkaexporter (#40142) - `libhoneyreceiver`: Handle paths without slashes at the end by adding them (#40070) - `exporter/datadog`: Correctly treat summary counts as cumulative monotonic sums instead of cumulative non-monotonic sums (#40176) - `opampsupervisor`: Fix bug in order of configuration composition and server start (#39949) First start the Supervisor's OpAMP server at a random port, then compose the configuration for the agent with that port. - `cmd/opampsupervisor`: Fix race condition where the Supervisor could report the wrong health status (#40207) - `opampsupervisor`: If there is a remote config, the supervisor now reports the remote config as applied and the correct hash on startup. (#40233) - `stefreceiver`: Correctly handle Shutdown request (#40082) The receiver now correctly Shutdown even if there are active connections ## v0.126.0 ### 🛑 Breaking changes 🛑 - `pkg`: Remove the fields from category AzureCdnAccessLog from the body log record and place them as log record attributes. (#39811) - `azuremonitorreceiver`: Renamed the `auth` field to `credentials` in the azuremonitorreceiver configuration. (#39738) - `pkg/datadog`: Switch feature gate datadog.EnableOperationAndResourceNameV2 to beta. This gate affects exporter/datadog and connector/datadog. It modifies the logic for computing operation names from OTLP spans to produce shorter, more readable names and improve alignment with OpenTelemetry specifications. (#39895) Please see the migration guide for more details. https://docs.datadoghq.com/opentelemetry/migrate/migrate_operation_names/?tab=opentelemetrycollector - `opampsupervisor`: Remnove `agent.health_check_port`. (#39908) The opampsupervisor no longer starts the collector with a default health check extension. - `googlecloudpubsubreceiver`: Add `ignore_encoding_error` configuration to ignore decoding failures from the configured encoder (#38164) Introduce a setting to ignore errors when the configured encoder. It's advised to set this to `true` when using a custom encoder, and use the new `receiver.googlecloudpubsub.encoding_error` metric to monitor the number of errors. Ignoring the error will cause the receiver to drop the message. - `coralogixexporter`: Remove deprecated batcher config for coralogixexporter, use sending_queue::batch (#39960) - `sqlserverreceiver`: Update event properties (#39868) This change only applies to top query events and query sample events: * Update event name of top query event from `top query` to `db.server.top_query` * Update event name of query sample event from `query sample` to `db.server.query_sample` * Remove body of query sample event * Rename `sqlserver.username` to `user.name` in query sample event - `receiver/prometheus`: Upgrade `receiver.prometheusreceiver.RemoveLegacyResourceAttributes` feature gate to `beta` stability (enabled by default) (#32814) Disable the `receiver.prometheusreceiver.RemoveLegacyResourceAttributes` feature gate to restore previous behavior. This feature gate will be removed in a future release. The feature gate is used to replace the following legacy resource attributes: `net.host.name` -> `server.address` `net.host.port` -> `server.port` `http.scheme` -> `url.scheme` ### 🚩 Deprecations 🚩 - `googlecloudpubsubreceiver`: Add deprecation warning for the build-in encoders (#39371) The build-in encoders `cloud_logging` and `raw_text` both have encoding extension alternatives and will be removed in version v0.132.0 of the collector. - `processor/tailsampling`: The invert decisions (InvertSampled and InvertNotSampled) have been deprecated, please make use of drop policy to explicitly not sample select traces. (#39833) ### 🚀 New components 🚀 - `golden`: Add a new CLI, golden, to run comparison of expected payloads over OTLP. (#39662) You can run golden with `--otlp-endpoint localhost:4317 --expected expected.yaml --write-expected --timeout 1m` - `confmap/googlesecretmanagerprovider`: Initial implementation of secrets manager provider. Allows fetch secrets from Google Secrets Manager (#39665) - `googlecloudlogentryencodingextension`: Update stability to alpha. (#37531) ### 💡 Enhancements 💡 - `azuremonitorexxporter`: support logging exceptions for azuremonitor exporter (#38432) - `fileconsumer`: Support "`compression:auto`" which automatically detects file compression type and ingests data. Currently, only gzip compressed files are auto detected. This allows for mix of compressed and uncompressed files to be ingested with the same filelogreceiver. (#37772) - `kafkaexporter`: Add compression level in kafka producer. (#39772) - `processor/metricstarttime`: Upgrade the stability to `Alpha` (#39857) - `splunkenterprisereceiver`: adds `splunk.indexer.rollingrestart.status` metric (#39023) - `carbonreceiver`: Support unnamed groups in carbon receiver regex parser (#39137) - `splunkenterprisereceiver`: Added a new `splunk.search.initiation`, `splunk.search.duration`, `splunk.search.status`, and `splunk.search.success` metrics. (#39566) - `googlecloudexporter`: Updated the exporter.googlecloud.CustomMonitoredResources featuregate to support user defined mapping from OTel resources to Monitored Resources for logging (#40001) - `dockerstatsreceiver`: Returns Docker client options, using the DOCKER_HOST environment variable if no endpoint is configured. (#35779) - Previously, the receiver required explicit configuration of the endpoint. - This change allows automatic detection of DOCKER_HOST, improving flexibility in different environments. - `elasticsearchexporter`: Report Elasticsearch request success / failure via componentstatus (#39562) - `eventlogreceiver`: add raw XML query filtering option (#38517) - `faroreceiver`: Completes the implementation of the Faro receiver. (#19180) - `mongodbatlasreceiver`: Add support for setting custom base URL for the MongoDB Atlas API (#39345) - `postgresqlreceiver`: Reduce component footprint by removing the loading of unnecessary SQL drivers (#39918) Custom builds that are using the postgresql receiver and no other SQL related receivers will see a reduction in the output binary size. A similar effect is expected also for the sqlserverreceiver. - `spanmetricsconnector`: Separate Dimensions for calls and duration metrics (#36805) Add two new fields to the settings: `histogram.dimensions` and `calls_dimensions`. Use them to add independent dimensions to the duration and calls metrics. - `cmd/golden`: Add a docker image for golden (#39662) - `confmap/googlesecretmanager`: Mark the Google Secret Manager provider as alpha stability. (#39665) - `confmap/googlesecretmanager`: Update scheme to use googlesecretsmanager instead of googlesecretmanagerprovider. (#39971) - `pkg/ottl`: Add support for HasPrefix and HasSuffix functions (#39825) - `datadogexporter`: Enable instrumentation_scope_metadata_as_tags by default in datadogexporter. Scope attributes are now added as tags to metrics. (#39767) If you have too many unique values for instrumentation scope attributes, this may cause cardinality issues. If this is a concern, you can disable this by setting `datadog.metrics.instrumentation_scope_metadata_as_tags` to `false`. - `prometheusremotewriteexporter`: Add `exporter.prometheusremotewritexporter.enableSendingRW2` feature gate and configuration to the exporter to send Prometheus remote write 2.0 version. (#33661) WARNING! PRW 2.0 support for the exporter is still under development and not ready for usage. - `k8sobjectsreceiver`: k8sobject receiver support leader election (#39054) - `receiver/k8scluster`: Add node name to pod metadata (#37454) - `receiver/hostmetricsreceiver`: Migrated `hostmetricsreceiver` to use `pkg/winperfcounters` when retrieving Windows performance counters. (#38858) - `netflowreceiver`: Add `send_raw` option to send logs as a raw string in the log body instead of parsed into attributes. (#38920) - `oidcauthextension`: Add ignore_audience config option for ignoring oidc audience (#36568) go-oidc SkipClientIDCheck is set based on config ignore_audience - `opampsupervisor`: Update supervisor to forward the agent's ComponentHealth message to the server whenever it is received. (#39890) - `pkg/ottl`: Add the OTTL function ProfileID() (#39587) - `pkg/ottl`: OTTL is now officially considered Beta stability (#39910) - `postgresqlreceiver`: we introduced the top query collection to postgresql receiver. this will collect the queries from `pg_stat_statements` and report the related metrics. this will help the end user to identify which queries are most executed, and resources most used. (#39573) - `processor/redaction`: Apply redaction to log.body (#37239) - `metricstarttimeprocessor`: Implementation of the subtractinitial strategy (#38379) - `awsfirehosereceiver`: support all possible quantile values of CloudWatch metrics in addition to quantile 0 (min) and 1 (max) (#39687) - `processor/tailsampling`: New policy type to explicitly drop traces regardless of other policy decisions. (#39668) - `stefexporter`: Implement async exporting (#39958) - `processor/transform`: The transformprocessor is now officially considered Beta stability (#39928) - `receiver/ntp`: Move ntpreceiver to beta stability (#39897) ### 🧰 Bug fixes 🧰 - `pkg`: Fix empty resource attributes in the azure logs translator (#39571) - `datadogexporter`: Fixes a memory leak in the Datadog exporter caused by an uninitialized logger. (#39959) - `datadogreceiver`: Support 128 bits TraceIDs coming from Datadog (#36926) This fix is released behind a featuregate so as to not be a breaking change for users. To enable it, enable `receiver.datadogreceiver.Enable128BitTraceID`. The feature uses an LRU cache that will keep the last 100 trace ids by default. This can be configured via `receivers.datadog.trace_id_cache_size`. - `kafkaexporter`: Make Sarama's ConfigurationError as permanent to prevent retries (#38604) - `clickhouseexporter`: clickhouseexporter doesn't set the database name in the dsn of the query that creates the database (#38829) - `kafkaexporter`: fix the default topic configuration, and default message partitioning (#39810, #39816) - `kafkareceiver`: Fix support for built-in text encodings with hyphens in the encoding name (#39793) - `tailsamplingprocessor`: Fix the misleading decision timer latency metric (#38502) - `pkg/stanza/fileconsumer`: Mute new reader log when the noStateTracker is used (#39855) - `cmd/opampsupervisor`: Fix slice merging when using local configuration files (#39947) - `prometheusreceiver`: Add 'fallback_scrape_protocol' to entries obtained through Target Allocator, unless already defined. (#39672) This applies the same configuration change that is already applied on static configuration. - `prometheusreceiver`: Convert ms to s when setting start time on the metric (#39912) - `githubreceiver`: fix queue span lengths caused by GitHub event timestamp bug (#39824) GitHub events from skipped jobs sometimes have the createdAt timestamp to be AFTER the startedAt timestamp. This causes the created span to having a time of some crazy long time, while the duration attribute is negative. This change accounts for that inconsistent behavior from GitHub and adds the corresponding tests. - `signaltometricsconnector`: Fix same metric name, unit, and type with different description ignoring description (#39736) - `receiver/sqlserver`: Properly parse numbers stored in scientific notation to integers (#39124) ## v0.125.0 ### 🛑 Breaking changes 🛑 - `awscloudwatchreceiver`: Adds option to set storage for AWS CloudWatch receiver (#32231) - The default value of the `start_from` field in the logs config changed to Unix epoch (`1970-01-01T00:00:00Z`) when not explicitly configured. This may alter the behavior of existing configurations relying on the previous default. - To maintain previous behavior, explicitly configure `start_from` in the logs configuration. - `k8sobjectsreceiver`: Check for K8s API objects existence on receiver startup and not during config validation. (#38803) - `receiver/kubeletstats`: Move receiver.kubeletstats.enableCPUUsageMetrics feature gate to beta (#39487) Deprecated metrics `container.cpu.utilization`, `k8s.pod.cpu.utilization` and `k8s.node.cpu.utilization` are being replaced by `container.cpu.usage`, `k8s.pod.cpu.usage` and `k8s.node.cpu.usage`. To be able to use the deprecated metrics, switch `receiver.kubeletstats.enableCPUUsageMetrics` feature gate to `false`. - `processor/k8sattributes`: Change processor/k8sattributes to return error if unset envvar is used for `node_from_env_var` (#39447) Before this was a valid configuration, but had an unexpected behavior to monitor the entire cluster. | To keep the same behavior simply do not set the `node_from_env_var` value or use empty string. - `sqlserverreceiver`: `host.name`, `sqlserver.computer.name`, and `sqlserver.instance.name` are now resource attributes instead of log attributes. We used to report `computer_name` and `instance_name` in the log attributes for top query collection and they are now deprecated. Now we report the three resources attributes in both top query collection and sample query collection. (#39449) This change is only relevant for logs. ### 🚩 Deprecations 🚩 - `spanmetricsconnector`: Deprecate the unused configuration `dimensions_cache_size` (#39646) Deprecated configuration `dimensions_cache_size`, please use `aggregation_cardinality_limit` instead ### 🚀 New components 🚀 - `dnslookupprocessor`: Add structure of new processor (#34398) - `datadogextension`: Introduce framework for Datadog Extension (#39589) - `sematextexporter`: basic logs implementation (#36465) ### 💡 Enhancements 💡 - `spanmetricsconnector`: Add new `aggregation_cardinality_limit` configuration option to limit the number of unique combinations of dimensions that will be tracked for metrics aggregation. (#38990) - `awslogsencodingextension`: Add support for S3 Access Logs. (#39161) - `pkg`: Improve performance of azure logs translator. (#39340) - `azureauthextension`: Update stability to alpha. (#39574) - `countconnector`: Add profiles support (#39577) - `awscloudwatchlogsexporter`: Add dynamic log_group_name and log_group_stream naming, based on awsemfexporter (#31382) - `elasticsearchexporter`: Add support for include_source_on_error, which configures whether bulk index responses should include source document on error (#39211) - `elasticsearchexporter`: Introduce LRU cache for profiles (#38606) - `elasticsearchexporter`: Add support for extracting mapping mode from a scope attribute. (#39110) - `opampextension`: Introduces a new config field `include_resource_attributes` which allows the extension to copy the agent's resource attributes to the non-identifying attributes in the agent description. (#37487) - `statsdreceiver`: Add new config to customize socket permissions when transport is set to `unixgram`. (#37807) - `kubeletstatsreceiver`: Adds support for collecting Node and Pod network IO/error metrics for all network interfaces (#30196) - `awss3exporter`: add configuration field `resource_attrs_to_s3/s3_prefix` to support mapping s3 bucket prefix to OTel resource attributes (#37858) If `resource_attrs_to_s3/s3_prefix` is configured, s3 prefix will be determined based on the specified resource attribute and `s3uploader/s3_prefix` will serve as a fallback. - `azureblobexporter`: Add SerialNumBeforeExtension option to BlobNameFormat in Azure Blob exporter as an option to avoid breaking file extension (#39593) - `splunkhecexporter`: Use ObservedTimestamp if Timestamp is empty. (#39221) - `githubreceiver`: add dedicated job queue spans with cicd.pipeline.run.queue.duration attribute (#39081) - `hostmetricsreceiver`: Possible to enable the process scraper under FreeBSD in the hostmetrics receiver. (#39622) - `k8sclusterreceiver`: add support for k8s leader election in k8s cluster receiver (#38429) Allows multiple instances of the k8s cluster receiver to run in a HA mode in a single cluster. - `kafkareceiver`: Add support for configuring Kafka consumer rebalance strategy and group instance ID (#39513) This enhancement introduces two optional settings: group_rebalance_strategy and group_instance_id. These allow users to override the default Range-based rebalance strategy and optionally provide a static instance ID (as per KIP-345) for cooperative sticky balancing. This is particularly useful when handling high-cardinality metric workloads, as it reduces rebalance impact, improves cache reuse, and boosts CPU efficiency. Both settings are optional to maintain full backward compatibility. - `kafkareceiver`: Added a new 'topic' attribute to all existing internal consume-claim metrics. (#35336) - `kafkareceiver`: Add `max_fetch_wait` config setting (#39360) This setting allows you to specify the maximum time that the broker will wait for min_fetch_size bytes of data to be available before sending a response to the client. Defaults to 250ms. - `receiver_creator`: Fix kafkametrics receiver instantiation (#39313) - `signaltometricsconnector`: Add profiles support (#39609) - `sqlserverreceiver`: Accept `context_info` with `traceparent` format in query sample collection, setting log record with correct traceId and spanId. (#39539) - `opampsupervisor`: Add support for the opampsupervisor to be able to start with only local config (#38794) - `prometheusremotewritereceiver`: Cache `target_info` metrics so it can be used to populate metrics' Resource Attributes. (#37277) You can read more about resource attributes handling in https://opentelemetry.io/docs/specs/otel/compatibility/prometheus_and_openmetrics/#resource-attributes-1 ### 🧰 Bug fixes 🧰 - `sqlqueryreceiver`: respect `max_open_conn` configuration for multiple queries (#39270) - `resourcedetectionprocessor`: change the EKS cluster identifier and check the cluster version instead of the existence of aws-auth configmap (#39479) - `datadogexporter`: Fix a race condition in metric serializer exporter where the exporter may not be fully initialized when it receives metrics (#39669) - `filelogreceiver`: Fix frozen receiver when max_concurrent_files is 1 (#39598) - `transformprocessor`: Fix the context inferrer to also take into consideration the global OTTL conditions configuration. (#39455) - `prometheusreceiver`: When a histogram metric has both classic and native histogram buckets, keep both, instead of throwing away the native histogram buckets. (#26555) This was a technical dept from the previous implementation in PR 28663. - `geoipprocessor`: Close providers readers on shutdown (#38961) - `receivercreator`: Fix how escaped backticks are handled in receiver creator templates (#39163) - `opampsupervisor`: Supervisor will no longer report a config status of "applying" if the config has not changed (#39500) - `githubreceiver`: Fix span end times for skipped and cancelled workflows (#39020) - `k8sobjectsreceiver`: Introduces `error_mode`, so users can choose between propagating, ignoring, or silencing missing objects. (#38803) - `opampextension`: Skips loading TLS config for insecure endpoints (#39515) - `opampsupervisor`: fixes OpAMP Supervisor macOS example config (#39492) - `tcpcheckreceiver`: Fix tcpcheck.error to report as a cumulative value instead of always being 1. (#39234) - `kafkareceiver`: `name` label will be correctly set in receiver metrics (#39483) - `signaltometricsconnector`: Fix incorrect result for metrics configured with same name but different type (#39442) - `tcplogreceiver`: Ignore SplitFuncBuilder field to prevent panic during config marshaling (#39474) - `deltatocumulative`: fixes misuse of xsync, leading to bad mutex unlock (#39106) ## v0.124.1 ### 🧰 Bug fixes 🧰 - `receiver/filelog`: Remove printing to console the names of files which are read by File Log receiver (#39414) ## v0.124.0 ### 🛑 Breaking changes 🛑 - `splunkenterprisereceiver`: added new attributes to the receiver and modified config (#36330) - `extension/headerssetter`: Change `DefaultValue` to use `configopaque.String` type. (#39127) - `splunkenterprisereceiver`: disabled default metrics except for splunkHealth to ensure scrapes run on Splunk instance are opt-in (#39068) - `processor/transform`: Fix Basic Config style to properly handle `cache` access. (#38926) The Transform processor now requires only one configuration style per processor's configuration, which means Advanced Config and Basic Config cannot be used together anymore. - `sqlserverreceiver`: update the unit of `db.lock_timeout` attribute from millisecond to second. this attribute is part of the emitted query sample collection. (#39042) ### 🚩 Deprecations 🚩 - `datadogexporter`: Deprecate config `host_metadata::first_resource` (#39069) Opt in to https://docs.datadoghq.com/opentelemetry/mapping/host_metadata/ instead. Its behavior is more predictable and provides more flexibility. - `datadogexporter`: Deprecate feature gate `exporter.datadogexporter.metricexportnativeclient`. Datadog exporter now uses the serializer to send metrics by default. (#39148) Use feature gate `exporter.datadogexporter.metricexportserializerclient` instead - `kafkaexporter`: Deprecate `auth::tls` and introduce `tls` config (#37776) - `kafkametricsreceiver`: Deprecate `auth::tls` and introduce `tls` config (#37776) - `kafkareceiver`: Deprecate `auth::tls` and introduce `tls` config (#37776) - `kafkatopicsobserverextension`: Deprecate `auth::tls` and introduce `tls` config (#37776) - `kafkaexporter`: deprecate `topic` and `encoding`, introduce signal-specific configuration (#35432) - `kafkareceiver`: Add signal-specific topic and encoding config, deprecate existing topic/encoding config. (#32735) ### 🚀 New components 🚀 - `googlecloudlogentryencodingextension`: Add Google Cloud LogEntry Encoding Extension to support decoding logs produced by Google Cloud services (#37531) - `stefreceiver`: Make the receiver initially code complete (#38979) ### 💡 Enhancements 💡 - `azureblobexporter`: support for append blob in azure blob storage exporter (#39075) - `alertmanagerexporter`: Add alert labels based on event attribute list in alermanager exporter (#38063) - `alertmanagerexporter`: Add support for api version in Alertmanager endpoint, default is v2 (#38694) - `azureauthextension`: Add implement for extensionauth.HTTPClient and extensionauth.Server interface functions. (#39178) - `azureblobexporter`: change to alpha for azure blob exporter (#39272) - `azuremonitorreceiver`: Add subscription name resource attribute (#39029) - `azuremonitorreceiver`: Allow to use metrics:getBatch API (Azure Monitor Metrics Data Plane) (#38651) - `servicegraphconnector`: Change database_name_attribute to accept a list of values. (#37777) - `datadogexporter`: Move feature gate `exporter.datadogexporter.metricexportserializerclient` to beta. Datadog exporter now uses the serializer to send metrics by default. (#39148) The serializer has overall better performance and throughput. Note the deprecated `host_metadata::hostname_source::first_resource` config is ignored in the serializer. - `elasticsearchexporter`: Add `telemetry::log_failed_docs_input` and `telemetry::log_failed_docs_input_rate_limit` config to facilitate debugging of failed bulk request items (#39205) Additionally, log a warning about potentially exposing sensitive data on any enabled `telemetry` config. - `kafkareceiver`: Propagate Kafka headers as metadata (#39129) Allwos the Kafka receiver to propagate Kafka headers as client.Info (metadata). Allowing downstream processors and exporters to access the values via the enriched context. - `kafkaexporter`: Propagate metadata keys as headers (#39130) Adds a new config option specifying a list of metadata keys that should be propagated as Kafka message headers. - `faroexporter`: Completes the implementation of the Faro exporter. (#35319) - `farotranslator`: Adds support for user actions in the Faro translator. (#39141) - `receivercreator`: Add kafkatopicsobserver to the receivercreator configuration (#37665) - `clickhouseexporter`: use a more precise conversion function to create TTL (#38942) - `kafkaexporter`: enable partitioning for all encodings (#39001, #38999) With the exception of Jaeger encodings which have their own partitioning logic, partitioning is now independent of the encoding used. This means that all encodings now support partitioning. - `signalfxexporter`: Errors will now include the URL that it was trying to access (#39026) - `splunkhecexporter`: Errors will now include the URL that it was trying to access (#39026) - `telemetrygen`: Fix flaky test TestTemporalityStartTimes (#39219) - `k8sattributesprocessor`: Add option to configure automatic resource attributes - with annotation prefix (#37114) Implements [Specify resource attributes using Kubernetes annotations](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/non-normative/k8s-attributes.md#specify-resource-attributes-using-kubernetes-annotations). If you are using the file log receiver, you can now create the same resource attributes as traces (via OTLP) received from an application instrumented with the OpenTelemetry Operator - simply by adding the `extract: { otel_annotations: true }` configuration to the `k8sattributesprocessor` processor. See the [documentation](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/k8sattributesprocessor/README.md#config-example) for more details. - `signaltometricsconnector`: Allow to configure `optional` attributes which are copied as-is to the output metric. (#38600) - `oracledbreceiver`: Add support for parallel operations metrics (#39215) The following metrics are now available, all disabled by default: - 'DDL statements parallelized' - 'DML statements parallelized' - 'Parallel operations not downgraded' - 'Parallel operations downgraded to serial' - 'Parallel operations downgraded (1-25%)' - 'Parallel operations downgraded (25-50%)' - 'Parallel operations downgraded (50-75%)' - 'Parallel operations downgraded (75-99%)' - `ottlprofile`: Add OTTL support for profiles. (#36104) - `k8sclusterreceiver`: Add missing attributes to entities in experimental entity feature (#39038) - `pkg/stanza`: Use buffer pool for the read buffers to limit allocations" (#39373) - `postgresqlreceiver`: add top query collection to help end user identify which query were executed in the postgresql database. (#39311) - `sqlserverreceiver`: Allow full control of the "connection string" via the `datasource` configuration option (#39235) - `azureauthextension`: Use credentials to handle the access token. (#39057) - `sigv4auth`: Added support for authenticating with AssumeRoleWithWebIdentity API (#103107) Adds the ability to specify the authenticator with an OIDC JWT and AWS IAM role to be assumed using the AssumeRoleWithWebIdentity API instead of just the AssumeRole API. - `spanmetricsconnector`: Initialise new calls_total metrics at 0 (#38537) - `pkg/stanza`: Remove unnecessary slice allocation to track errors (even nil) (#39367) - `awslogs_encoding`: Add support for VPC flow logs sent to S3 in plain text format. (#38896) - `opampsupervisor`: add support for including local configuration files (#37886) - `awslogsencodingextension`: Rename aws.eni.id attribute to network.interface.name and update README (#39051) - `awslogsencodingextension`: Add support for ECS fields. (#39241) - `awslogsencodingextension`: Improve performance when unmarshalling plain-text VPC flow logs. (#39043) ### 🧰 Bug fixes 🧰 - `metricstransformprocessor`: Fix aggregation of exponential histograms in metricstransform processor. (#39143) Fix a panic when the number of populated buckets varies, and fix summing of counts for the Zero bucket. - `datadogexporter`: Fix a bug on missing APM stats when feature gate `exporter.datadogexporter.metricexportserializerclient` is enabled. (#39148) - `datadogexporter`: Fix a bug on `instrumentation_scope_metadata_as_tags` not being honored when feature gate `exporter.datadogexporter.metricexportserializerclient` is enabled. (#39148) - `elasticsearchexporter`: Handle edge cases in metrics grouping causing TSDB version_conflict_engine_exception (#38083) Fix 2 edge cases where metrics grouping were not done correctly: 1. In ecs mode, metric grouping now considers data point attributes overwriting resource attributes. 2. In ecs and otel mode, attributes are now sorted before hashing. Metrics with attributes but in different order are now grouped together. - `pkg/ottl`: Fix OTTL context inference order to prioritize the `scope` context over `resource`. (#39155) - `servicegraphconnector`: Metrics for spans with extra dimensions configured are incorrectly being aggregated together despite the dimension values being different. (#39160) - `pkg/ottl`: Fix so replace_all_patterns can replace keys using optional function (#32896) When using the `replace_all_patterns` with `key` and `optional` function on the replacement, the value was being replaced with the key. This change fixes that and now the key is replaced as intended. - `servicegraphconnector`: Fix collectClientLatencyMetrics method bug (#39184) - `testbed`: Specify `storage` parameter for filelog receiver in benchmarks (#39217) - `awss3exporter`: Fixes an issue where the AWS S3 Exporter was forcing an ACL to be set, leading to unexpected behavior in S3 bucket permissions (#39346) Current behavior of the AWS S3 Exporter is to set the ACL to 'private' by default, this removes that behavior and sets no ACL if not specified. - `connector/spanmetrics`: This change proposes moving the start timestamp (and last seen timestamp) from the resourceMetrics level to the individual metrics level. This will ensure that each metric has its own accurate start and last seen timestamps, regardless of its relationship to other spans. (#35994) - `receiver/kubeletstats`: support user defined CA path for service account using the configtls option `ca_file` (#39291) - `telemetrygen`: fix startTimestamp when generating cumulative temporality datapoints. (#38232) - `splunkenterprisereceiver`: Fixes `otelcol_scraper_errored_metric_points` metric, which was not incrementing properly (#38691) ## v0.123.0 ### 🛑 Breaking changes 🛑 - `elasticsearchexporter`: Remove deprecated fields [min|max]_size_items from batch config (#38836) - `receiver/azuremonitorreceiver`: multi subscriptions support and automatic discovery (#36612) - `kafkaexporter`: change default client_id to "otel-collector" (#38411) The exporter now uses the "configkafka" package which consolidates common configuration structures and default values. As a result of this change, we update the default client_id value to "otel-collector". - `kafkametricsreceiver`: change default client_id to "otel-collector", deprecate "refresh_frequency" (#38411) The receiver now uses the "configkafka" package which consolidates common configuration structures and default values. As a result of this change, we update the default client_id value to "otel-collector", and deprecate "refresh_frequency" in favour of "metadata.refresh_interval". - `prometheusremotewriteexporter`: Remove `export_created_metric` config option (#35003) - `k8sattributesprocessor`: Remove stable feature gate `k8sattr.rfc3339` (#38810) - `tlscheckreceiver`: Add file-based TLS certificate checks (#38906) ### 🚩 Deprecations 🚩 - `kafkaexporter`: Deprecate `auth.plain_text` configuration. Use `auth.sasl` with mechanism set to PLAIN instead. (#38883) - `kafkametricsreceiver`: Deprecate `auth.plain_text` configuration. Use `auth.sasl` with mechanism set to PLAIN instead. (#38883) - `kafkareceiver`: Deprecate `auth.plain_text` configuration. Use `auth.sasl` with mechanism set to PLAIN instead. (#38883) - `kafkatopicsobserverextension`: Deprecate `auth.plain_text` configuration. Use `auth.sasl` with mechanism set to PLAIN instead. (#38883) ### 🚀 New components 🚀 - `awslogsencodingextension`: Add AWS Logs Encoding Extension to support decoding logs produced by AWS services (#38627) - `stefreceiver`: Add structure of new receiver (#38979) - `k8slogreceiver`: Add the skeleton for the new k8slogreceiver in development. (#23339) - `azureauthextension`: Add new authenticator extension for Azure. (#38908) - `tpmextension`: Add scaffolding for Trusted Platform Module extension. (#38682) ### 💡 Enhancements 💡 - `spanmetricsconnector`: Add instrumentation scope to span metrics connector. (#23662) This change adds the instrumentation scope to the span metrics connector, which allows users to specify the instrumentation scope for the connector. Now, the connector has a new configuration option: - `include_instrumentation_scope`: A list of instrumentation scope names to include from the traces. The instrumentation scope name is the name of the instrumentation library that collected the span. - `azuremonitorexporter`: support span links for traces for azure monitor exporter (#35855) - `splunkhecreceiver`: Splunk HEC timestamp accepts nanoseconds, microseconds, milliseconds, and seconds epoch. (#36571) - `farotranslator`: Add Faro translator package (#19180, #35319) - `lokiexporter`: Add lokiexporter component to the contrib distribution (#38993) - `oracledbreceiver`: Add support for additional read/write metrics (#37814) The following metrics are now available, all disabled by default: 'physical reads direct', 'physical writes', 'physical writes direct', 'physical read io requests' and 'physical write io requests' metrics' - `tlscheckreceiver`: add `tlscheck.x509.san` attribute (#38872) Subject Alternative Name records are stored as an array on the metric. - `prometheusremotewriteexporter`: Adds logic to convert from the internal OTEL Metrics unit format to Prometheus unit format and emit unit as part of Prometheus metadata. (#29452) - `awslogsencodingextension`: Add support for cloudwatch logs coming from subscription filters. (#38820) - `awscloudwatchencodingextension`: Increase component stability to Alpha (#37870) - `awss3exporter`: Implement timeout for S3 exporter (#36264) - `azureauthextension`: Implement extensionauth.Server and azcore.TokenCredential. (#39012) - `bearertokenauthextension`: Allow the header name to be customized in the bearerauthtoken extension (#38793) - `schemaprocessor`: Add functionality to transform metrics for the schema processor. (#38628) Adds functionality to transform metrics using the target schema version. - `elasticsearchexporter`: Enable native frame symbolization for Universal Profiling via the symbolization queue indices. (#38577) - `hostmetricsreceiver`: Reduced the cost of retrieving number of threads and parent process ID on Windows. Disable the featuregate `hostmetrics.process.onWindowsUseNewGetProcesses` to fallback to the previous implementation. (#32947, #38589) - `prometheusremotewritereceiver`: Add help ref attribute to metric (#37277) - `hostmetricsreceiver`: Reduced the CPU cost of collecting the `process.handles` metric on Windows. (#38886) Instead of using WMI to retrieve the number of opened handles by each process the scraper now uses the GetProcessHandleCount Win32 API which results in reduced CPU usage when the metric `process.handles` is enabled. - `pkg/ottl`: Enhance the Decode OTTL function to support all flavors of Base64 (#38854) - `rabbitmqreceiver`: Enhance the RabbitMQ receiver to collect and report additional node-level metrics: `rabbitmq.node.disk_free`, `rabbitmq.node.disk_free_limit`, `rabbitmq.node.disk_free_alarm`, `rabbitmq.node.disk_free_details.rate`, `rabbitmq.node.mem_used`, `rabbitmq.node.mem_limit`, `rabbitmq.node.mem_alarm`, `rabbitmq.node.mem_used_details.rate`, `rabbitmq.node.fd_used`, `rabbitmq.node.fd_total`, `rabbitmq.node.fd_used_details.rate`, `rabbitmq.node.sockets_used`, `rabbitmq.node.sockets_total`, `rabbitmq.node.sockets_used_details.rate`, `rabbitmq.node.proc_used`, `rabbitmq.node.proc_total`, `rabbitmq.node.proc_used_details.rate`. These provide additional observability into the state and resource usage of RabbitMQ nodes. (#38976) - `rabbitmqreceiver`: Enhance the RabbitMQ receiver to collect and report additional node-level metrics across multiple categories. These include metrics related to memory, file descriptors, sockets, processes, disk, uptime, scheduling, garbage collection (GC), I/O, message store, connections, clustering, configuration, application info, and context switches. This significantly improves visibility into the performance, state, and resource usage of RabbitMQ nodes. (#38997) - `resourcedetection`: Adding the os.version resource attribute to system resourcedetection processor (#38087) - `prometheusremotewritereceiver`: Separate timeseries with the same labels are now translated into the same OTLP metric. (#37791) timeseries that belongs to the same metric should be added to the same datapoints slice. - `prometheusremotewritereceiver`: Use Created Timestamps to populate Datapoint's StartTimeUnixNano (#37277) - `workflow`: Remove path parts from component label suffixes (#38527) - `sqlserverreceiver`: support sqlserverreceiver to record every executing query (#36462) We introduced Query Sample collection in this PR. The scraper will record all the currently executing queries once (in most case) and report related metrics. With this, user will be able to see what queries got executed and can combine with the Top Query to get more insights on troubleshooting and fine tuning. - `sqlserverreceiver`: Support query-level log collection (#36462) Added top query (most CPU time consumed) collection. The query will gather the queries took most of the time during the last query interval and report related metrics. The number of queries can be configured. This will enable user to have better understanding on what is going on with the database. This enhancement empowers users to not only monitor but also actively manage and optimize their MSSQL database performance based on real usage patterns. - `opampsupervisor`: Allow controlling Collectors that don't include the nopreceiver and nopexporer (#38809) This requires Collectors built with Collector API v0.122.0+. The nopreceiver and nopexporter will continue to be supported for a few releases, after which only v0.122.0+ will be supported. - `opampsupervisor`: Report the reception of an unexpected UID during bootstrapping (#29864) ### 🧰 Bug fixes 🧰 - `metricstarttimeprocessor`: Add reset detection for histograms (#38582) - `prometheusremotewriteexporter`: Disallow users from setting compression type other than snappy (#37232) This change ensures that only the snappy compression type can be set, as required by the Prometheus Remote Write protocol. - `awsecscontainermetrics`: Ensure that the storage.read_bytes and storage.write_bytes metrics include i/o counts from all devices (#38301) - `receiver/sqlserver`: the current metric scraper would report error when parsing value, the value was parsed as int but actually it should be a float (#38823) - `redisstorageextension`: fix missing redis prefix in Batch method (#38877) - `receiver/sqlserver`: Ensure all enabled metrics are emitted (#38839) - `kafkareceiver`: make calls to error backoff thread-safe and add logging (#38941) - `awsfirehosereceiver`: Fixes unmarshal error when request is larger than the buffer limit of bufio.Scanner (#38736) - `axw:prometheusremotewritereceiver-fix-tests`: wait for listening port to be closed before shutting down receiver (#38705) - `receiver/sqlserver`: Remove warning that `server.address` and `server.port` resource attributes will be enabled (#38831) There is no intention of enabling these resource attributes by default, this change is to simply remove the warning. The `server.address` and `server.port` resource attributes were, and still are, disabled by default. - `awscloudwatchmetricstreamsencodingextension`: Return errors when extracting the metrics from the record instead of logging them. (#38596) - `tcpcheckreceiver`: Fixed typo in "Metric configuration". (#38889) - `pkg/stanza`: Add retries when calls to retrieve Windows event via `EvtNext` fail with error RPC_S_INVALID_BOUND (1734). (#38149) Whenever large events were read in by the Windows event log receiver, via the stanza input operator, the collector would fail with error RPC_S_INVALID_BOUND (1734). Now the operator tries to workaround this issue by reducing the number of events read on each attempt. ## v0.122.0 ### 🛑 Breaking changes 🛑 - `deltatocumulative`: removes legacy and clean up existing metrics (#38079) renamed: - `otelcol_deltatocumulative.datapoints.processed` to `otelcol_deltatocumulative_datapoints` - `otelcol_deltatocumulative.datapoints.dropped` to `otelcol_deltatocumulative_datapoints{error="..."}` - `otelcol_deltatocumulative.max_stale` to `otelcol_deltatocumulative_max_stale` - `otelcol_deltatocumulative.streams.limit` to `otelcol_deltatocumulative_streams_limit` - `otelcol_deltatocumulative.streams.tracked` to `otelcol_deltatocumulative_streams_tracked` removed (already unused): - `otelcol_deltatocumulative.datapoints.linear` - `otelcol_deltatocumulative.streams.tracked.linear` - `otelcol_deltatocumulative.streams.evicted` - `otelcol_deltatocumulative.gaps.length` - `elasticsearchexporter`: Dynamically route documents by default unless `{logs,metrics,traces}_index` is non-empty (#38361) Overhaul in document routing. Deprecate and make `{logs,metrics,traces}_dynamic_index` config no-op. Config validation error on `{logs,metrics,traces}_dynamic_index::enabled` and `{logs,metrics,traces}_index` set at the same time, as users who rely on dynamic index should not set `{logs,metrics,traces}_index`. Remove `elasticsearch.index.{prefix,suffix}` handling. Replace it with `elasticsearch.index` handling that uses attribute value as index directly. Users rely on the previously supported `elasticsearch.index.prefix` and `elasticsearch.index.suffix` should migrate to a transform processor that sets `elasticsearch.index`. Fix a bug where receiver-based routing overwrites data_stream.dataset. - `elasticsearchexporter`: Change default `mapping::mode` config to `otel` (#37241) The new default, OTel mapping mode, requires Elasticsearch 8.12+. To retain the old behavior, explicitly set `mapping::mode` to `none`. - `dbstorageextension`: Change SQLite driver to non-CGO version (#35280) New SQLite driver has incompatible set of options and users should carefully review used driver options (if any) on update Migration guide and available driver options are added to component documentation - `kafkatopicsobserver`: Remove session_timeout and heartbeat_interval config (#38414) These attributes are only relevant to Kafka consumers. - `examples/demo`: Remove examples/demo (#38488) The other examples are sufficient, and there exists the more comprehensive OpenTelemetry Demo. - `receiver/sqlserverreceiver`: SQL Server receiver now requires a positive serial number for X509 certificates. (#38099) See known issues in README of `receiver/sqlserverreceiver` for more information. - `tlscheckreceiver`: Implement TLS Check Receiver for host-based checks (#35842) Changing configuration scheme to use standard confignet TCP client ### 🚀 New components 🚀 - `awscloudwatchencodingextension`: Introduce new encoding extension for AWS CloudWatch Metric Streams (#37870) - `azureblobexporter`: implementation of azure blob exporter (#34319) - `faroreceiver`: Introduce a new receiver to receive faro data (#19180) - `kafkatopicsobserver`: Change stability level of kafkatopicsobserver to alpha (#37665) - `datadogsemanticsprocessor`: Add datadogsemanticsprocessor, which transforms OpenTelemetry semantic conventions to Datadog semantic conventions (#35304) - `pprofreceiver`: Introduce a new receiver to report pprof profiles (#38260) - `sematextexporter`: Advanced metrics implementation (#36465) - `sematextexporter`: basic metrics implementation (#36465) - `tcpcheckreceiver`: Introducing new component tcpcheck receiver (#34414) - `k8sleaderelector`: allows single instance of the receiver/exporter to be active via kubernetes leader election mechanism (#34460) ### 💡 Enhancements 💡 - `azuremonitorexporter`: support sending to multiple azure monitor exporters (#34188) - `azuremonitorexporter`: support custom event for logs for azure monitor exporter (#37422) - `splunkhecreceiver`: splunk hec receiver accepts metrics with empty string Event field (#38464) - `prometheusremotewriteexproter`: Adds the `endpoint` label to remote write exporter metrics to help identify the remote write endpoint within the metrics. (#38397) - `faroexporter`: Add Faro exporter package (#35319) - `awscloudwatchmetricstreamsencodingextension`: Add unmarshaler for JSON cloudwatch metric stream (#38407) - `awscloudwatchmetricstreamsencodingextension`: Add support for opentelemetry1.0 format (#38408) - `sqlserverreceiver`: Add new performance-related metrics (#37884) Added metrics are: - sqlserver.database.backup_or_restore.rate - sqlserver.replica.sent.rate - sqlserver.replica.received.rate - sqlserver.database.execution_errors.count - sqlserver.table.count - sqlserver.memory.free_list_stalls.rate - sqlserver.database.free_space_tempdb - sqlserver.database.full_scans.rate - sqlserver.index.search.rate - sqlserver.database.login.rate - sqlserver.database.logout.rate - sqlserver.database.deadlock.rate - sqlserver.database.mirror_write_transaction.rate - sqlserver.memory.grants_pending.count - sqlserver.page.lookup.rate - sqlserver.transaction.delay - sqlserver.memory.used - sqlserver.database.version_store_size - `awscloudwatchlogsexporter, awsemfexporter, awsxrayexporter`: Adding external id support when assuming a role for AWS credentials. (#36725) AWS IAM Docs https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html#id_roles_third-party_external-id - `hostmetricsreceiver`: Added the `system.linux.memory.dirty` and `system.memory.page_size` metrics. (#38672) - `mongodbreceiver`: Added new mongodb metrics to achieve parity with Telegraf (#37227) - `opampsupervisor`: add ability to report own traces/logs (#38360) - `googlecloudexporter`: Adds a featuregate to support user defined mapping from OTel resources to Monitored Resources (#38102) - `metricstarttimeprocessor`: Decouples the cache from the strategies for adjusting (#38382) - `schemaprocessor`: Adds functionality to transform logs (#38615) - Adds functionality to transform logs using the target schema version. - `schemaprocessor`: Adds functionality to transform traces (#38486) - Adds functionality to transform traces using the target schema version. - `datadogexporter`: Add support for exporting metrics to Datadog using the Datadog serializer. Enable feature gate `exporter.datadogexporter.metricexportserializerclient` to send metrics with the Datadog serializer. (#37930) This change adds ability to export metrics to Datadog using the Datadog serializer. Apart from performance improvements, this change also adds support for metrics origins in the Datadog App. It also removes the support for using the host attributes from the first resource the exporter processes. - `awsecscontainermetricsreceiver`: Upgrading to aws sdk v2 (#38479) - `elasticsearchexporter`: Add stratified downsampling to the profiles support in the elasticsearch exporter (#37893) - `elasticsearchexporter`: Add config `logs_dynamic_pipeline` to dynamically set the document pipeline to the value of the attribute `elasticsearch.ingest_pipeline`, this only applies to logs. (#37419) - `routingconnector`: Adds Standard Converter functions to routing connector. (#38282) - `azuremonitorreceiver`: Adds filtering by metric and/or aggregation (#37420) - `headersetterextension`: Add support for setting headers based on authentication data (#38441) - `collectdreceiver`: apply fieldalignment to collectd records to reduce memory allocation (#37321) - `pkg/ottl`: Enhance flatten() editor to resolve attribute key conflicts by adding a number suffix to the conflicting keys. (#35793) - `geoipprocessor`: Add the `attributes` parameter and consider both `source.address` and `client.address` by default (#37008) - `githubreceiver`: add GitHub workflow job spans (#38016) - `prometheusremotewritereceiver`: Handle `otel_scope_name` and `otel_scope_version` labels in Prometheus Remote Write receiver properly if not present (#37791) if otel_scope_name or otel_scope_name is missing, use collector’s version and description according to the otel spec. - `exporter/loadbalancing`: Add support for route with composite keys (#35320) - `kafka`: Upgrading to aws sdk v2 (#38478) - `extension/observer/kafakatopicsobserver`: add support for client_id and metadata config (#38411) The kafkatopicsobserver is now using the common configkafka package, which brings support for client_id and metadata configuration. This also means that protocol_version is no longer required, and a default version will be used like in other Kafka-related components. - `exporter/kafka`: do not ask for user and password if auth mechanism is set to AWS IAM (#37417) - `metricstarttimeprocessor`: Add the subtract_initial_point strategy skeleton (#37186, #38379) The subtract_initial_point strategy is not fully implemented - `receiver/awscloudwatchreceiver`: Upgrading to adopt AWS SDK v2 (#36699) This change upgrades the AWS SDK used in the CloudWatch receiver from v1 to v2. It ensures better performance and compatibility with newer AWS features. - `bearertokenauthextension`: Add the ability to configure multiple bearer tokens for the same endpoint. (#38148) - `opampsupervisor`: Support HTTP endpoint for opampsupervisor (#38654) - `opampsupervisor`: Add support for configuring the Logs SDK (#38477) - `pkg/ottl`: Add `IsValidLuhn()` checksum verification function (#37880) - `pkg/ottl`: Add ability to compare maps in Boolean Expressions (#38611) - `pkg/ottl`: Add `Murmur3Hash`and `Murmur3Hash128` functions to convert the `target` string to Murmur3 hash in hexadecimal string format (#34077) - `receiver/prometheus`: Adds the Prometheus API server to more easily debug the Prometheus config, service discovery, and targets. (#32646) - `saphanareceiver`: Promote to alpha stability (#38257) - `tcpcheckreceiver`: Promote to alpha stability (#38442) - `rabbitmqreceiver`: Enhance the RabbitMQ receiver to collect and report node-level metrics (`rabbitmq.node.disk_free`, `rabbitmq.node.fd_used`, `rabbitmq.node.mem_limit`, and `rabbitmq.node.mem_used`). This provides additional observability into the state and resource usage of RabbitMQ nodes. (#36925) - `processor/redaction`: Support hashing instead of masking values via 'hash_function' parameter (#35830) - `redisstorageextension`: allow redis key prefix to be specified in extension config (#37677) - `pkg/stanza`: Add 'regex_replace' operator (#37443) - `jaegerreceiver`: Remove dependency on jaeger/cmd/agent (#38655) - `metricstarttimeprocessor`: Use a hash of resource attributes to cache start times for metrics (#38286) - `resourceprocessor`: Add support for profile signal type (#359979) - `secretsmanagerprovider`: Allow for default values when the selector is empty or the JSON key is not found (#37535) Uses the same syntax as the `envprovider` - `receiver/azuremonitorreceiver`: Add dimensions.enabled and dimensions.overrides which allows to opt out from automatically split by all the dimensions of the resource type (#36611) - `sqlqueryreceiver`: Allow users to specify the maximum number of concurrent open connections to DB server using `max_open_conn` config parameter (#36752) - `pkg/stanza`: Prevent data loss in Stanza-based receivers on ungraceful shutdown of the collector (#35456) Enable the `stanza.synchronousLogEmitter` feature gate to unlock this feature. See the [documentation](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/stanza/README.md) for more information. - `telemetrygen`: Support integer values in `--telemetry-attributes` and `--otlp-attributes` flags (#38392) - Previously, all attribute values had to be strings wrapped in double quotes. - Now, unquoted integer values (e.g., `server.port=8000`) are correctly parsed as integers. - Ensures backward compatibility with existing string and boolean attributes. - `tlscheckreceiver`: Promote to alpha stability (#38460) - `receiver/webhookeventreceiver`: Add option to include headers as log attributes (#37815) Adds new `header_attribute_regex` option. If set, add headers matching supplied regex as log attributes. Header attributes will be prefixed with `header.` ### 🧰 Bug fixes 🧰 - `filelogreceiver`: Extend container parser log file path pattern to include rotated files. (#35137) - `opampsupervisor`: Use OwnLogsConnSettings along with Metrics & Traces settings to evaluate if configuration changed on message. (#38409) - `awsfirehosereceiver`: Fix cwlogs encoding to not consider CONTROL_MESSAGE records invalid (#38433) - `cloudflarereceiver`: Add missing telemetry for Cloudflare receiver (#38447) - `mysqlreceiver`: Fixed issue where the system attempted to convert string value '0.0000' (stored as []uint8) to int64 type, which was causing an invalid syntax error. (#38276) - `attributesprocessor`: Validate metrics configuration parameters before processing (#36077) - `otlpjsonfilereceiver`: Fix nil pointer dereference due to empty token (#38289) - `awsfirehosereceiver`: Remove error log when gzip reader type assertion fails due to nil value (#38352) - `azuremonitorexporter`: Fix flushes on each single Span (#37214) - `servicegraphconnector`: Change the default value of `metrics_flush_interval` to 60s to avoid excessive metric data point generation with default settings. (#34843) - `githubreceiver`: Fixes a bug where Job Step Spans did not have the correct Parent SpanID. (#38647) - `syslogexporter`: Fixes handling of multiple structured data elements (#33300) Previous version added all structured data within one bracket pair. According to the RFC each structured data element should have its own bracket pair. - `healthcheckv2extension`: Fix the deadlock in healthcheckv2 extension in case of an error in the healthcheckv2 Start function. (#38269) - `probabilisticsampler`: Logs priority sampling behavior applies only when the priority attribute is present. (#38468) - `pkg/ottl`: Fix limitation of map literals within slice literals not being handled correctly (#37405) ## v0.121.0 ### 🛑 Breaking changes 🛑 - `telemetrygen`: Update attribute of generated traces from `net.peer.ip` to `net.sock.peer.addr` to bring it in line with new semconv. (#38043) - `awss3exporter`: Replaced the `s3_partition` option with `s3_partition_format` to provide more flexibility to users. (#37915, #37503) Users can provide custom file partitions using [strftime](https://www.man7.org/linux/man-pages/man3/strftime.3.html) formatting. The default value of `year=%Y/month=%m/day=%d/hour=%H/minute=%M` matches the older pattern (with `s3_partition: minute`) If users do not provide a value for `s3_prefix`, the exporter will not create a `/` folder in the bucket. - `elasticsearchexporter`: drop support for metrics for none, raw, and bodymap mapping modes (#37928) Metrics support is in development, and was added for "ecs" and "otel" mapping modes. Support was unintentionally added for the other mapping modes, defaulting to the same behaviour as "ecs" mode. While metrics support is still in development, drop support from these mapping modes and require users to use the intended mapping modes. - `awscontainerinsightreceiver`: Remove high cardinality attribute `Timestamp` from metrics generated by `awscontainerinsightreceiver` (#35861) - `failoverconnector`: Refactors the failover logic and changes the retry mechanism to sample data points (#38064) - `processor/k8sattributes`: Move k8sattr.fieldExtractConfigRegex.disallow feature gate to stable (#25128) - `signalfxexporter`: Remove the deprecated configuration option `translation_rules` (#35332) Please use processors to handle desired metric transformations instead. Find migration guidance in the [translation rules migration guide](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/signalfxexporter/docs/translation_rules_migration_guide.md). - `signaltometricsconnector`: `get` OTTL function is removed and expressions are now parsed using `ParseValueExpression` (#38098) ### 🚩 Deprecations 🚩 - `elasticsearchexporter`: Deprecate `batcher::min_size_items` and `batcher::max_size_items` in favor of `batcher::min_size` and `batcher::max_size`. (#38243) - `prometheusreceiver`: Deprecate metric start time adjustment in the prometheus receiver. It is being replaced by the metricstarttime processor. (#37186) Start time adjustment is still enabled by default. To disable it, enable the | receiver.prometheusreceiver.RemoveStartTimeAdjustment feature gate. ### 🚀 New components 🚀 - `windowsservicereceiver`: Adding a wireframe for a new receiver: windowsservicereceiver (#31377) - `azureblobexporter`: Add new exporter for sending telemetry to Azure Storage Blob (#35717) - `kafkatopicsobserver`: Adding implementation and tests of the component's logic. (#37665) ### 💡 Enhancements 💡 - `coralogixexporter`: Add support for profiles to the Coralogix exporter. (#38011) This change adds support for profiles to the Coralogix exporter. It allows users to export profiles to Coralogix. - `coralogixexporter`: Add new batching capabilities to the Coralogix exporter. (#38081) This change adds a new batching capabilities to the Coralogix exporter. This change is triggered by https://github.com/open-telemetry/opentelemetry-collector/issues/8122. The new batching capabilities are disabled by default. To enable them, you need to set the following configuration: ```yaml exporters: coralogix: batcher: enabled: true # Enable batching flush_timeout: 3s # Flush timeout min_size_items: 8888 # Minimum number of items to flush max_size_items: 10000 # Maximum number of items to batch ``` - `awsfirehosereceiver`: Add `cloud.provider`, `aws.log.group.names` and `aws.log.stream.names` resource attributes to logs and set scope name and version of logs and metrics ingested by awsfirehosereceiver. (#37968) - `googlecloudpubsubexporter`: Add support for exporting ordered messages to GCP Pub/Sub (#32850) - `prometheusremotewriteexproter`: Adds additional metrics to the Prometheus Remote Write Exporter. The new metrics are: - `otelcol_exporter_prometheusremotewrite_sent_batches`: The total number of batches sent to the remote write endpoint. - `otelcol_exporter_prometheusremotewrite_consumers`: The total number of consumers that are currently sending data to the remote write endpoint. (#37912) - `aesprovider`: Promote to alpha stability (#38252) - `azuretranslator`: Map application-defined properties for trace signals (#35402) - `clickhouseexporter`: Add client info to queries (#34915, #37146) This change adds client product info to the system.query_log for more insight on where queries originate - `telemetrygen`: Support `--service` for all signal types, rather than just traces (#38044) - `coralogixexporter`: Partial success response from Coralogix (#38022) Adds the ability to log partial success responses from Coralogix when using the Coralogix exporter. - `processor/resourcedetection`: Introduce retry logic for failed resource detection. (#34761) - `dorisexporter`: add new config: log_response, label_prefix, headers, log_progress_interval (#38162) - `dorisexporter`: optimize schema: add 'service_instance_id', add materialized views, add trace_graph table and trace_graph job. (#38229) - `pkg/ottl`: Support dynamic indexing of math expressions in maps and slices (#37644) - `elasticsearchexporter`: Add `_metric_names_hash` field to metric documents in `otel` mode to avoid metric rejections (#37511) - `envoyalsreceiver`: Mark `envoyalsreceiver` as an alpha receiver. (#36464) - `envoyalsreceiver`: Add node and log identifier resource attributes (#37800) - `receiver/sqlquery`: Add support for SapASE (sybase) database connections (#36328) - `awsfirehosereceiver`: Add support for encoding extensions (#37113) Adds `encoding` config setting, and deprecates the `record_type` setting. - `googlecloudexporter`: Updated `opentelemetry-operations-go` to v0.51.0 (#38116) The new release of `opentelemetry-operations-go` will construct a more accurate default User Agent for its requests by using a `component.BuildInfo`. This should have no user-facing effect. - `iisreceiver`: Added state and uptime metrics for application pools (#34924) - `pkg/stanza`: Add entry's timestamp and attributes to errors logs from log transformers processors (#37285) When a log transformer processor fails to process an log entry it will include entry's timestamp and attributes in its own logs. With this information the user can more easily identify the log file and find the entry that's having issues. - `kafkareceiver`: Add error backoff configuration to kafka receiver which allows to wait and retry a failed message when the next consumer returns some errors. (#37009) - `receiver/kafkametricsreceiver`: Add `refresh_frequency` config to `kafkametricsreceiver`, to configure custom duration for cluster metadata refresh (#37896) - Helps fine tuning the refresh_frequency, and enables custom cluster metadata refresh intervals - Default refresh_frequency is set 10 minutes from Sarama library defaults - `processor/resourcedetection`: Add k8s.cluster.uid to kubeadm detector (#38207) - `elasticsearchexporter`: Support specifying mapping mode via client metadata (#36092) Add config `mapping::allowed_modes` to restrict mapping modes configurable from client metadata. - `metricstarttimeprocessor`: add true_reset_point strategy for setting the start timestamp of cumulative points. (#37186) The implementation is copied from the Prometheus receiver. - `mongodbreceiver`: Added mongodb replica metrics and routing logic for multiple mongodb instances (#37517) - `netflowreceiver`: Promote the NetFlow Receiver to alpha stability (#38255) - `telemetrygen`: Add support for `aggregation-temporality` flag in telemetrygen. Supported values (delta or cumulative) (#38073) - `cmd/opampsupervisor`: Allow configuring Collector process execution via environment variables, custom config files and additional arguments (#24324) - `pkg/ottl`: Add `event_index` to the available paths of the span event context (#35778) - `pkg/ottl`: Introduce Weekday() converter function (#38126) - `prometheusreceiver`: Make use of creation timestamp from prometheus (#36473) - `receiver/prometheusremotewrite`: Add value and timestamp handling in the Prometheus Remote Write receiver by using SetDoubleValue and SetTimestamp (#37277) - `cloudflarereceiver`: Ingest all attributes by default when attributes map is empty (#37720) - `processor/redaction`: Introduce 'blocked_key_patterns' parameter (#35830) - `opampextension`: Support retrieval of available components via the OpAMP extension. (#37246) - `opampsupervisor`: Support retrieval of available components via the OpAMP supervisor. (#37247) - `processor/resourcedetection`: Add a feature flag to allow the processor (and collector) to fail if resource detection fails (#37961) This feature can be enabled via the following feature gate `--feature-gates=processor.resourcedetection.propagateerrors` - `awss3exporter`: Added `acl` option (#37935) - `confmap/provider/s3`: Promote to alpha stability (#38227) - `secretsmanagerprovider`: Promote to alpha stability (#38251) - `receiver/sqlserverreceiver`: Add `server.address` and `server.port` resource attributes to SQL server receiver. (#35183) The new resource attributes are added to the SQL server receiver to distinguish metrics coming from different SQL server instances. - `server.address`: The address of the SQL server host, disabled by default. - `server.port`: The port of the SQL server host, disabled by default. - `opampsupervisor`: Allow configuring additional telemetry settings for the Supervisor's own telemetry (#35582) - `elasticsearchexporter`: Add support for `data_stream.type` attribute to create dynamic index in bodymap mode. (#38000) - `stefexporter`: Mark STEF exporter as Alpha (#37759) - `receiver/webhookeventreceiver`: Allow the request body to have multiple log lines using line breaks (#38042) Adds new `split_logs_at_newline` option that changes the request body to be split into multiple log lines at each newline. ### 🧰 Bug fixes 🧰 - `elasticsearchexporter`: Fixes the getLocations() function. It only worked with a location start of 0, which is very unlikely when a profile contains more than one sample. (#38274) - `elasticsearchexporter`: Reintroduce schema_url fields to otel-mode metric docs (#38045) - `ecsobserver`: Fixed ecs task tags not being included in metadata labels (#38278) - `redactionprocessor`: Fix redaction processor to redact span event attributes (#36633) - `azuremonitorreceiver`: Fix bug where the time grain wasn't honored (#37337) - `exporter/splunk_hec`: Do not pass errors from draining the response body to the pipeline as a export failure. (#38118) - `kafkametricsreceiver`: Fix incorrect cluster admin initialization in consumer scraper (#36818) - `datadogexporter`: Add supports for HTTP_PROXY, HTTPS_PROXY and NO_PROXY for logs (#36292) - `pkg/ottl`: Change the `ottlmetric` context to properly display the `TransformContext` value in debug logs (#38103) - `redisreceiver`: Collect keyspace metrics even if reported dbs are nonsequential (#38135) If a redis instance has no activity on a db, the db number is not reported in the keyspace metrics. This change ensures that the keyspace metrics are collected even if the reported dbs have gaps. - `stefexporter`: Fix incorrectly implemented STEF exporter zstd compression option. (#38088) STEF exporter now correctly supports zstd compression (observed <1 byte per datapoint for hostmetricsreceiver). ## v0.120.1 ### 🧰 Bug fixes 🧰 - `receiver/prometheus`: Fix Collector failing to start up if Prometheus receiver is present in config without 'fallback_scrape_protocol'. (#38018) ## v0.120.0 ### 🛑 Breaking changes 🛑 - `receiver/prometheus`: Prometheus receiver now uses scrapers in Prometheus 3.0. (#36873) There are a number of breaking changes in Prometheus 3.0. Learn more about those changes and migration guide on https://prometheus.io/docs/prometheus/latest/migration/. As a result of [adding support for UTF-8 names](https://prometheus.io/docs/prometheus/latest/migration/#utf-8-names), the metrics and labels containing UTF-8 characters are no longer escaped. Consequently, the dots (.) in internal collector metrics and resource attributes scraped by Prometheus are no longer replaced with underscores (_) unless you follow the migration guide and set `metric_name_validation_scheme` to `legacy` in the Prometheus receiver config. - The `service_name`, `service_instance_id`, and `service_version` resource attributes are now scraped as `service.name`, `service.instance.id`, and `service.version`, respectively. - The following metrics containing dots reported by several components are no longer escaped: - `filter` processor: - `processor_filter_datapoints_filtered` -> `processor_filter_datapoints.filtered` - `processor_filter_logs_filtered` -> `processor_filter_logs.filtered` - `processor_filter_spans_filtered` -> `processor_filter_spans.filtered` - `deltatocumulative` processor: - `deltatocumulative_streams_tracked` -> `deltatocumulative.streams.tracked` - `deltatocumulative_streams_tracked_linear` -> `deltatocumulative.streams.tracked.linear` - `deltatocumulative_streams_limit` -> `deltatocumulative.streams.limit` - `deltatocumulative_streams_evicted` -> `deltatocumulative.streams.evicted` - `deltatocumulative_streams_max_stale` -> `deltatocumulative.streams.max_stale` - `deltatocumulative_datapoints_processed` -> `deltatocumulative.datapoints.processed` - `deltatocumulative_datapoints_dropped` -> `deltatocumulative.datapoints.dropped` - `deltatocumulative_datapoints_linear` -> `deltatocumulative.datapoints.linear` - `deltatocumulative_gaps_length` -> `deltatocumulative.gaps.length` - `googlecloudpubsub` receiver: - `receiver_googlecloudpubsub_stream_restarts` -> `receiver.googlecloudpubsub.stream_restarts` - `datadog` exporter and `datadog` connector: - `otelcol_datadog_trace_agent_stats_writer_bytes` -> `datadog.trace_agent.stats_writer.bytes` - `otelcol_datadog_trace_agent_stats_writer_connection_fill` -> `datadog.trace_agent.stats_writer.connection_fill` - `otelcol_datadog_trace_agent_stats_writer_dropped` -> `datadog.trace_agent.stats_writer.dropped` - `otelcol_datadog_trace_agent_stats_writer_dropped_bytes` -> `datadog.trace_agent.stats_writer.dropped_bytes` - `otelcol_datadog_trace_agent_stats_writer_encode_ms` -> `datadog.trace_agent.stats_writer.encode_ms` - `otelcol_datadog_trace_agent_stats_writer_errors` -> `datadog.trace_agent.stats_writer.errors` - `otelcol_datadog_trace_agent_stats_writer_queue_fill` -> `datadog.trace_agent.stats_writer.queue_fill` - `otelcol_datadog_trace_agent_stats_writer_retries` -> `datadog.trace_agent.stats_writer.retries` - `otelcol_datadog_trace_agent_stats_writer_splits` -> `datadog.trace_agent.stats_writer.splits` - `otelcol_datadog_trace_agent_stats_writer_stats_buckets` -> `datadog.trace_agent.stats_writer.stats_buckets` - `otelcol_datadog_trace_agent_trace_writer_bytes` -> `datadog.trace_agent.trace_writer.bytes` - `otelcol_datadog_trace_agent_trace_writer_bytes_uncompressed` -> `datadog.trace_agent.trace_writer.bytes_uncompressed` - `otelcol_datadog_trace_agent_trace_writer_compress_ms` -> `datadog.trace_agent.trace_writer.compress_ms` - `otelcol_datadog_trace_agent_trace_writer_connection_fill` -> `datadog.trace_agent.trace_writer.connection_fill` - `otelcol_datadog_trace_agent_trace_writer_dropped` -> `datadog.trace_agent.trace_writer.dropped` - `otelcol_datadog_trace_agent_trace_writer_dropped_bytes` -> `datadog.trace_agent.trace_writer.dropped_bytes` - `otelcol_datadog_trace_agent_trace_writer_encode_ms` -> `datadog.trace_agent.trace_writer.encode_ms` - `otelcol_datadog_trace_agent_trace_writer_errors` -> `datadog.trace_agent.trace_writer.errors` - `otelcol_datadog_trace_agent_trace_writer_events` -> `datadog.trace_agent.trace_writer.events` - `otelcol_datadog_trace_agent_trace_writer_flush_duration` -> `datadog.trace_agent.trace_writer.flush_duration` - `otelcol_datadog_trace_agent_trace_writer_payloads` -> `datadog.trace_agent.trace_writer.payloads` - `otelcol_datadog_trace_agent_trace_writer_queue_fill` -> `datadog.trace_agent.trace_writer.queue_fill` - `otelcol_datadog_trace_agent_trace_writer_retries` -> `datadog.trace_agent.trace_writer.retries` - `otelcol_datadog_trace_agent_trace_writer_spans` -> `datadog.trace_agent.trace_writer.spans` - `otelcol_datadog_trace_agent_trace_writer_traces` -> `datadog.trace_agent.trace_writer.traces` - `all`: Added support for go1.24, bumped minimum version to 1.23 (#37875) - `elasticsearchexporter`: Use go-elasticsearch/v8, require minimum version of ES 7.17.x or 8.x (#32454) - `elasticsearchexporter`: Remove dedot config. ECS mode now always dedots, no others dedot at all. (#33772) - `activedirectorydsreceiver`: Fixed typo in the attribute `distingushed_names`, renaming it to `distinguished_names`. (#37606) - `githubreceiver`: The `required_header` configuration option for the trace receiver has been changed to `required_headers`. (#37578) - `receiver/hostmetrics`: Remove receiver.hostmetrics.normalizeProcessCPUUtilization feature gate (#34763) - `tailsamplingprocessor`: Fix the decision timer metric to capture longer latencies beyond 50ms. (#37722) This changes the unit of the decision timer metric from microseconds to milliseconds. - `routingconnector`: Remove `match_once` configuration parameter. (#36824) ### 🚩 Deprecations 🚩 - `opencensusexporter`: Deprecate the OpenCensus exporter (#36791) Migrate to use the OTLP exporter moving forward. - `opencensusreceiver`: Deprecate the OpenCensus receiver (#36791) Migrate to use the OTLP receiver moving forward. ### 🚀 New components 🚀 - `bmchelixexporter`: Mark the BMC Helix exporter as Alpha. (#36773) - `bmchelixexporter`: metrics implementation (#36773) - `kafkatopicsobserver`: Adding new kafka topics observer extension (#37665) - `googlecloudlogentryencodingextension`: Introduce the scaffolding of a new component, googlecloudlogentryencodingextension (#37531) ### 💡 Enhancements 💡 - `elasticsearchexporter`: Syncs support for compression level on elasticsearch exporter with confighttp. The default compression level is 1 if not set. (#37260) - `processor/transformprocessor`: Add support for global conditions and error mode overrides. (#29017) Global conditions are now available for context-inferred structured configurations, allowing the use of fully qualified paths. Additionally, a new configuration key called `error_mode` has been added to the context statements group. This key determines how the processor reacts to errors that occur while processing that specific group of statements. When provided, it overrides the top-level error mode, offering more granular control over error handling. - `pkg/stanza`: Allow users to configure initial buffer size (#37786) - `vcenterreceiver`: Adds three more vCenter virtual machine performance metrics (#37488) - `k8sclusterreceiver`: Adds new descriptive attributes/metadata to the k8s.namespace and the container entity emitted from k8sclusterreceiver. (#37580) - Adds the following attributes to k8s.namespace entity: - k8s.namespace.phase: The phase of a namespace indicates where the namespace is in its lifecycle. E.g. 'active', 'terminating' - k8s.namespace.creation_timestamp: The time when the namespace object was created. - Adds the following attributes to container entity: - container.creation_timestamp: The time when the container was started. Only available if container is either in 'running' or 'terminated' state. - `splunkenterprisereceiver`: Added a new `splunk.health` metric. (#36695) - `pkg/ottl`: Introduce ToLowerCase converter function (#32942) - `pkg/ottl`: Introduce ToSnakeCase converter function (#32942) - `pkg/ottl`: Introduce ToUpperCase converter function (#32942) - `datadogreceiver`: Implement support for span links (#37449) - `resourcedetectionprocessor`: add the Dynatrace detector to the resource detection processor (#37577) - `elasticsearchexporter`: Add profiles support to elasticsearch exporter (#37567) - `googlecloudmonitoringreceiver`: support use [monitoring filters](https://cloud.google.com/monitoring/api/v3/filters) to filter metrics (#36898) - `awsfirehosereceiver`: Refactor unmarshallers to implement pdata unmarshaler interfaces (#37361) - `githubreceiver`: add support for GitHub Actions workflow run events using deterministic Trace and Root Span IDs. (#37578) - `pkg/translator/jaeger/internal/jaeger`: Remove jaeger model/converter/thrift/jaeger dependency (#37820) - `pkg/translator/zipkin/internal/zipkin`: Remove jaeger model/converter/thrift/zipkin dependency (#37795) - `extension/oauth2clientauth`: Add `expiry_buffer` config to `oauth2client` extension, allowing token refresh before expiration with a default buffer of 5 minutes. (#35148) - Prevents authentication failures by refreshing the token early. - The default expiry buffer is set to 5 minutes, and users can adjust it as needed. - `datadogexporter`: Add a gauge metric datadog.otel.gateway which is 1 if the collector is used as a gateway or 0 otherwise. (#37499) - `pkg/ottl`: Introduce ToCamelCase converter function (#32942) - `googlecloudpubsubreceiver`: Turn noisy `warn` log about Pub/Sub servers into `debug`, and turn the reset count into a metric (#37571) The receiver uses the Google Cloud Pub/Sub StreamingPull API and keeps a open connection. The Pub/Sub servers recurrently close the connection after a time period to avoid a long-running sticky connection. Before the receiver logged `warn` log lines everytime this happened. These log lines are moved to debug so that fleets with lots of collectors with the receiver don't span logs at warn level. To keep track of the resets, whenever a connection reset happens a `otelcol_receiver_googlecloudpubsub_stream_restarts` metric is increased by one. - `processor/redaction`: Introduce 'allowed_values' parameter for allowed values of attributes (#35840) - `exporter/logzioexporter`: Remove dependency on Jaeger pkg/cache (#37833) - `routingconnector`: Avoid unnecessary copy of the data in routing connector (#37946) - `awscontainerinsightreceiver`: Add support for HOST_PROC environment variable in AWS Container Insight Receiver. (#35862) - `syslogreceiver`: Support setting `on_error` config for syslog receiver. (#36906) - `processor/tailsampling`: Adds support for optionally recording the policy (and any composite policy) associated with an inclusive tail processor sampling decision. This functionality is disabled by default, you can enable it by passing the following feature flag to the collector: `+processor.tailsamplingprocessor.recordpolicy` (#35180) - `tailsamplingprocessor`: makes the `numeric_attribute` more flexible and allows to set only `min_value` or `max_value`, without the need to set both (#37328) This is useful to have simple configurations like these: ``` { type: numeric_attribute, numeric_attribute: { key: http.status_code, min_value: 400 } } ``` - `testbed`: Include the specified resource limits for CPU and memory in the benchmark results (#36720) - `stefexporter`: Add basic STEF exporter implementation (#37759) - `receiver/zipkinreceiver`: Remove zipkinreceiver dependency on Jaeger (#37795) ### 🧰 Bug fixes 🧰 - `azureeventhubreceiver`: Fix bug where persisted offset would be ignored after restart (#37157) - `bearertokenauthextension`: Load token lazily for gRPC AUTH to fix token refresh issue (#36749) - `opampsupervisor`: The OnConnectionClose was not correctly connected for the supervisor. (#37761) - `elasticsearchexporter`: Fix data loss caused by incorrect metric grouping in ECS and OTel mode (#37898) Fix data loss when the same metric exists across different resources or scopes. Data points / metrics were incorrectly grouped together, leading to data loss with warning logs e.g. "metric with name '***' has already been serialized". - `k8sattributes`: Fix bug where `Filters.Labels` failed with when the `exists` or `not-exists` operations were used. (#37913) - `prometheusreceiver`: Start time metric adjuster now handles reset points correctly (#37717) - `prometheusremotewriteexproter`: Resolves a deadlock in the WAL by temporarily releasing a lock while waiting for new writes to the WAL. (#19363, #24399, #15277) - `awscontainerinsightreceiver`: Fix race condition in shutdown of AWS Container Insight receiver (#37695) ## v0.119.0 ### 🛑 Breaking changes 🛑 - `receiver/cloudfoundry`: Promote `cloudfoundry.resourceAttributes.allow` feature gate to beta (#34824) The `cloudfoundry.resourceAttributes.allow` feature gate is now enabled by default. - `datadogexporter`: Remove stable feature gate `exporter.datadog.hostname.preview` (#37561) - `exporter/prometheusremotewrite`: Change `exporter.prometheusremotewriteexporter.deprecateCreatedMetric` feature gate from Beta to Stable version. (#35003) The `export_created_metric` configuration parameter is now permanently deprecated. - `elasticsearchexporter`: Consistently store the structured body of logs and events in `body.structured` in `otel` mode (#37387) - `solacereceiver`: Update validation step to allow only one auth method. (#36386) ### 🚩 Deprecations 🚩 - `signalfxreceiver`: `access_token_passthrough` is deprecated (#37575) - "`access_token_passthrough` is deprecated." - "Please enable include_metadata in the receiver and add the following config to the batch processor:" ```yaml batch: metadata_keys: [X-Sf-Token] ``` ### 🚀 New components 🚀 - `envoyalsreceiver`: Add a new receiver for the Envoy ALS (Access Log Service). (#36464) - `metricstarttimeprocessor`: Add the initial skeleton for the metricsstarttimeprocessor (#37186) The component is still in development and is not ready for use. - `exporter/sematext`: Add a new component for exporting metrics and logs to Sematext (#36465) ### 💡 Enhancements 💡 - `awss3exporter`: Add support for S3 Storgeclass (#35173) - `processor/transformprocessor`: Add support for flat configuration style. (#29017) The flat configuration style allows users to configure statements by providing a list of statements instead of a structured configuration map. The statement's context is expressed by adding the context's name prefix to path names, which are used to infer and to select the appropriate context for the statement. - `httpcheckreceiver`: Added support for specifying multiple endpoints in the `httpcheckreceiver` using the `endpoints` field. Users can now monitor multiple URLs with a single configuration block, improving flexibility and reducing redundancy. (#37121) - `signaltometricsconnector`: Move signal to metrics connector to alpha stability (#35930) - `exporter/clickhouse`: Adding missing examples of DDL created by the clickhouse exporter (#35903) - `opampsupervisor`: add support for headers configuration for reporting own telemetry (#37353) - `opampsupervisor`: report own metrics via OTLP instead of prometheus receiver (#37346) - `resourcedetectionprocessor`: Expose additional configuration parameters for the AWS metadata client used by the EC2 detector (#35936) In some cases, you might need to change the behavior of the AWS metadata client from the [standard retryer](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/configure-retries-timeouts.html) By default, the client retries 3 times with a max backoff delay of 20s. We offer a limited set of options to override those defaults specifically, such that you can set the client to retry 10 times, for up to 5 minutes, for example: ```yaml processors: resourcedetection/ec2: detectors: ["ec2"] ec2: max_attempts: 10 max_backoff: 5m ``` - `cumulativetodeltaprocessor`: Add metric type filter for cumulativetodelta processor (#33673) - `datadogconnector`: Support obfuscating sql queries in APM stats (#37457) Ensure that feature flags "enable_receive_resource_spans_v2" and "enable_operation_and_resource_name_logic_v2" are also enabled on both Datadog Exporter and Datadog Connector so that span attributes are properly mapped to span type and span resource in Datadog APM; otherwise spans and apm stats may not be obfuscated and attributes on stats payloads may not match traces. See https://docs.datadoghq.com/opentelemetry/schema_semantics/semantic_mapping/?tab=datadogexporter#mapping-opentelemetry-database-system-type-to-datadog-span-type NOTE: Long/complex SQL queries may cause a performance impact on APM Stats calculation in Datadog Connector. Consider implementing sampling in your pipeline prior to sending traces to Datadog Connector if you experience this. - `resourcedetectionprocessor`: Add `fail_on_missing_metadata` option on EC2 detector (#35936) If the EC2 metadata endpoint is unavailable, the EC2 detector by default ignores the error. By setting `fail_on_missing_metadata` to true on the detector, the user will now trigger an error explicitly, which will stop the collector from starting. - `elasticsearchexporter`: Group data points into a single document even if they are from different but equal resources (#37509) This may prevent document rejections in case the same batch contains different resources or scopes that have the same set of attributes - `elasticsearchexporter`: Add config `logs_dynamic_id` to dynamically set the document ID of log records using log record attribute `elasticsearch.document_id` (#36882) - `elasticsearchexporter`: Declare MutatesData: false (#37234) When multiple exporters are used, the collector doesn't need to clone the incoming data anymore - `resourcedetectionprocessor`: The `gcp` resource detector will now detect resource attributes identifying a GCE instance's managed instance group. (#36142) - `jaegerreceiver`: Log the endpoints of different servers started by jaegerreceiver (#36961) This change logs the endpoints of different servers started by jaegerreceiver. It simplifies debugging by ensuring log messages match configuration settings. - `githubgen`: Switch over all usages of githubgen to the new tool location, since the old tool was deprecated (#37412, #37294) - `hostmetrics/process`: Added support for tracking process.uptime (#36667) - `netflowreceiver`: Adds the implementation of the netflow receiver (#32732) The receiver now supports receiving NetFlow v5, NetFow v9, IPFIX, and sFlow v5 logs. - `googlecloudpubsubreceiver`: Added support for encoding extensions. (#37109) - `processor/transformprocessor`: Replace parser collection implementations with `ottl.ParserCollection` and add initial support for expressing statement's context via path names. (#29017) - `prometheusreceiver`: Add `receiver.prometheusreceiver.UseCollectorStartTimeFallback` featuregate for the start time metric adjuster to use the collector start time as an approximation of process start time as a fallback. (#36364) - `tailsamplingprocessor`: Reworked the consume traces, sampling decision, and policy loading paths to improve performance and readability (#37560) ### 🧰 Bug fixes 🧰 - `deltatocumulativeprocessor`: In order to cap number of histogram buckets take the min of desired scale across negative and positive buckets instead of the max (#37416) - `filelogreceiver`: Fix issue where flushed tokens could be truncated. (#35042) - `connector/routing`: Fix config validation with context other than `resource` (#37410) - `k8sattributesprocessor`: Wait for the other informers to complete their initial sync before starting the pod informers (#37056) - `metricsgenerationprocessor`: Generated metric name may not match metric being scaled (#37474) - `otlpjsonfilereceiver`: Include file attributes and append it to the log record (#36641) - `routingconnector`: The connector splits the original payload so that it may be emitted in parts to each route. (#37390) - `pkg/stanza`: Fix default source identifier in recombine operator (#37210) Its default value is now aligned with the semantic conventions: `attributes["log.file.path"]` - `tailsamplingprocessor`: Fixed sampling decision metrics `otelcol_processor_tail_sampling_sampling_trace_dropped_too_early` and `otelcol_processor_tail_sampling_sampling_policy_evaluation_error_total`, these were sometimes overcounted. (#37212) As a result of this change non-zero values of `otelcol_processor_tail_sampling_sampling_trace_dropped_too_early` and `otelcol_processor_tail_sampling_sampling_policy_evaluation_error_total` metrics will be lower. Before this fix, errors got counted several times depending on the amount of traces being processed that tick and where in the batch the error happened. Zero values are unaffected. - `signalfxexporter`: Warn on dropping metric data points when they have more than allowed dimension count (#37484) The SignalFx exporter drops metric data points if they have more than 36 dimensions. Currently, the exporter logs at debug level when this occurs. With this change, the exporter will log at the warning level. ## v0.118.0 ### 🛑 Breaking changes 🛑 - `elasticsearchexporter`: Remove Index config, which was deprecated and replace with LogsIndex since v0.60.0 (#37094) - `elasticsearchexporter`: Remove `dedup` config setting that was deprecated in v0.104.0 (#33773) - `pkg/stanza`: Move `filelog.container.removeOriginalTimeField` feature gate to stable (#33389) - `pkg/ottl`: Support dynamic indexing of maps and slices. (#36644) - `prometheusremotewriteexporter`: Only append label values if they are different for colliding OTel attributes (#35896) This change ensures that, when translating colliding attributes from OTel attributes to Prometheus label, the label values are only appended if their values are different. This is a breaking change as it changes the value of label outputted. - `routingconnector`: Disconnect `match_once` parameter from functionality. (#29882) The parameter will be ignored, except to trigger a warning log about its upcoming removal in v0.120.0. ### 🚩 Deprecations 🚩 - `awscloudwatchmetricsreceiver`: move the component to unmaintained status (#36599) - `githubgen`: Deprecate githubgen in this repository (#37294) githubgen has moved to opentelemetry-go-build-tools. Please change your scripts to use this new location. ### 🚀 New components 🚀 - `intervalprocessor`: Interval Processor is now Alpha stability and is added to the `contrib` and `k8s` distributions (#36514) - `exporter/bmchelix`: Add a new component for exporting metrics to BMC Helix (#36773) - `gitlabreceiver`: Adds webhook skeleton to GitLab receiver to receive events from GitLab for tracing. (#35207) This PR adds a skeleton for the GitLab receiver to receive events from GitLab for tracing via a webhook. The trace portion of this receiver will run and respond to GET requests for the health check only. - `extension/skywalkingencodingextension`: Support skywalking_encoding extension for skywalking traces. (#28693) ### 💡 Enhancements 💡 - `mysqlreceiver`: Add delete_multi, update_multi metrics to mysql.commands for mysqlreceiver (#37301) - `datadogexporter`: Add a feature gate datadog.EnableReceiveResourceSpansV2. Enabling this gate uses a refactored implementation of OTLP->Datadog Span translation in datadogexporter and datadogconnector which improves performance by 10%, and deprecates the following functionality: - No longer checks for resource-related values (container, env, hostname) in span attributes. This previous behavior did not follow the OTel spec. (#37171) - `pkg/ottl`: Add the `Nanosecond` converter to return the nanosecond component from the specified time.Time (#37042) - `pkg/ottl`: Add the `Second` converter to return the second component from the specified time.Time (#37042) - `vcenterreceiver`: Adds vCenter memory capacity for hosts and memory granted metric for VMs. (#37257) - `awss3exporter`: Implement sending queue for S3 exporter (#37274, #36264) - `huaweicloudces`: Move huaweicloudces receiver to alpha (#34953) - `cgroupruntimeextension`: Implement ECS metadata retrieval for cgroupruntime extension. (#36814) - `deltatocumulativeprocessor`: cap the number of exponential histogram buckets to 160 (#33277) - `resourcedetectionprocessor`: This enhancement detects AWS EKS cloud account ID (#37179) - `elasticsearchexporter`: Handle `EventName` for log records in OTel mode (#37011) - `elasticsearchexporter`: More efficient JSON encoding for OTel mode (#37032) Increases throughput for metrics by 2x and for logs and traces by 3x - `elasticsearchexporter`: Mark OTel mapping mode as stable (#37240) OTel mapping mode should no longer be considered unstable as there is no planned breaking change. - `googlecloudmonitoringreceiver`: set the minimum collection interval as 60s (#36898) - `datadogexporter`: Add a feature gate datadog.EnableOperationAndResourceNameV2. Enabling this gate modifies the logic for computing operation and resource names from OTLP spans to produce shorter, more readable names and improve alignment with OpenTelemetry specifications. (#36419) - `dorisexporter`: send json lines to doris rather than json array (#36896) - `k8sattributesprocessor`: For pods with only one container, the `container.id` and `k8s.container.name` are not longer required in the resource attributes to add the container attributes (#34189) - `logdedupprocessor`: Add 'include_fields' option to deduplicate log records via body or attribute fields. (#36965) - `pkg/ottl`: Enhanced error messages for invalid cache access and introduced options to configure their values within the OTTL contexts. (#29017) - `pkg/ottl`: Add the `FormatTime` function to convert `time.Time` values to human-readable strings (#36870) - `prometheusremotewriteexporter`: Re allows the configuration of multiple workers (#36134) - `receiver/prometheusremotewrite`: Check if Scope is already present comparing with the received labels (#36927) - `extension/jaegerremotesampling`: remove dependency on jaeger internal code (#36976) - `telemetrygen`: Remove go-grpc-middleware dependency (#37103) - `resourcedetectionprocessor`: Introduce kubeadm detector to retrieve local cluster name. (#35116) - `signalfxexporter`: Prioritize retrieving token from context when accesstokenpassthrough is enabled (#37102) - `signaltometricsconnector`: Add core logic for the signal to metrics connector to make it functional. (#35930) - `signaltometrics`: Adds resource attributes based on telemetry settings to the connector to ensure single writer (#35930) - `tailsamplingprocessor`: Added debug logging to the sampling decision caches. (#37038) - `tailsamplingprocessor`: Improved not sampled decision cache usage and deleting traces from the internal map when they are in a decision cache. (#37189) ### 🧰 Bug fixes 🧰 - `googlecloudpubsubreceiver`: Fix a goroutine leak during shutdown. (#30438) A goroutine leak was found in the googlecloudpubsubreceiver. The goroutine leak was caused by the receiver not closing the underlying created gRPC client when using an insecure custom endpoint. - `signalfxexporter`: Honor access_token_passthrough config option for sending events (#37102) - `clickhouseexporter`: Fix Nil Pointer Exception on Metrics/Traces export without service.name Resource Attribute (#37030) - `k8sattributesprocessor`: Ensure the pods gathered by the processor contain the information about their related replica sets and deployments after the initial sync (#37056) - `logdedupprocessor`: Fix config validation not working when creating a processor. (#37278) - `pkg/ottl`: Fix bug with `replace_all_matches` and `replace_all_patterns` that caused non-string values to be changed to empty string when matching against empty string. (#37071) - `tailsamplingprocessor`: Fixed sampling policy evaluation debug logging batch metrics (e.g. sampled). (#37040) - `tailsamplingprocessor`: Late span age histogram should include sampled traces. (#37180) ## v0.117.0 ### 🛑 Breaking changes 🛑 - `cloudfoundryreceiver`: Introduce a feature gate enable copying envelope tags to the metrics as resource attributes instead of datapoint attributes. (#34824) - `pkg/ottl`: removed the ability to reference entire parent objects. (#36872) Statements like `set(cache["resource"], resource)` in non-resource contexts will no longer work. - `routingconnector`: Change default value of `match_once` parameter to `true`. (#29882) This field was deprecated in v0.116.0 and will be removed in v0.120.0. ### 🚩 Deprecations 🚩 - `sapmexporter`: Deprecate SAPM exporter (#36028) The SAPM exporter is being marked as deprecated. Please use the `otlp_http` exporter with the configuration shown below. Also update your pipeline configuration for Traces accordingly. ```yaml exporters: otlp_http: traces_endpoint: "${SPLUNK_INGEST_URL}/v2/trace/otlp" headers: "X-SF-Token": "${SPLUNK_ACCESS_TOKEN}" ``` ### 🚀 New components 🚀 - `libhoneyreceiver`: Mark the libhoney receiver exporter as Alpha. (#36693) ### 💡 Enhancements 💡 - `k8sclusterreceiver`: Add additional attributes to node and pod entities (#35879) Adds the following attributes to node and pod metadata/entities: - `k8s.pod.phase`: The phase of a Pod indicates where the Pod is in its lifecycle. E.g. 'Pending', 'Running' - `k8s.pod.status_reason`: A brief message indicating details about why the pod is in this state. E.g. 'Evicted' - `k8s.node.condition_*`: The condition of a node. e.g. `k8s.node.condition_ready`. The value can be `true`, `false`, `unknown`. - `awsxrayexporter`: merge in latest semantic conventions for awsxrayexporter. (#36894) - `receivercreator`: Add support for starting logs' collection based on provided k8s annotations' hints (#34427) - `opensearchexporter`: Add Sending Queue to enable persistent queue in case of upstream failure (#33919) - `libhoneyreceiver`: Implement log signal for libhoney receiver (#36693) - `ottl`: Add a new ottl trim function that trims leading and trailing characters from a string (default- whitespace). (#34100) - `exporter/prometheusremotewrite`: In preparation to re-introducing multiple workers, we're removing a data-race when batching timeseries. (#36601) - `redisstorageextension`: Move redis storage extension to alpha (#36778) - `logzioexporter`: Remove jaeger dbmodel dependency. (#36972) - `sigv4authextension`: Add support for endpoint based names for logs and traces (#36828) - `awsemfexporter`: Split EMF log to multiple log splits when buckets larger than 100. (#36771) - `sqlqueryreceiver`: Add instrumentation scope to SQL query receiver metrics and logs (#31028) - `statsdreceiver`: Add UDS support to statsdreceiver (#21385) - `tailsamplingprocessor`: Support hot sampling policy loading (#37014) - `cmd/telemetrygen`: Introduce support for generating histograms in telemetrygen (#36322) - `libhoneyreceiver`: Implement trace signal for libhoney receiver (#36693) ### 🧰 Bug fixes 🧰 - `receiver/azureeventhub`: Ensure that observed timestamp is set when unmarshaling logs. (#36861) - `internal/docker`: Fix image matching regular expression to properly match SHA256 strings. (#36239) This affects the `docker_observer` extension. - `opampsupervisor`: Report an 'Applied' remote config status when an empty config is received. (#36682) - `k8sobjectsreceiver`: ensure the `k8s.namespace.name` attribute is set for objects retrieved using the `watch` mode (#36352) - `mongodbatlasreceiver`: Update the mongoDB Atlas receiver to use the Default HTTP Transport that supports default proxy configuration (#36412) - `mysqlreceiver`: Avoid recording a value for the MysqlBufferPoolPages metric when out-of-bounds. (#35495) When using compressed tables, Innodb_buffer_pool_pages_misc may report an out-of-bounds value. See https://bugs.mysql.com/bug.php?id=59550 for context. - `pkg/ottl`: fix handling of nested maps within slices in the `flatten` function (#36162) - `mysqlreceiver`: Divide large values directly in SQL queries to avoid int overflows (#35495) ## v0.116.0 ### 🛑 Breaking changes 🛑 - `jsonlogencodingextension`: Change how logs are marshaled. Instead of marshaling just the first log, marshal all logs into a JSON array. (#34064) - `githubreceiver`: Update metric names to match VCS Metric Semantic Conventions and scraper key name. (#36714) * Change the `github` scraper key to `scraper` * Add `vcs.repository.url.full` attribute * Change attribute `repository.name` to `vcs.repository.name` * Change attribute `ref.name` to `vcs.ref.head.name` * Change attribute `ref.type` to `vcs.ref.head.type` * Change attribute `change.state` to `vcs.change.state` * Add attribute `vcs.revision_delta.direction` with `ahead` and `behind` values * Change metric `vcs.repository.ref.revisions_ahead` to `vcs.ref.revisions_delta` with `vcs.revision_delta.direction=ahead` * Change metric `vcs.repository.ref.revisions_behind` to `vcs.ref.revisions_delta` with `vcs.revision_delta.direction=behind` * Change metric `vcs.repository.ref.count` to `vcs.ref.count` * Change metric `vcs.repository.ref.time` to `vcs.ref.time` * Add attribute `vcs.line_change.type` with `added` and `removed` values * Change metric `vcs.repository.ref.lines_added` to `vcs.ref.lines_delta` with `vcs.line_change.type=added` * Change metric `vcs.repository.ref.lines_removed` to `vcs.ref.lines_delta` with `vcs.line_change.type=removed` * Change metric `vcs.repository.contributor.count` to `vcs.contributor.count` * Change metric `vcs.repository.change.time_open` to `vcs.change.duration` with `vcs.change.state=open` * Change metric `vcs.repository.change.time_to_approval` to `vcs.change.time_to_approval` * Change metric `vcs.repository.change.time_to_merge` to `vcs.change.time_to_merge` * Change metric `vcs.repository.change.count` to `vcs.change.count` - `processor/tailsampling`: Reverts #33671, allowing for composite policies to specify inverted clauses in conjunction with other policies. This is a change bringing the previous state into place, breaking users who rely on what was introduced as part of #33671. (#34085) ### 🚩 Deprecations 🚩 - `connector/routing`: Deprecate `match_once` parameter. (#29882) - `routingprocessor`: Deprecated in favor of the routing connector. (#36616) - `splunkhecexporter`: Add `otel_attrs_to_hec_metadata/*` config fields to replace `hec_metadata_to_otel_attrs/*` fields. (#35092) `otel_attrs_to_hec_metadata/*` config fields will replace the `hec_metadata_to_otel_attrs/*` fields in a later release. - `kineticaexporter`: The kineticaexporter is now Unmaintained as it has no active code owners from the vendor (#36808) ### 🚀 New components 🚀 - `dorisexporter`: Mark the Doris exporter as Alpha. (#33479) - `libhoneyreceiver`: Introduce the scaffolding of a new component, libhoneyreceiver (#36693) ### 💡 Enhancements 💡 - `purefareceiver`: Implements support for scraping Pure Storage FlashArray with Purity version 6.6.11+ (#36251) - `azureeventhubreceiver`: support providing one or more time formats for timestamp parsing (#36650) - `googlecloudmonitoringreceiver`: Add metric-specific labels to googlecloudmonitoringreceiver component (#35711) - `awss3receiver`: Add support RFC3339 format for starttime and endtime (#36787) - `awsxrayexporter`: Generate url section in xray segment when `net.peer.name` is available (#35375) - `clickhouseexporter`: Exporter now sorts attribute maps' keys during INSERT, yielding better compression and predictable aggregates (#33634) - `datadogconnector`: Flip configs `traces::compute_stats_by_span_kind`, `traces::peer_tags_aggregation` and `traces::peer_service_aggregation` to true by default (#35969) This enables Datadog APM stats on peer tags by default and is a backwards-compatible change. Read more on https://docs.datadoghq.com/tracing/guide/inferred-service-opt-in/. - `datadogexporter`: Flip configs `traces::compute_stats_by_span_kind`, `traces::peer_tags_aggregation` and `traces::peer_service_aggregation` to true by default (#35969) This enables Datadog APM stats on peer tags by default and is a backwards-compatible change. Read more on https://docs.datadoghq.com/tracing/guide/inferred-service-opt-in/. - `elasticsearchexporter`: Map *.geo.location.{lat,lon} as geo_point field in OTel mode (#36565) In OTel mapping mode, merge *.geo.location.{lat,lon} to *.geo.location such that they are stored as geo_point in Elasticsearch. - `fileexporter`: Add support for profiles signal. (#35978) - `pkg/ottl`: GetXML Converter now supports selecting text, CDATA, and attribute (value) content. (#36821) - `githubreceiver`: Adds webhook skeleton to GitHub receiver to receive events from GitHub for tracing. (#27460) This PR adds a skeleton for the GitHub receiver to receive events from GitHub for tracing via a webhook. The trace portion of this receiver will run and respond to GET requests for the health check only. - `kafkaexporter, kafkareceiver`: Add a new mechanism "AWS_MSK_IAM_OAUTHBEARER" for kafka exporter and kafka receiver. This mechanism use the AWS MSK IAM SASL Signer for Go https://github.com/aws/aws-msk-iam-sasl-signer-go. (#19747) - `loadbalancingexporter`: Adds an optional configuration to the k8s resolver which returns hostnames instead of IPs for headless services pointing at statefulsets (#18412) - `mongodbatlasreceiver`: Adds additional metrics to the MongoDB Atlas receiver (#36525) Adds a number of new default disabled metrics to the MongoDB Atlas receiver. These metrics are: - mongodbatlas.disk.partition.queue.depth - mongodbatlas.disk.partition.throughput - mongodbatlas.process.cache.ratio - `s3exporter`: Upgrading to adopt aws sdk v2 (#36699) - `opampextension`: Use status subscription for fine granular component health reporting (#35856) - `pkg/pdatatest`: Add support for Profiles signal comparison. (#36232) - `receiver/prometheusremotewrite`: Parse labels from Prometheus Remote Write requests into Resource and Metric Attributes. (#35656) Warning - The HTTP Server still doesn't pass metrics to the next consumer. The component is unusable for now. - `signaltometrics`: Add config validation and custom OTTL functions (#35930) Adds config validation for the signal to metrics connector. Also introduces `AdjustedCount` OTTL function. - `testbed`: Add batcher performance tests (#36206) - `testbed`: add options for retry/storage for filelog sender (#36781) ### 🧰 Bug fixes 🧰 - `azuremonitorexporter`: fix bug to remove default config of endpoint which causes failing to parse endpoint correctly. (#36704) - `receiver/prometheusreceiver`: Metric adjuster no longer assumes that all metrics from a scrape come from the same resource (#36477) - `connector/datadog, exporter/datadog, pkg/datadog`: throw error if datadog API key contains invalid characters (#36509) - `parseutils`: Handle escaped quotes when parsing pairs using SplitString. (#36176) - `exporter/prometheusremotewrite`: Fix exemplar handling when the exemplar is an integer value. (#36657) Send metrics with exemplars as integer values now are correctly handled. - `googlecloudmonitoringreceiver`: Fix "no validation found" error if workload is running on Google Cloud Platform (#36607) - `k8sattributesprocessor`: Override extracted k8s attributes if original value has been empty (#36373) - `k8sattributesreceiver`: Log any errors encountered during kube client initialisation (#35879) This addresses an issue where the collector, due to an error encountered during the kubernetes client initialisation, was reporting an 'unavailable' status via the health check extension without any further information to be found in the logs. - `opampextension`: Fix blocking agent shutdown due to unclosed channel (#36764) - `opampsupervisor`: avoid nil pointer access when reporting the last received remote config (#36850) - `postgresqlreceiver`: Update the postgresqlreceiver to handle new table schema for the bgwriter metrics in pg17+ (#36784) - `jaegerreceiver`: Remove ineffectual warning from jaegerreceiver (#35894) - `datadogexporter`: read response body on pushSketches to allow connection re-use (#36779) - `sumologicextension`: Skip likely zombie processes on Windows. (#36481) ## v0.115.0 ### 🛑 Breaking changes 🛑 - `awsfirehosereceiver`: Follow receiver contract based on type of error (#5909) - `elasticsearchexporter`: Respect `flush::bytes` in sync bulk indexer, `flush::bytes` measures uncompressed size, change default `batcher::max_size_items` to `0` (#36163) Limit the bulk request size to roughly `flush::bytes` for sync bulk indexer. Sync bulk indexer is used when `batcher::enabled` is either true or false. In order words, sync bulk indexer is not used when batcher config is undefined. Change `flush::bytes` to always measure in uncompressed bytes. Change default `batcher::max_size_items` to `0` as bulk request size limit is now more effectively enforced by `flush::bytes`. - `k8sattributesprocessor`: Move k8sattr.fieldExtractConfigRegex.disallow feature gate to Beta. (#25128) Disable the `k8sattr.fieldExtractConfigRegex.disallow` feature gate to get the old behavior. - `internal`: Remove stable gate `component.UseLocalHostAsDefaultHost` (#36589) - `cmd/opampsupervisor`: Update default logger output paths to stderr (#36072) The default output paths for the opamp supervisor logger have been updated to stderr from [stdout, stderr]. - `opampsupervisor`: Enable strict unmarshalling of the OpAMP Supervisor config file. An error will now be returned if an invalid config key is set. (#35838) ### 🚩 Deprecations 🚩 - `postgresqlreceiver`: Minimal supported PostgreSQL version updated from 9.6 to 13.0 (#30923) Aligning on the supported versions as can be seen [in the PostgreSQL releases section](https://www.postgresql.org/support/versioning) - `exporter/prometheusremotewrite`: Change `exporter.prometheusremotewriteexporter.deprecateCreatedMetric` feature gate from Alpha to Beta version. (#35003) The `export_created_metric` configuration parameter is now ignored by default. ### 🚀 New components 🚀 - `signaltometricsconnector`: New component for generating metrics from raw signals using user defined OTTL expressions. (#35930) - `extension/cgroupruntime`: Initial implementation for cgroupruntime extension. (#30289) - `huaweicloudcesreceiver`: Introduce new receiver fetching data from huawei Cloud Eye Service. (#34953) - `netflowreceiver`: Introduce the netflow receiver (#32732) ### 💡 Enhancements 💡 - `datadogexporter`: Add a configurable `reporter_period` parameter to the Datadog exporter’s host metadata configuration to allow users to specify the frequency at which host metadata is sent to Datadog. (#36450) - `awsemfexporter`: Add support for 1 second metric resolution in CloudWatch Embedded Metrics Format based on metric attributes (#29506) - `awsemfexporter`: Improvement unit conversion during EMF log translation (#35937) - `sumologicexporter`: adding new products for auto discovery (#35622) - `postgresqlreceiver`: Added new postgresql metrics to achieve parity with Telegraf (#36528) - `loadbalancingexporter`: Adding sending_queue, retry_on_failure and timeout settings to loadbalancing exporter configuration (#35378, #16826) When switching to top-level sending_queue configuration - users should carefully review queue size In some rare cases setting top-level queue size to n*queueSize might be not enough to prevent data loss - `pkg/stanza`: Introduce active file grouping mechanism. (#23787) - `receivercreator`: Add support for starting receivers/scrapers based on provided annotations' hints for metrics' collection (#34427) - `tailsamplingprocessor`: Adds decision cache for non-sampled trace IDs (#31583) - `cmd/opampsupervisor`: Support environment variable expansion in the OpAMP supervisor config. (#36269) - `pkg/ottl`: Move debug log to `Statement.Execute` so that components using it instead of `StatementSequence` also get debug logs. (#36456) - `routingconnector`: Add ability to route by 'datapoint' context (#36523) - `signalfxreceiver`: Follow receiver contract based on type of error (#5909) Use 503 error code for retryable and 400 error code for not-retryable errors instead of responding with a 500 unconditionally. ### 🧰 Bug fixes 🧰 - `cmd/opampsupervisor`: Do not log err if the last received doesn't exist (#36013) - `receiver/azureeventhub`: When using a storage extension, the component will call Close on the client during component shutdown. This fixes a bug that resulted in a file potentially remaining locked after component shutdown. (#36238) - `azuremonitorexporter`: Fixes an issue where the Azure Monitor exporter was not sending data to App Insights due to the Telemetry Channel not being flushed. (#35037) - `exporter/pulsarexporter`: Change configuration option `map_connections_per_broker`, rename to `max_connections_per_broker`. (#36579) - `failoverconnector`: Resolves a bug that prevents proper recovery when disabling max retries (#36587) - `googlecloudpubsubexporter`: Fix a goroutine leak during shutdown. (#30438) A goroutine leak was found in the googlecloudpubsubexporter. The goroutine leak was caused by the exporter not closing the underlying created gRPC client when using an insecure custom endpoint. - `processor/k8sattribute`: fixes parsing of k8s image names to support images with tags and digests. (#36131) - `clickhouseexporter`: Fix incorrect Resource Attribute `service.name` translation to ClickHouse ServiceName field for Logs Records (#36349) - `awsfirehosereceiver`: fix timestamp when ingesting logs from CloudWatch through firehose (#36122) - `pkg/ottl`: Allow indexing []int64, []float64, []bool, and []byte slices (#29441) It should now be possible to index all slice types - `opencensusreceiver`: Do not report error message when OpenCensus receiver is shutdown cleanly. (#36622) - `loadbalancingexporter`: The k8sresolver in loadbalancingexporter was triggering exporter churn in the way the change event was handled. (#35658) - `vcenterreceiver`: The existing code did not honor TLS settings beyond 'insecure'. All TLS client config should now be honored. (#36482) ## v0.114.0 ### 🛑 Breaking changes 🛑 - `datadogexporter`: Stop prefixing `http_server_duration`, `http_server_request_size` and `http_server_response_size` with `otelcol` (#36265) These metrics can be from SDKs rather than collector. Stop prefixing them to be consistent with https://opentelemetry.io/docs/collector/internal-telemetry/#lists-of-internal-metrics - `otelarrowreceiver`: New admission control metrics are consistent across Arrow and OTLP data paths. (#36334) `otelcol_otelarrow_admission_in_flight_bytes` new, replaces `otelcol_otel_arrow_receiver_in_flight_bytes` `otelcol_otelarrow_admission_waiting_bytes`: new, describes waiting requests `otelcol_otel_arrow_receiver_in_flight_items`: removed `otelcol_otel_arrow_receiver_in_flight_requests`: removed ### 🚩 Deprecations 🚩 - `exporter/prometheusremotewrite`: Deprecate configuration option `export_created metric` (#35003) Disable the exporter.prometheusremotewriteexporter.deprecateCreatedMetric feature gate to temporarily re-enable the created metric. ### 💡 Enhancements 💡 - `datadogreceiver`: Add json handling for the `api/v2/series` endpoint in the datadogreceiver (#36079) - `googlemanagedprometheus`: Add `CumulativeNormalization` config option to allow users to configure to specify whether to report normalized or un-normalized points. Defaults to normalized. (#36357) - `elasticsearchexporter`: Translate `k8s.*.name` resource attributes in ECS mode (#36233) Translate `k8s.job.name`, `k8s.cronjob.name`, `k8s.statefulset.name`, `k8s.replicaset.name`, `k8s.daemonset.name`, `k8s.container.name` to `kubernetes.*.name`. Translate `k8s.cluster.name` to `orchestrator.cluster.name`. - `encodingextension`: Add support for profiles signal to encodingextension (#36008) - `k8sattributesprocessor`: Add support for profiles signal (#35983) - `cmd/githubgen`: Adds a flag to skip checking GitHub organization membership for CODEOWNERS (#36263) - `container`: Set non root group permissions for container image (#35179) - `k8sclusterreceiver`: Add support for limiting observed resources to a specific namespace. (#9401) This change allows to make use of this receiver with `Roles`/`RoleBindings`, as opposed to giving the collector cluster-wide read access. - `opampextension`: Add content type to opamp extension when reporting EffectiveConfig (#36327) Add EffectiveConfig.ConfigMap.ConfigMap[*].ContentType as "text/yaml" to the opamp extension when reporting EffectiveConfig. - `otelarrowreceiver`: Admission control improvements (LIFO); admission.waiter_limit is deprecated, replaced with admission.waiting_limit_mib. (#36074) - `otelarrowreceiver`: Add a new LIFO-based bounded queue. (#36074) - `connector/otlpjson`: Throw error on invalid otlp payload. (#35738, #35739) - `prometheusremotewriteexporter`: reduce allocation when serializing protobuf (#35185) - `resourcedetectionprocessor`: Introduce support for Profiles signal type. (#35980) - `routingconnector`: Add ability to route by metric context (#36236) - `routingconnector`: Add ability to route by span context (#36276) - `processor/spanprocessor`: Add a new configuration option to keep the original span name when extracting attributes from the span name. (#36120) - `splunkenterprisereceiver`: Add new metrics for Splunk Enterprise dispatch artifacts caches (#36181) ### 🧰 Bug fixes 🧰 - `pkg/stanza`: Ensure that time parsing happens before entry is sent to downstream operators (#36213) - `prometheusexporter`: Fixes a race condition between the exporter start and shutdown functions. (#36139) - `processor/k8sattributes`: Block when starting until the metadata have been synced, to fix that some data couldn't be associated with metadata when the agent was just started. (#32556) - `exporter/loadbalancing`: Shutdown exporters during collector shutdown. This fixes a memory leak. (#36024) - `pkg/ottl`: Respect the `depth` option when flattening slices using `flatten` (#36161) The `depth` option is also now required to be at least `1`. - `prometheusexporter`: reject metrics whose types have changed, use preexisting descriptions when help strings change (#28617) - `pkg/stanza`: Synchronous handling of entries passed from the log emitter to the receiver adapter (#35453) - `prometheusreceiver`: Fix prometheus receiver to support static scrape config with Target Allocator (#36062) ## v0.113.0 ### 🛑 Breaking changes 🛑 - `sapmreceiver`: Remove the deprecated access_token_passthrough from SAPM receiver. (#35972) Please use `include_metadata` instead with the following config option applied to the batch processor: batch: metadata_keys: [X-Sf-Token] - `pkg/ottl`: Promote `processor.transform.ConvertBetweenSumAndGaugeMetricContext` feature gate to Stable (#36216) This gate can no longer be disabled. The `convert_sum_to_gauge` and `convert_gauge_to_sum` may now only be used with the `metric` context. ### 🚩 Deprecations 🚩 - `opensearchexporter`: The OpenSearch exporter is now marked as unmaintained and will be removed in 6 months. (#35781) Any codeowners can reinstate the component by submitting a PR to revert the change or commenting on https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/35781. ### 🚀 New components 🚀 - `dorisexporter`: metrics implementation (#33479) - `extensions/observer/cfgardenobserver`: Implemented the observer, the second PR in the 3 PR process for new components (#33618) ### 💡 Enhancements 💡 - `splunkenterprisereceiver`: Add telemetry around the Splunk Enterprise kv-store. (#35445) - `journaldreceiver`: adds ability to parse journald's MESSAGE field as a string if desired (#36005) - `journaldreceiver`: allows querying a journald namespace (#36031) - `hostmetricsreceiver`: Add the system.uptime metric in the hostmetrics receiver (#31627) This metric is provided by the new `system` scraper. - `azuredataexplorerexporter`: Add new configuration option `use_default_auth` to enable default authentication for Azure Data Explorer. This option allows users to leverage workload identity for authentication. (#33667) - `awss3receiver`: Mark the AWS S3 receiver as Alpha. (#30750) - `opampsupervisor`: Makes the Supervisor's OpAmp server port configurable with 'agent::opamp_server_port'. (#36001) - `datadogreceiver`: Follow receiver contract based on type of error (#5909) - `hostmetrics`: Adjust scraper creation to make it so the scraper name is reported with hostmetrics scraper errors. (#35814) - `pkg/translator/prometheusremotewrite`: `FromMetricsV2` now transforms attributes into labels. (#33661) - `ntpreceiver`: Move NTP receiver to alpha (#36152) - `opampsupervisor`: Supervisor waits for configurable healthchecks to report remote config status. (#21079) - `otelarrowreceiver`: Enable unlimited admission control when request_limit_mib is set to 0. (#36074) - `pkg/ottl`: Add SliceToMap function (#35256) - `receiver/prometheusremotewrite`: Implement body unmarshaling for Prometheus Remote Write requests (#35624) Warning - The HTTP Server still doesn't do anything. It's just a placeholder for now. - `receiver/prometheusremotewrite`: Implement Content-Type negotiation for Prometheus Remote Write requests (#35565) Warning - The HTTP Server still doesn't do anything. It's just a placeholder for now. - `otlpjsonfilereceiver`: Add support for profiles signal (#35977) - `journaldreceiver`: Restart journalctl if it exits unexpectedly (#35635) - `routingconnector`: Add ability to route by request metadata. (#19738) - `exporter/signalfx`: Enabling retrying for dimension properties update without tags in case of 400 response error. (#36044) Property and tag updates are done using the same API call. After this change, the exporter will retry once to sync properties in case of 400 response error. - `signalfxexporter`: Add more default metrics related to Kubernetes cronjobs, jobs, statefulset, and hpa (#36026) - `simpleprometheusreceiver`: Support to set `job_name` in config (#31502) - `solacereceiver`: Add support to the Solace Receiver to convert the new `Move to Dead Message Queue` and new `Delete` spans generated by Solace Event Broker to OTLP. (#36071) - `routingconnector`: Add ability to route log records individually using OTTL log record context. (#35939) - `splunkenterprisereceiver`: Add new metrics for Splunk Enterprise dispatch artifacts (#35950) ### 🧰 Bug fixes 🧰 - `awsfirehosereceiver`: make otlp_v1 a valid record type (#35750, #36125) - `datadogreceiver`: Return a json response instead of "OK" when a trace is received with a newer protocol version. (#35705) - `datadogreceiver`: Changes response message for `/api/v1/check_run` 202 response to be JSON and on par with Datadog API spec (#36027) - `receiver/windowseventlog`: Fix panic when rendering long event messages. (#36179) - `hostmetricsreceiver`: Do not set the default value of HOST_PROC_MOUNTINFO to respect root_path (#35990) - `prometheusexporter`: Fixes an issue where the prometheus exporter would not shut down the server when the collector was stopped. (#35464) - `k8sobserver`: Enable observation of ingress objects if the `ObserveIngresses` config option is set to true (#35324) - `pkg/stanza`: Fixed bug causing Operators with DropOnErrorQuiet to send log entries to the next operator. (#35010) This issue was introduced by a bug fix meant to ensure Silent Operators are not logging errors (#35010). With this fix, this side effect bug has been resolved. - `otelarrowreceiver`: Simplify receiver admission control logic (#36074) - `otelarrowreceiver`: Avoid breaking telemetry when admission control fails in OTLP handlers. (#36074) - `dbstorage`: Add postgresql support (#35692) - `splunkhecreceiver`: Avoid a memory leak by changing how we record obsreports for logs and metrics. (#35294) - `receiver/filelog`: fix record counting with header (#35869) - `connector/routing`: Fix detection of duplicate conditions in routing table. (#35962) - `solacereceiver`: The Solace receiver may unexpectedly terminate on reporting traces when used with a memory limiter processor and under high load (#35958) - `pkg/stanza/operator`: Retain Operator should propagate the severity field (#35832) The retain operator should propagate the severity field like it does with timestamps. - `pkg/stanza`: Handle error of callback function of `ParserOperator.ProcessWithCallback` (#35769) `ProcessWithCallback` of `ParserOperator` first calls the `ParseWith` method which properly handles errors with `HandleEntryError`. Then the callback function is called and its returned error should also be handled by the `HandleEntryError` ensuring a consistent experience. - `webhookeventreceiver`: Pass the consumer error to EndLogsOp (#35844) ## v0.112.0 ### 🛑 Breaking changes 🛑 - `elasticsearchexporter`: Enable gzip compression by default (#35865) To disable compression, set config `compression` to `none`. - `elasticsearchexporter`: Set body.* for log body in OTel mode (#35771) Log record body in OTel mapping mode will be stored in body.text, body.structured, body.flattened based on body value type and presence of event.name attribute - `processor/metricsgeneration`: Remove "experimental_" prefix from metrics generator processor name. (#35426) ### 🚩 Deprecations 🚩 - `sapmreceiver`: Deprecate SAPM receiver (#32125) - `elasticsearchexporter`: Deprecate retry::max_requests in favor of retry::max_retries (#32344) retry::max_retries will be exactly retry::max_requests - 1 ### 🚀 New components 🚀 - `confmap/aesprovider`: Initial aes encryption provider. Allows configurations to decrypt secrets using AES encryption. (#35550) - `systemdreceiver`: Introduce the scaffolding of a new component, systemdreceiver (#33532) - `ntpreceiver`: Introduce new receiver reporting the offset between the local machine and a NTP server. (#34375) - `tlscheckreceiver`: Add TLS Check Receiver component to monitor x.509 certificate expiry (#35423) ### 💡 Enhancements 💡 - `awsfirehosereceiver`: Add support for CloudWatch logs (#35077) - `awsfirehosereceiver`: added OTLP v1 support to Firehose receiver (#34982) - `awss3receiver`: Add support for monitoring the progress of ingesting data from an S3 bucket via OpAMP custom messages. (#30750) - `azureeventshubreceiver`: Updates the Azure Event Hub receiver to use the new Resource Logs translator. (#35357) - `cloudflarereceiver`: Respond 503 on non-permanent and 400 on permanent errors (#35642) - `elasticsearchexporter`: Add hint in error logs for TSDB version_conflict_engine_exception error (#35546) - `pkg/ottl`: Add ConvertAttributesToElementsXML Converter (#35328) - `logdedupprocessor`: Add a `condition` field to the Log DeDuplication Processor. (#35440) - `opampextension`: Support using auth extensions for authenticating with opamp servers (#35507) - `azureblobreceiver`: adds support for using azidentity default auth, enabling the use of Azure Managed Identities, e.g. Workload Identities on AKS (#35636) This change allows to use authentication type "default", which makes the receiver use azidentity default Credentials, which automatically picks up, identities assigned to e.g. a container or a VirtualMachine - `elasticsearchexporter`: Introduce an experimental bodymap mapping mode for logs (#35444) - `googlecloudexporter`: Google Cloud exporter is marked as mutating. (#35366) - `googlemanagedprometheusexporter`: GMP exporter is marked as mutating. (#35366) - `k8sobserver`: Emit endpoint per Pod's container (#35491) - `mongodbreceiver`: Add support for MongoDB direct connection (#35427) - `exporter/clickhouse`: Add the ability to override default table names for all metric types. (#34225) 'metrics_table_name' of the clickhouse exporter config is deprecated and newly introduced parameter 'metrics_tables' should be used instead. - `metricsgenerationprocessor`: Introduce functionality to only do metric calculations on data points whose attributes match (#35425) This functionality can be enabled by the `metricsgeneration.MatchAttributes` feature gate, which is disabled by default. - `chronyreceiver`: Move chronyreceiver to beta (#35913) - `opampextension`: Implement `ReportsHealth` capability in OpAMP extension (#35433) - `opampextension`: Report OS description semantic convention (`os.description`) as a part of non-identifying agent description. (#35555) - `otelarrowexporter`: Adjust defaults from https://opentelemetry.io/blog/2024/otel-arrow-production/ experiments. (#35477) - `pkg/ottl`: Parsing invalid statements and conditions now prints all errors instead of just the first one found. (#35728) - `pkg/ottl`: Add ParseSimplifiedXML Converter (#35421) - `receiver/prometheusremotewrite`: Add HTTP Server to handler Prometheus Remote Write requests (#35535) Warning - The HTTP Server still doesn't do anything. It's just a placeholder for now. - `rabbitmqexporter`: Allow to configure the name of the AMQP connection in the rabbitmqexporter (#34681) - `routingconnector`: Allow routing based on OTTL Conditions (#35731) Each route must contain either a statement or a condition. - `sapmreceiver`: Respond 503 on non-permanent and 400 on permanent errors (#35300) - `opampsupervisor`: Allow collector logs to passthrough to supervisor output to facilitate running in a containerized environment. (#35473) - `hostmetricsreceiver`: Use HOST_PROC_MOUNTINFO as part of configuration instead of environment variable (#35504) - `pkg/ottl`: Add ConvertTextToElements Converter (#35364) ### 🧰 Bug fixes 🧰 - `metricstransform`: The previously removed functionality of aggregating against an empty label set is restored. (#34430) - `datadogreceiver`: Use `Check` name from Service Check structure as metric name rather than hardcoded string `service_check` (#35718) - `azuredataexplorerexporter`: Fix compression type for Azure Data Explorer exporter by adding the compression type in ingestion properties. (#35353) - `telemetrygen`: ensure validate is called (#35745) - `deltatocumulative`: fix meter panic on startup (#35685) properly constructs the TelemetryBuilder, so it does not panic on startup, rendering the entire component unusable - `elasticsearchexporter`: Log and drop invalid metrics instead of returning error to avoid upstream retries (#35740) - `elasticsearchexporter`: Preserve attribute names and metric names on prefix conflict in OTel mapping mode (#35651) e.g. if there are attributes "a" and "a.b", they should be sent to Elasticsearch as is, instead of "a.value" and "a.b", in OTel mapping mode - `elasticsearchexporter`: Make OTel mapping mode send to data streams only (#35839) This prevents auto creating regular indices in OTel mapping mode due to a race condition in Elasticsearch where otel-data index templates are not ready. - `elasticsearchexporter`: Sanitize datastream routing fields (#34285) Sanitize the dataset and namespace fields according to https://www.elastic.co/guide/en/ecs/current/ecs-data_stream.html. - `oidcauthextension`: Fix a goroutine leak during shutdown. (#30438) A goroutine leak was found in oidcauthextension. The goroutine leak was caused by the oidcauthextension not closing the idle connections in the client and transport. - `filelogreceiver`: Supports `add_metadata_from_filepath` for Windows filepaths (#35558) - `filelogreceiver`: Suppress errors on EBADF when unlocking files. (#35706) This error is harmless and happens regularly when delete_after_read is set. This is because we acquire the lock right at the start of the ReadToEnd function and then defer the unlock, but that function also performs the delete. So, by the time it returns and the defer runs the file descriptor is no longer valid. - `kafkareceiver`: Fixes issue causing kafkareceiver to block during Shutdown(). (#30789) - `hostmetrics receiver`: Fix duplicate filesystem metrics (#34635, #34512) The hostmetrics exposes duplicate metrics of identical mounts exposed in namespaces. The duplication causes errors in exporters that are sensitive to duplicate metrics. We can safely drop the duplicates as the metrics should be exactly the same. - `pkg/translator/prometheusremotewrite`: Fix metric comparison func in prom translation layer (#35741) - `pkg/ottl`: Allow indexing string slice type (#29441) - `mysqlreceiver`: Add replica metric support for versions of MySQL earlier than 8.0.22. (#35217) - `stanza/input/windows`: Close remote session while resubscribing (#35577) - `telemetrygen`: Enable the `--otlp-insecure-skip-verify` flag (#35735) - `receiver/windowseventlog`: Errors returned when passing data downstream will now be propagated correctly. (#35461) - `datadogreceiver`: Changes response message for `/api/v1/series` and `/api/v2/series` 202 response to be JSON and on par with Datadog API spec (#35743) ## v0.111.0 ### 🛑 Breaking changes 🛑 - `instanaexporter`: Remove deprecated instanaexporter (#35367) Use the `otlp` exporter instead as explained in IBM's [documentation](https://www.ibm.com/docs/en/instana-observability/current?topic=opentelemetry-sending-data-instana-backend). - `elasticsearchexporter`: Drop cumulative temporality histogram and exponential histogram (#35442) Cumulative temporality histogram and exponential histogram are not supported by Elasticsearch. Use cumulativetodeltaprocessor to convert cumulative temporality to delta temporality. - `elasticsearchexporter`: Implement receiver-based routing under *_dynamic_index config (#34246) - `config`: Move component.UseLocalHostAsDefaultHost feature gate to stable. (#35569) - `metricsgenerationprocessor`: Generate metrics even when the second metric's value is 0 (#35533) - `signalfxexporter`: Do not exclude the metric `container.memory.working_set` (#35475) - `sqlqueryreceiver`: Fail if value for log column in result set is missing, collect errors (#35068) - `windowseventlogreceiver`: The 'raw' flag no longer suppresses rendering info. (#34720) Previously, this flag controlled two behaviors simultaneously: 1. Whether or not the body of the log record was an XML string or structured object. 2. Whether or not rendering info was resolved. A separate 'suppress_rendering_info' option now controls rendering info resolution. This is considered a breaking change because users setting only the 'raw' flag without also setting the new 'suppress_rendering_info' flag may see a performance decrease along with more detailed events. ### 🚩 Deprecations 🚩 - `sapmreceiver`: `access_token_passthrough` is deprecated (#35330) - "`access_token_passthrough` is deprecated." - "Please enable include_metadata in the receiver and add the following config to the batch processor:" ```yaml batch: metadata_keys: [X-Sf-Token] ``` ### 🚀 New components 🚀 - `receiver/prometheusremotewrite`: Add a new receiver for Prometheus Remote Write. (#33782) ### 💡 Enhancements 💡 - `sumconnector`: adds connector and summing logic along with tests (#32669) - `receivercreator`: Validate endpoint's configuration before starting receivers (#33145) - `otelarrowreceiver`: Add admission control in the otelarrow receiver's standard otlp data path. Also moves admission control config options to a separate block. arrow.admission_limit_mib -> admission.request_limit_mib arrow.waiter_limit -> admission.waiter_limit (#35021) - `clickhouseexporter`: Upgrading stability for traces to beta (#35186) The trace exporter has proven to be stable for production deployments. Trace configuration is unlikely to receive any significant changes. - `clickhouseexporter`: Updated the default trace table (#34245) Reduced data types, improved partitioning and time range queries - `opampsupervisor`: Add configurable logging for the supervisor. (#35466) - `datadogreceiver`: Move receiver's metrics stability to alpha. (#18278) - `datadogreceiver`: Add container id from v0.5 request header (#35345) - `elasticsearchexporter`: Implement elasticsearch.mapping.hints attribute handling for data points in OTel mapping mode (#35479) elasticsearch.mapping.hints takes a slice of strings. `_doc_count` enables emitting `_doc_count` for the document. `aggregate_metric_double` causes histogram or exponential histogram to be emitted as aggregate_metric_double. - `elasticsearchexporter`: Revert TSDB array dimension workaround for metrics OTel mode (#35291) Remove the workaround to stringify array dimensions as the limitation has been lifted in Elasticsearch v8.16.0. - `receiver/statsd`: Add support for aggregating on Host/IP. (#23809) - `opampsupervisor`: Skip executing the collector if no config is provided (#33680) - `googlecloudmonitoringreceiver`: Move receiver's stability to alpha. (#33762) - `hostmetricsreceiver`: Add ability to mute all errors (mainly due to access rights) coming from process scraper of the hostmetricsreceiver (#20435) - `kubeletstats`: Introduce feature gate for deprecation of container.cpu.utilization, k8s.pod.cpu.utilization and k8s.node.cpu.utilization metrics (#35139) - `opampsupervisor`: Make supervisor runnable as a Windows Service. (#34774) - `opampsupervisor`: Add config option for setting the timeout for the initial bootstrap information retrieval from the agent (#34996) - `pkg/ottl`: Add InsertXML Converter (#35436) - `pkg/ottl`: Add GetXML Converter (#35462) - `pkg/ottl`: Add ToKeyValueString Converter (#35334) - `pkg/ottl`: Add RemoveXML Converter (#35301) - `geoipprocessor`: No longer return an error when geo metadata is not found by a provider. (#35047) - `sqlserverreceiver`: Add computer name resource attribute to relevant metrics (#35040) - `windowseventlogreceiver`: Add 'suppress_rendering_info' option. (#34720) When this flag is enabled, the receiver will not attempt to resolve rendering info. This can improve performance but comes at a cost of losing some details in the event log. - `windowseventlogreceiver`: Move artificial "remote_server" field to 'attributes["server.address"]'. (#34720) ### 🧰 Bug fixes 🧰 - `webhookeventreceiver`: Fixed a bug where request bodies containing newline characters caused the results to split into multiple log entries (#35028) - `opampsupervisor`: Only use TLS config when connecting to OpAMP server if using `wss` or `https` protocols. (#35283) - `metricsgenerationprocessor`: Allow metric calculations to be done on sum metrics (#35428) - `sqlqueryreceiver`: Fix reprocessing of logs when tracking_column type is timestamp (#35194) - `windowseventlogreceiver`: While collecting from a remote windows host, the stanza operator will no longer log "subscription handle is already open" constantly during successful collection. (#35520) - `windowseventlogreceiver`: If collecting from a remote host, the receiver will stop collecting if the host restarts. This change resubscribes when the host restarts. (#35175) ## v0.110.0 ### 🛑 Breaking changes 🛑 - `pkg/stanza`: Move `filelog.container.removeOriginalTimeField` feature gate to beta (#33389) - Disable the `filelog.container.removeOriginalTimeField` feature gate to get the old behavior. - `resourcedetectionprocessor`: Move `processor.resourcedetection.hostCPUSteppingAsString` feature gate to stable. (#31136) - `resourcedetectionprocessor`: Remove `processor.resourcedetection.hostCPUModelAndFamilyAsString` feature gate. (#29025) ### 🚩 Deprecations 🚩 - `hostmetricsreceiver`: Set the receiver.hostmetrics.normalizeProcessCPUUtilization feature gate to stable. (#34763) ### 🚀 New components 🚀 - `azurelogs_translator`: Adds a new translator that converts Azure EventHub logs to OpenTelemetry logs used by the Azure Events Hub receiver. (#39704) - `dorisexporter`: logs implementation (#33479) - `dorisexporter`: traces implementation (#33479) ### 💡 Enhancements 💡 - `otelarrowexporter`: Allow separate arrow exporter per unique value of configured metadataKeys. (#34178) - `processor/transform`: Add custom function to the transform processor to convert exponential histograms to explicit histograms. (#33827) - `datadogconnector`: Map the new OTel semantic convention `deployment.environment.name` to `env` for OTLP traces in APM stats. (#35147) The old convention `deployment.environment` still works - `datadogexporter`: Map the new OTel semantic convention `deployment.environment.name` to `env` for OTLP traces, metrics and logs. (#35147) The old convention `deployment.environment` still works - `file_storage`: provide a new option to the user to create a directory on start (#34939) - `headersetterextension`: adding default_value config (#34412) default_value config item applied in case context value is empty - `kafkaexporter`: Add support for encoding extensions in the Kafka exporter. (#34384) This change adds support for encoding extensions in the Kafka exporter. Loading extensions takes precedence over the internally supported encodings. - `datadogexporter`: Adds exporter.datadogexporter.metricremappingdisabled featuregate which disables renaming OpenTelemetry metrics to match Datadog semantics. This feature gate is only for internal use. (#35025) - `otelarrowexporter`: Add BatcherConfig field following similar in OTLP exporter. (#34802) - `otelarrowreceiver`: Add gRPC timeout propagation. (#34742) - `kafkareceiver`: Add support for `otlp_json` encoding to Kafka receiver. The payload is deserialized into OpenTelemetry traces using JSON format. (#33627) This encoding allows the Kafka receiver to handle trace data in JSON format, enabling integration with systems that export traces as JSON-encoded data. - `pkg/ottl`: Improved JSON unmarshaling performance by 10-20% by switching dependencies. (#35130) - `pkg/ottl`: Added support for locale in the Time converter (#32978) - `datadogexporter`: Upgrade logs in Datadog Exporter to beta (#35359) - `remotetapprocessor`: Origin header is no longer required for websocket connections (#34925) - `deltatorateprocessor`: Remove unnecessary data copies. (#35165) - `transformprocessor`: Remove unnecessary data copy when transform sum to/from gauge (#35177) - `sapmexporter`: Prioritize token in context when accesstokenpassthrough is enabled (#35123) - `tailsamplingprocessor`: Fix the behavior for numeric tag filters with `inverse_match` set to `true`. (#34296) ### 🧰 Bug fixes 🧰 - `splunkenterprise`: Fix a flaky search related to iops metrics. (#35081) - `azuremonitorexporter`: fix issue for property endpoint is ignored when using instrumentation_key (#33971) - `groupbytraceprocessor`: Ensure processor_groupbytrace_incomplete_releases metric has a unit. (#35221) - `datadogreceiver`: Fix numeric span attributes (#35087) - `deltatocumulative`: do not drop gauges and summaries (#35284) Gauges and Summaries are no longer dropped from processor output. Instead, they are passed through as-is - `pkg/stanza`: Do not get formatted message for Windows events without an event provider. (#35135) Attempting to get the formatted message for Windows events without an event provider can result in an error being logged. | This change ensures that the formatted message is not retrieved for such events. - `cmd/opampsupervisor`: Ensure the Supervisor processes all fields in a ServerToAgent message. (#34349) - `signalfxexporter`: Ensure token is not sent through for event data (#35154) - `prometheusreceiver`: Fix the retrieval of scrape configurations by also considering scrape config files (#34786) - `redactionprocessor`: Fix panic when using the redaction processor in a logs pipeline (#35331) - `exporter/splunkhec`: Fix incorrect claim that the exporter doesn't mutate data when batching is enabled. (#35306) The bug lead to runtime panics when the exporter was used with the batcher enabled in a fanout scenario. ## v0.109.0 ### 🛑 Breaking changes 🛑 - `clickhouseexporter`: Upgrade trace SpanKind and StatusCode string values (#34799) This change updates the output of the trace SpanKind and StatusCode fields to be consistent with the specification's enum values. While this change will not break any deployments, it may affect queries dependent on the old enum names. For more details on old->new values, see this related PR: https://github.com/open-telemetry/opentelemetry-collector/pull/6250 - `spanmetricsconnector`: Improve consistency between metrics generated by spanmetricsconnector. Added traces.span.metrics as default namespace (#33227, #32818) Default namespace for the generated metrics is traces.span.metrics now. | The deprecated metrics are: calls, duration and events. | The feature flag connector.spanmetrics.legacyMetricNames was added to revert the behavior. - `servicegraphconnector`: Fix histogram metrics miss unit (#34511) All metrics will remove the suffix `_seconds`. It will not introduce breaking change if users use | `prometheusexporter` or `prometheusremotewriteexporter` to exporter metrics in pipeline. | In some cases, like using `clickhouseexporter`(save data in native OTLP format), it will be a breaking change. | Users can use `transformprocessor` to add back this suffix. - `gitproviderreceiver`: The Git Provider Receiver has been renamed to GitHub Receiver. (#34731) This rename was to better match the OpenTelemetry semantic convention changes in v1.27.0 and allows for Traces and Log signals to be added to this component. Traces as mentioned in issue #27460 will be added in a future release to this component. - `ottl`: Remove tracing from OTTL due to performance concerns (#34910) - `vcenterreceiver`: Updated units on several metrics to be more in line with documented semantics. (#34946) The following are the metrics with their respective unit changes: - vcenter.datacenter.cpu.limit ({MHz} -> MHz) - vcenter.cluster.cpu.limit ({MHz} -> MHz) - vcenter.cluster.cpu.effective ({MHz} -> MHz) - vcenter.cluster.vsan.operations ({operations/sec} -> {operations/s}) - vcenter.cluster.vsan.congestions ({congestions/sec} -> {congestions/s}) - vcenter.host.network.packet.error.rate ({errors/sec} -> {errors/s}) - vcenter.host.network.packet.rate ({packets/sec} -> {packets/s}) - vcenter.host.network.packet.drop.rate ({packets/sec} -> {packets/s}) - vcenter.host.vsan.operations ({operations/sec} -> {operations/s}) - vcenter.host.vsan.congestions ({congestions/sec} -> {congestions/s}) - vcenter.resource_pool.cpu.usage ({MHz} -> MHz) - vcenter.vm.network.throughput (By/sec -> By/s) - vcenter.vm.network.packet.rate ({packets/sec} -> {packets/s}) - vcenter.vm.vsan.operations ({operations/sec} -> {operations/s}) ### 🚩 Deprecations 🚩 - `instanaexporter`: Marking instanaexporter module as deprecated (#34994) ### 💡 Enhancements 💡 - `pkg/ottl`: Added Decode() converter function (#32493) - `testbed`: Add test case scenarios to handle large files to existing testbed. (#34288) - `filestorage`: Add directory validation for compaction on-rebound (#35114) - `windowseventlogreceiver`: Avoid rendering the whole event to obtain the provider name (#34755) - `datadogreceiver`: add support for sketch metrics in Datadog receiver (#18278) - `datadogconnector`: Optimize Datadog connector when there are many peer tags and `connector.datadogconnector.NativeIngest` is enabled (#34945) `connector.datadogconnector.NativeIngest` is currently enabled by default - `splunkhecexporter`: Drop empty log events (#34871) Log records with no body are dropped by Splunk on reception as they contain no log message, albeit they may have attributes. This PR removes those logs from consideration to be exported. This is in tune with the behavior of splunkhecreceiver, which refuses HEC events with no event (#19769) - `elasticsearchexporter`: Add exponential histogram support (#34813) - `elasticsearchexporter`: Add span event support to traces OTel mapping mode (#34831) Span events are now supported in OTel mapping mode. They will be routed to `logs-${data_stream.dataset}-${data_stream.namespace}` if `traces_dynamic_index::enabled` is `true`. - `transformprocessor`: Support aggregating metrics based on their attribute values and substituting the values with a new value. (#16224) - `kafkareceiver`: Adds tunable fetch sizes to Kafka Receiver (#22741, #34431) Adds the ability to tune the minimum, default and maximum fetch sizes for the Kafka Receiver - `solarwindsapmsettingsextension`: Added logic for refresh function (#27668) - `githubreceiver`: Promote GitHub receiver metrics to alpha status. (#34960) - `googlecloudmonitoringreceiver`: Enhancing the Google Cloud monitoring receiver to establish a client connection, scrape GCP Cloud Metrics, and transform them into an OpenTelemetry compatible format for pipeline processing. (#33762) - Implements client connection to Google Cloud Monitoring API. - Scrapes timeseries data based on configured metrics. - Converts the data into OpenTelemetry format for use in the pipeline. - `processor/interval`: Support for gauge and summary metrics. (#34803) Only the last value of a gauge or summary metric is reported in the interval processor, instead of all values. - `kafkareceiver`: Add support for encoding extensions in the Kafka receiver. (#33888) This change adds support for encoding extensions in the Kafka receiver. Loading extensions takes precedence over the internally supported encodings. - `datadogexporter`: Add support for setting a custom log source from resource attribute `datadog.log.source` (#35051) - `opampextension`: Adds the ability to configure the polling interval for the HTTP client. (#34749) - `otelarrowexporter`: Add gRPC timeout propagation. (#34733) - `pkg/ottl`: Add `Sort` function to sort array to ascending order or descending order (#34200) - `exporter/prometheusexpoter`: Support for Prometheus Created Timestamps. (#32521) - `redactionprocessor`: Add support for logs and metrics (#34479) - `exceptionsconnector,servicegraphconnector,spanmetricsconnector`: Extract the `getDimensionValue` function as a common function. (#34627) - `sqlqueryreceiver`: Support populating log attributes from sql query (#24459) - `opampsupervisor`: Add new config parameter `agent.health_check_port` to allow configuring the port used by the agent healthcheck extension. (#34643) ### 🧰 Bug fixes 🧰 - `apachereceiver`: Fix panic on invalid endpoint configuration (#34992) - `deltatocumulative`: drop bad samples (#34979) removes bad (rejected) samples from output. previously identified and metric-tracked those as such, but didn't actually drop them. - `elasticsearchexporter`: Fix dynamic mapping for double values storing integers (#34680) - `elasticsearchexporter`: Stringify attribute array values in metrics OTel mode (#35004) Elasticsearch TSDB does not support array dimensions. Workaround it by stringifying attribute array values in OTel mapping mode for metrics. - `fileconsumer`: Fix bug where max_concurrent_files could not be set to 1. (#35080) - `servicegraphconnector`: Fix incorrectly reversed latency settings for the server and client (#34933) - `hostmetricsreceiver`: In filesystem scraper, do not prefix partitions when using the environment variable HOST_PROC_MOUNTINFO (#35043) - `splunkhecreceiver`: Fix memory leak when the receiver is used for both metrics and logs at the same time (#34886) - `geoipprocessor`: Avoid using internal empty attribute.Set pointer (#34882) - `pkg/stanza`: Synchronize shutdown in stanza adapter (#31074) Stanza-based receivers should now flush all data before shutting down - `sqlserverreceiver`: Fix bug where metrics were being emitted with the wrong database name resource attribute (#35036) - `signalfxexporter`: Fix memory leak by re-organizing the exporter's functionality lifecycle (#32781) - `otlpjsonconnector`: Handle OTLPJSON unmarshal error (#34782) - `mysqlreceiver`: mysql client raise error when the TABLE_ROWS column is NULL, convert NULL to int64 (#34195) - `pkg/stanza`: An operator configured with silent errors shouldn't log errors while processing log entries. (#35008) - `datadogexporter`: Use correct hostname for logs when using Datadog Agent logs pipeline with a gateway deployment. (#35058) ## v0.108.0 ### 🛑 Breaking changes 🛑 - `all`: Added support for go1.23, bumped the minimum version to 1.22 (#34658) - `lokiexporter`: Update the scope name for telemetry produced by the lokiexporter from `otelcol/loki` to `github.com/open-telemetry/opentelemetry-collector-contrib/exporter/lokiexporter` (#34612) - `azuretranslator`: The scope name has been updated from `otelcol/azureresourcelogs` and `otelcol/azureresourcetraces` to `github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure` (#34712) - `datadogreceiver`: The scope name has been updated from `otelcol/datadogreceiver` to `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/datadogreceiver/internal/translator` (#34711) - `splunkhecexporter`: The scope name has been updated from `otelcol/splunkhec` to `github.com/open-telemetry/opentelemetry-collector-contrib/exporter/splunkhecexporter` (#34710) - `googlecloudmonitorreceiver`: The scope name has been updated from `otelcol/googlecloudmonitoringreceiver` to `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudmonitoringreceiver` (#34709) - `elasticsearchexporter`: Update OTel mapping mode for logs and metrics; Remove trace_flags (#34472) Update logs and metrics OTel mapping mode to always emit "scope" and zero int, but not emit empty strings for known fields. Breaking change to remove trace_flags from logs. - `elasticsearchexporter`: Change default retry.retry_on_status to [429] (#32584) To retain the previous behavior, set retry.retry_on_status to `[429, 500, 502, 503, 504]`. - `gitproviderreceiver`: Update metric names and attributes to match the newest Semantic Conventions for VCS. (#34278) Attribute Changes: - `branch.name` is now `ref.name` - Added a `ref.type` attribute - `pull_request.state` is now `change.state` - `git.vendor.name` is now `vcs.vendor.name` Metric Changes: - `git.repository.count` is now `vcs.repository.count` - `git.repository.contributor.count` is now `vcs.repository.contributor.count` - `git.repository.branch.count` is now `vcs.repository.ref.count` - `git.repository.branch.time` is now `vcs.repository.ref.time - `git.repository.branch.commit.aheadby.count` is now `vcs.repository.ref.revisions_ahead` - `git.repository.branch.commit.behindby.count` is now `vcs.repository.ref.revisions_behind - `git.repository.branch.line.addition.count` is now `vcs.repository.ref.lines_added` - `git.repository.branch.line.deletion.count` is now `vcs.repository.ref.lines_deleted` - `git.repository.pull_request.time_open` is now `vcs.change.time_open` - `git.repository.pull_request.time_to_merge` is now `vcs.change.time_to_merge` - `git.repository.pull_request.time_to_approval` is now `vcs.change.time_to_approval` - `git.repository.pull_request.count` is now `vcs.change.count` - `transformprocessor`: Promote processor.transform.ConvertBetweenSumAndGaugeMetricContext feature flag from alpha to beta (#34567) - `exporter/datadog`: The `logs::dump_payloads` config option is invalid when the Datadog Agent logs pipeline is enabled (now enabled by default). (#34420) An error will be raised if `logs::dump_payloads` is set while the Datadog Agent logs pipeline is enabled. To avoid this error, remove the `logs::dump_payloads` config option or temporarily disable the `exporter.datadogexporter.UseLogsAgentExporter` feature gate. - `vcenterreceiver`: Several host performance metrics now return 1 data point per time series instead of 5. (#34708) The 5 data points previously sent represented consecutive 20s sampling periods. Depending on the collection interval these could easily overlap. Sending just the latest of these data points is more in line with other performance metrics. This change also fixes an issue with the googlecloud exporter seeing these datapoints as duplicates. Following is the list of affected metrics which will now only report a single datapoint per set of unique attribute values. - vcenter.host.cpu.reserved - vcenter.host.disk.latency.avg - vcenter.host.disk.latency.max - vcenter.host.disk.throughput - vcenter.host.network.packet.drop.rate - vcenter.host.network.packet.error.rate - vcenter.host.network.packet.rate - vcenter.host.network.throughput - vcenter.host.network.usage ### 🚀 New components 🚀 - `exporter/doris`: Add a new component for exporting logs, traces and metrics to Doris (#33479) ### 💡 Enhancements 💡 - `geoipprocessor`: Add a context configuration option to specify the IP address attribute telemetry location. (#34036) - `awss3receiver`: Enhance the logging of the AWS S3 Receiver in normal operation to make it easier for user to debug what is happening. (#30750) - `datadogreceiver`: Implement '/info' endpoint (#34772) - `datadogreceiver`: Add sampling.priority attribute for Probabilistic Sampling Processor (#34267) - `datadogreceiver`: Implement '/stats' endpoint (#34790) - `datadogconnector`: Add a config `traces::bucket_interval` (#34554) `traces::bucket_interval` specifies the time interval size of aggregation buckets that aggregate the Datadog trace metrics. It is also the time interval that Datadog trace metrics payloads are flushed to the pipeline. Default is 10s if unset. - `deltatocumulative`: Promote to `alpha` stability (#34747) promotes the deltatocumulative processor to alpha stability, as most features are now implemented and ready for wider testing. - `deltatocumulative`: explicit-bounds histograms (#30705) implements aggregation of explicit-bounds (traditional) histograms. - `elasticsearchexporter`: Add OTel mapping mode for metrics (#34248) - `elasticsearchexporter`: Add OTel mapping mode for traces (#34588, #34590) Add OTel mapping mode support for traces, without span events. - `filelogreceiver`: If acquire_fs_lock is true, attempt to acquire a shared lock before reading a file. (#34801) Unix only. If a lock cannot be acquired then the file will be ignored until the next poll cycle. - `solacereceiver`: Updated the format for generated metrics. Included a `receiver_name` attribute that identifies the Solace receiver that generated the metrics (#34541) - `geoipprocessor`: Move processor's stability to alpha. (#34737) - `prometheusreceiver`: Ensure Target Allocator's confighttp is used in the receiver's service discovery (#33370) - `datadogreceiver`: Include error when logging unmarshaling failures in Datadog receiver. (#34515) - `metricstransformprocessor`: Add scaling exponential histogram support (#29803) - `exporter/datadog`: Use Datadog Agent logs pipeline by default for exporting logs to Datadog. Upgrades `exporter.datadogexporter.UseLogsAgentExporter` feature flag to beta. (#34420) - `pkg/ottl`: Introduce `UserAgent` converter to parse UserAgent strings (#32434) ### 🧰 Bug fixes 🧰 - `tailsamplingprocessor`: Update the `policy` value in metrics dimension value to be unique across multiple tail sampling components with the same policy name. (#34192) This change ensures that the `policy` value in the metrics exported by the tail sampling processor is unique across multiple tail sampling processors with the same policy name. - `datadogreceiver`: add feature discovery (#34718) - `datadogconnector`: Put back the `otelcol_` prefix for Datadog internal metrics on trace and APM stats exporting (#34807) Recovers these metrics from an upstream breaking change. See https://github.com/open-telemetry/opentelemetry-collector/pull/9759 and https://github.com/open-telemetry/opentelemetry-collector/pull/10940. - `datadogexporter`: Put back the `otelcol_` prefix for Datadog internal metrics on trace and APM stats exporting (#34807) Recovers these metrics from an upstream breaking change. See https://github.com/open-telemetry/opentelemetry-collector/pull/9759 and https://github.com/open-telemetry/opentelemetry-collector/pull/10940. - `awsfirehosereceiver`: Fix validation of requests with empty access key (#34847) - `connector/exceptionsconnector`: Fix dimensions configuration did not take effect for resource attributes (#34603) - `prometheusreceiver`: Group scraped metrics into resources created from `job` and `instance` label pairs (#34237) The receiver will now create a resource for each distinct job/instance label combination. In addition to the label/instance pairs detected from the scraped metrics, a resource representing the overall scrape configuration will be created. This additional resource will contain the scrape metrics, such as the number of scraped metrics, the scrape duration, etc. - `cmd/opampsupervisor`: Fix supervisor support for Windows. (#34570) - `tailsamplingprocessor`: Fix the behavior for numeric tag filters with `inverse_match` set to `true`. (#34296) - `pkg/stanza`: fix nil value conversion (#34672) - `k8sclusterreceiver`: Lower the log level of a message indicating a cache miss from WARN to DEBUG. (#34817) ## v0.107.0 This release fixes CVE-2024-42368 on the `bearerauthtokenextension` (#34516) ### 🛑 Breaking changes 🛑 - `clickhouseexporter`: Add `compress` option to ClickHouse exporter, with default value of `lz4` (#34365) This change adds a new `compress` option to the config field and enables it by default. Prior to this change, compression was not enabled by default. The only way to enable compression prior to this change was via the DSN URL. With this change, `lz4` compression will be enabled by default. The list of valid options is provided by the underlying `clickhouse-go` driver. While this change is marked as breaking, there should be no effect to existing deployments by enabling compression. Compression should improve network performance on most deployments that have a remote ClickHouse server. - Update the scope name for telemetry produce by components. The following table summarizes the changes: | Component name | Previous scope | New scope | PR number | |----------------|----------------|-----------|------------| | `azureeventhubreceiver` | `otelcol/azureeventhubreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureeventhubreceiver` | #34611 | | `cloudfoundryreceiver` | `otelcol/cloudfoundry` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudfoundryreceiver` | #34612 | | `cloudflarereceiver` | `otelcol/cloudflare` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudflarereceiver` | #34613 | | `azuremonitorreceiver` | `otelcol/azuremonitorreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azuremonitorreceiver` | #34618 | | `fileconsumer` | `otelcol/fileconsumer` | `github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/fileconsumer` | #34619 | | `loadbalancingexporter` | `otelcol/loadbalancing` | `github.com/open-telemetry/opentelemetry-collector-contrib/exporter/loadbalancingexporter` | #34429 | | `sumologicexporter` | `otelcol/sumologic` | `github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sumologicexporter` | #34438 | | `prometheusremotewriteexporter` | `otelcol/prometheusremotewrite` | `github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusremotewriteexporter` | #34440 | | `activedirectorydsreceiver` | `otelcol/activedirectorydsreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver` | #34492 | | `aerospikereceiver` | `otelcol/aerospikereceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver` | #34518 | | `apachereceiver` | `otelcol/apachereceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver` | #34517 | | `apachesparkreceiver` | `otelcol/apachesparkreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachesparkreceiver` | #34519 | | `bigipreceiver` | `otelcol/bigipreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/bigipreceiver` | #34520 | | `chronyreceiver` | `otelcol/chronyreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/chronyreceiver` | #34524 | | `couchdbreceiver` | `otelcol/couchdbreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/couchdbreceiver` | #34525 | | `countconnector` | `otelcol/countconnector` | `github.com/open-telemetry/opentelemetry-collector-contrib/connector/countconnector` | #34583 | | `deltatocumulativeprocessor` | `otelcol/deltatocumulative` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor` | #34550 | | `dockerstatsreceiver` | `otelcol/dockerstatsreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/dockerstatsreceiver` | #34528 | | `elasticsearchreceiver` | `otelcol/elasticsearchreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/elasticsearchreceiver` | #34529 | | `expvarreceiver` | `otelcol/expvarreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/expvarreceiver` | #34530 | | `filestatsreceiver` | `otelcol/filestatsreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/filestatsreceiver` | #34429 | | `filterprocessor` | `otelcol/filter` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor` | #34550 | | `flinkmetricsreceiver` | `otelcol/flinkmetricsreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/flinkmetricsreceiver` | #34533 | | `fluentforwardreceiver` | `otelcol/fluentforwardreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/fluentforwardreceiver` | #34534 | | `gitproviderreceiver` | `otelcol/gitproviderreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/gitproviderreceiver` | #34496 | | `googlespannerreceiver` | `otelcol/googlecloudspannermetrics` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlespannerreceiver` | #34593 | | `grafanacloudconnector` | `otelcol/grafanacloud` | `github.com/open-telemetry/opentelemetry-collector-contrib/connector/grafanacloudconnector` | #34552 | | `groupbyattrsprocessor` | `otelcol/groupbyattrs` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbyattrsprocessor` | #34550 | | `groupbytraceprocessor` | `otelcol/groupbytrace` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/groupbytraceprocessor` | #34550 | | `haproxyreceiver` | `otelcol/haproxyreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/haproxyreceiver` | #34498 | | `hostmetricsreceiver` receiver's scrapers | `otelcol/hostmetricsreceiver/*` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver/internal/scraper/*` | #34526 | | `httpcheckreceiver` | `otelcol/httpcheckreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/httpcheckreceiver` | #34497 | | `iisreceiver` | `otelcol/iisreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/iisreceiver` | #34535 | | `k8sattributesprocessor` | `otelcol/k8sattributes` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/k8sattributesprocessor` | #34550 | | `k8sclusterreceiver` | `otelcol/k8sclusterreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver` | #34536 | | `kafkametricsreceiver` | `otelcol/kafkametricsreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkametricsreceiver` | #34538 | | `kafkareceiver` | `otelcol/kafkareceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver` | #34539 | | `kubeletstatsreceiver` | `otelcol/kubeletstatsreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver` | #34537 | | `memcachedreceiver` | `otelcol/memcachedreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/memcachedreceiver` | #34542 | | `mongodbatlasreceiver` | `otelcol/mongodbatlasreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbatlasreceiver` | #34543 | | `mongodbreceiver` | `otelcol/mongodbreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mongodbreceiver` | #34544 | | `mysqlreceiver` | `otelcol/mysqlreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/mysqlreceiver` | #34545 | | `nginxreceiver` | `otelcol/nginxreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nginxreceiver` | #34493 | | `nsxtreceiver` | `otelcol/nsxtreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/nsxtreceiver` | #34429 | | `oracledbreceiver` | `otelcol/oracledbreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver` | #34491 | | `otelarrowreceiver` | `otelcol/otelarrowreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otelarrowreceiver` | #34546 | | `podmanreceiver` | `otelcol/podmanreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/podmanreceiver` | #34429 | | `postgresqlreceiver` | `otelcol/postgresqlreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/postgresqlreceiver` | #34476 | | `probabilisticsamplerprocessor` | `otelcol/probabilisticsampler` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/probabilisticsamplerprocessor` | #34550 | | `prometheusreceiver` | `otelcol/prometheusreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver` | #34589 | | `rabbitmqreceiver` | `otelcol/rabbitmqreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/rabbitmqreceiver` | #34475 | | `sshcheckreceiver` | `otelcol/sshcheckreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sshcheckreceiver` | #34448 | | `vcenterreceiver` | `otelcol/vcenter` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/vcenterreceiver` | #34449 | | `zookeeperreceiver` | `otelcol/zookeeper` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zookeeperreceiver` | #34450 | | `redisreceiver` | `otelcol/redisreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver` | #34470 | | `riakreceiver` | `otelcol/riakreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/riakreceiver` | #34469 | | `routingprocessor` | `otelcol/routing` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/routingprocessor` | #34550 | | `saphanareceiver` | `otelcol/saphanareceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/saphanareceiver` | #34468 | | `servicegraphconnector` | `otelcol/servicegraph` | `github.com/open-telemetry/opentelemetry-collector-contrib/connector/servicegraphconnector` | #34552 | | `snmpreceiver` | `otelcol/snmpreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/snmpreceiver` | #34592 | | `snowflakereceiver` | `otelcol/snowflakereceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/snowflakereceiver` | #34467 | | `solacereceiver` | `otelcol/solacereceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/solacereceiver` | #34466 | | `splunkenterprisereceiver` | `otelcol/splunkenterprisereceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/splunkenterprisereceiver` | #34452 | | `statsdreceiver` | `otelcol/statsdreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver` | #34547 | | `tailsamplingprocessor` | `otelcol/tailsampling` | `github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor` | #34550 | | `sqlserverreceiver` | `otelcol/sqlserverreceiver` | `github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sqlserverreceiver` | #34451 | - `elasticsearchreceiver`: Enable more index metrics by default (#34396) This enables the following metrics by default: `elasticsearch.index.documents` `elasticsearch.index.operations.merge.current` `elasticsearch.index.segments.count` To preserve previous behavior, update your Elasticsearch receiver configuration to disable these metrics. - `vcenterreceiver`: Enables all of the vSAN metrics by default. (#34409) The following metrics will be enabled by default now: - vcenter.cluster.vsan.throughput - vcenter.cluster.vsan.operations - vcenter.cluster.vsan.latency.avg - vcenter.cluster.vsan.congestions - vcenter.host.vsan.throughput - vcenter.host.vsan.operations - vcenter.host.vsan.latency.avg - vcenter.host.vsan.congestions - vcenter.host.vsan.cache.hit_rate - vcenter.vm.vsan.throughput - vcenter.vm.vsan.operations - vcenter.vm.vsan.latency.avg ### 🚩 Deprecations 🚩 - `exporter/datadog`: Deprecates `logs::dump_payloads` since it is invalid with the Datadog Agent logs pipeline, which will be enabled by default in the v0.108.0 release. (#34490) ### 🚀 New components 🚀 - `logdedupprocessor`: Add new logdedupprocessor processor that deduplicates log entries. (#34118) - `coralogixprocessor`: creating new component for coralogix features (#33090) - `googlecloudmonitoringreceiver`: Adding new component - [Google Cloud monitoring](https://cloud.google.com/monitoring/api/metrics_gcp) receiver to fetch GCP Cloud Metrics and transform to OpenTelemetry compatible format. (#33762) ### 💡 Enhancements 💡 - `awsemfexporter`: AWS EMF Exporter to update ApplicationSignals log group name and namespace, and adjust AWS service name prefix logic in spans (#33798) - `azureeventhubreceiver`: Added traces support in azureeventhubreceiver (#33583) - `exporter/prometheusremotewrite`: Reduce unnecessary memory allocation by removing buffer that was not used by Snappy encoding function. (#34273) - `exporter/prometheusremotewrite`: Reduce memory allocations of prometheus remote write exporter "batchtimeseries" when large batch sizes are used (#34269) - `clickhouseexporter`: Updated the default logs table to a more optimized schema (#34203) Improved partitioning and time range queries. - `bearertokenauthextension`: use constant time comparison. This fixes CVE-2024-42368 (#34516) - `processor/k8sattributes`: Add support for `container.image.repo_digests` metadata (#34029) - `datadogconnector`: Move feature gate `connector.datadogconnector.NativeIngest` to beta (#34549) When this feature gate is enabled (default), the datadog connector uses the new API to produce APM stats under the hood. | The new API has better throughput when your spans have many attributes (especially container related attributes). Functional-wise the new API should have no user-facing change compared to the old API. | However if you observe any unexpected behaviors, you can disable this feature gate to revert to the old stats processing APIs. - `elasticsearchexporter`: Add opt-in support for the experimental `batcher` config (#32377) By enabling (or explicitly disabling) the batcher, the Elasticsearch exporter's existing batching/buffering logic will be disabled, and the batch sender will be used. - `elasticsearchexporter`: Add summary support for metrics (#34560) - `hostmetricsreceiver`: add reporting interval to entity event (#34240) - `elasticsearchreceiver`: Add metric for active index merges (#34387) - `kafkaexporter`: add an ability to partition logs based on resource attributes. (#33229) - `logdedupprocessor`: Adds a histogram metric to record the number of aggregated log records. (#34579) - `logdedupprocessor`: Updates stability level to alpha. (#34575) - `logdedup`: Make the name of the log deduplication component consistent (#34571) - `logdedupprocessor`: Ensures any pending aggregated logs are processed and sent to the next consumer before shutting down. (#34615) - `logdedupprocessor`: Adds a scope aggregator to the logdedup processor enabling the aggregation of logs per scope. (#34606) - `logdedupprocessor`: Simplifies the processor shutdown behaviour by removing the unnecessary done channel. (#34478) - `pkg/ottl`: Add support for map literals in OTTL (#32388) - `pkg/ottl`: Introduce ExtractGrokPatterns converter (#32593) - `pkg/ottl`: Add the `MD5` function to convert the `value` into a MD5 hash/digest (#33792) - `pkg/ottl`: Introduce `sha512` converter to generate SHA-512 hash/digest from given payload. (#34007) - `kafkametricsreceiver`: Add option to configure cluster alias name and add new metrics for kafka topic configurations (#34148) - `receiver/splunkhec`: Add a regex to enforce metrics naming for Splunk events fields based on metrics documentation. (#34275) - `telemetrygen`: Support boolean values in `--telemetry-attributes` and `--otlp-attributes` flag (#18928) - `filelogreceiver`: Check for unsupported fractional seconds directive when converting strptime time layout to native format (#34390) - `windowseventlogreceiver`: Add remote collection support to Stanza operator windows pkg to support remote log collect for the Windows Event Log receiver. (#33100) ### 🧰 Bug fixes 🧰 - `configauth`: Fix unmarshaling of authentication in HTTP servers. (#34325) This brings in a bug fix from the core collector. See https://github.com/open-telemetry/opentelemetry-collector/issues/10750. - `docker_observer`: Change default endpoint for `docker_observer` on Windows to `npipe:////./pipe/docker_engine` (#34358) - `pkg/translator/jaeger`: Change the translation to jaeger spans to match semantic conventions. (#34368) `otel.library.name` is deprecated and replaced by `otel.scope.name` `otel.library.version` is deprecated and replaced by `otel.scope.version` - `pkg/stanza`: Ensure that errors from `Process` and `Write` do not break for loops (#34295) - `cmd/opampsupervisor`: Start even if the OpAMP server cannot be contacted, and continually retry connecting. (#33408, #33799) - `cmd/opampsupervisor`: Write the generated effective config and agent log files to the user-defined storage directory. (#34341) - `azuremonitorreceiver`: Add Azure China as a `cloud` option. (#34315) - `postgresqlreceiver`: Support unix socket based replication by handling null values in the client_addr field (#33107) - `splunkhecexporter`: Copy the bytes to be placed in the request body to avoid corruption on reuse (#34357) This bug is a manifestation of https://github.com/golang/go/issues/51907. Under high load, the pool of buffers used to send requests is reused enough that the same buffer is used concurrently to process data and be sent as request body. The fix is to copy the payload into a new byte array before sending it. - `syslogexporter`: Fix issue where exporter may hang indefinitely while dialing. (#34393) - `clickhouseexporter`: Use observed timestamp if timestamp is zero (#34150) Some OpenTelemetry libraries do not send timestamp for logs, but they should always send | the observed timestamp. In these cases the ClickHouse exporter just stored a zero timestamp | to the database. This changes the behavior to look into the observed timestamp if the timestamp | is zero. - `webhookeventreceiver`: added a timestamp to the logs generated from incoming events. (#33702) ## v0.106.1 ### 🧰 Bug fixes 🧰 - `configauth`: Fix unmarshaling of authentication in HTTP servers. (#34325) This brings in a bug fix from the core collector. See https://github.com/open-telemetry/opentelemetry-collector/issues/10750. ## v0.106.0 ### 🛑 Breaking changes 🛑 - `vcenterreceiver`: Enables various vCenter metrics that were disabled by default until v0.106.0 (#33607) The following metrics will be enabled by default "vcenter.datacenter.cluster.count", "vcenter.datacenter.vm.count", "vcenter.datacenter.datastore.count", "vcenter.datacenter.host.count", "vcenter.datacenter.disk.space", "vcenter.datacenter.cpu.limit", "vcenter.datacenter.memory.limit", "vcenter.resource_pool.memory.swapped", "vcenter.resource_pool.memory.ballooned", and "vcenter.resource_pool.memory.granted". The "resourcePoolMemoryUsageAttribute" has also been bumped up to release v.0.107.0 - `googlemanagedprometheusexporter`: Fix typo in `exporter.googlemanagedpromethues.intToDouble` feature gate (#34232) ### 🚩 Deprecations 🚩 - `k8sattributesprocessor`: Deprecate `extract.annotations.regex` and `extract.labels.regex` config fields in favor of the `ExtractPatterns` function in the transform processor. The `FieldExtractConfig.Regex` parameter will be removed in version v0.111.0. (#25128) Deprecating of FieldExtractConfig.Regex parameter means that it is recommended to use the `ExtractPatterns` function from the transform processor instead. To convert your current configuration please check the `ExtractPatterns` function [documentation](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/ottlfuncs#extractpatterns). You should use the `pattern` parameter of `ExtractPatterns` instead of using the `FieldExtractConfig.Regex` parameter. ### 🚀 New components 🚀 - `otlpjsonconnector`: New component that will allow extracting otlpjson data from incoming Logs. (#34239, #34208) - `redis_storage`: Adds a new storage extension using Redis to store data in transit (#31682) ### 💡 Enhancements 💡 - `processor/transform`: Add `scale_metric` function that scales all data points in a metric. (#16214) - `vcenterreceiver`: Adds vCenter vSAN host metrics. (#33556) Introduces the following vSAN host metrics to the vCenter receiver: - vcenter.host.vsan.throughput - vcenter.host.vsan.iops - vcenter.host.vsan.congestions - vcenter.host.vsan.cache.hit_rate - vcenter.host.vsan.latency.avg - `transformprocessor`: Support aggregating metrics based on their attributes. (#16224) - `metricstransformprocessor`: Adds the 'median' aggregation type to the Metrics Transform Processor. Also uses the refactored aggregation business logic from internal/core package. (#16224) - `telemetrygen`: uses the go logging SDK instead of pdata (#18902) - `elasticsearchexporter`: Add explicit bounds histogram support to metrics (#34045) - `hostmetricsreceiver`: allow configuring log pipeline to send host EntityState event (#33927) - `elasticsearchexporter`: Introduce an experimental OTel native mapping mode for logs (#33290) - `extension/healthcheckv2`: Add extension/subcomponent management logic. (#26661) - `otlpjsonconnector`: Add connector's implementations (#34249, #34208) - `windowsperfcountersreceiver`: Improve handling of non-existing instances for Windows Performance Counters (#33815) It is an expected that when querying Windows Performance Counters the targeted instances may not be present. The receiver will no longer require the use of `recreate_query` to handle non-existing instances. As soon as the instances are available, the receiver will start collecting metrics for them. There won't be warning log messages when there are no matches for the configured instances. - `kafkareceiver`: Add settings session_timeout and heartbeat_interval to Kafka Receiver for group management facilities (#28630) - `otelarrowreceiver, otelarrowexporter`: OTel-Arrow internal packages moved into this repository. (#33567) New integration testing between otelarrowexporter and otelarrowreceiver. - `otlpjsonconnector`: Move connector's stability to alpha. (#34208, #34253) - `pkg/ottl`: Adds an `Format` function to OTTL that calls `fmt.Sprintf` (#33405) - `vcenterreceiver`: Adds a number of default disabled vSAN metrics for Clusters. (#33556) - `vcenterreceiver`: Adds a number of default disabled vSAN metrics for Virtual Machines. (#33556) ### 🧰 Bug fixes 🧰 - `clickhouseexporter`: Increase the default number of queue consumers to 10 (#34176) - `opencensusreceiver`: Do not report an error into resource status during receiver shutdown when the listener connection was closed. (#33865) - `datadogconnector`: Produce stats for non-root client and producer spans when `connector.datadogconnector.NativeIngest` and `compute_top_level_by_span_kind` are enabled (#34197) You should have only run into this bug when ALL the conditions below are met | 1. feature gate `connector.datadogconnector.NativeIngest` is enabled | 2. config `compute_top_level_by_span_kind` is set to true | 3. config `compute_stats_by_span_kind` is unset or set to false | 4. you have child spans with client or producer span kind - `datadogconnector`: Respect `_dd.measured` when `connector.datadogconnector.NativeIngest` is enabled (#34197) Spans with attribute `_dd.measured` set to 1 will always get Datadog APM stats - `deltatocumulativeprocessor`: fix bucket counts when downscaling exp histograms with odd offsets (#33831) - `otelarrowreceiver`: Fix potential goroutine leak when in stream-shutdown. (#34236) - `otelarrowreceiver`: Eliminate one spurious span error. (#34175) - `pkg/ottl`: Handle JSON array provided to ParseJSON function (#33535) - `exporter/datadog`: Fixes a bug where `otelcol_exporter_sent_log_records` was reporting double as many logs sent when using the logs agent feature gate. (#33887) - `statsdeceiver`: Log only non-EOF errors when reading payload received via TCP. (#33951) - `vcenterreceiver`: Adds destroys to the ContainerViews in the client. (#34254) This may not be necessary, but it should be better practice than not. ## v0.105.0 ### 🛑 Breaking changes 🛑 - `skywalkingexporter`: Remove unmaintained component (#23796) - `elasticsearchexporter`: Make "dedup" option no-op, always de-duplicate. (#33773) Elasticsearch does not permit duplicate keys in JSON objects, so there is no value in being able to configure deduplication. - `elasticsearchexporter`: Remove defunct "file" and "fields" configuration settings. (#33803) This is a breaking change only because removing the attributes would prevent collector startup if those attributes are specified, but otherwise there is no functional change. These configuration attributes have never done anything. - `stanza`: errors from Operator.Process are returned instead of silently ignored. (#33783) This public function is affected: https://pkg.go.dev/github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza@v0.104.0/operator/helper#WriterOperator.Write - `vcenterreceiver`: Enables various vCenter metrics that were disabled by default until v0.105 (#34022) The following metrics will be enabled by default "vcenter.host.network.packet.drop.rate", "vcenter.vm.cpu.readiness", "vcenter.host.cpu.capacity", and "vcenter.host.cpu.reserved". ### 🚩 Deprecations 🚩 - `lokiexporter`: Deprecate component (#33916) ### 🚀 New components 🚀 - `sumconnector`: creates a wireframe and initial pr to develop from (#32669) - `extensions/observer/cfgardenobserver`: Add a new observer that discovers containers through the Garden API (#33618) ### 💡 Enhancements 💡 - `pkg/ottl`: Added Hex() converter function (#31929) - `pkg/ottl`: Add IsRootSpan() converter function. (#32918) Converter `IsRootSpan()` returns `true` if the span in the corresponding context is root, that means its `parent_span_id` equals the hexadecimal representation of zero. In all other scenarios function returns `false`. - `vcenterreceiver`: Adds additional vCenter resource pool metrics and a memory_usage_type attribute for vcenter.resource_pool.memory.usage metric to use. (#33607) Added "vcenter.resource_pool.memory.swapped", "vcenter.resource_pool.memory.ballooned", and "vcenter.resource_pool.memory.granted" metrics. Also added an additional attribute, "memory_usage_type" for "vcenter.resource_pool.memory.usage" metric, which is currently under a feature gate. - `kubeletstatsreceiver`: Add `k8s.pod.memory.node.utilization` and `k8s.container.memory.node.utilization` metrics (#33591) - `vcenterreceiver`: Adds vCenter metrics at the datacenter level. (#33607) Introduces various datacenter metrics which work by aggregating stats from datastores, clusters, hosts, and VM's. - `processor/resource, processor/attributes`: Add an option to extract value from a client address by specifying `client.address` value in the `from_context` field. (#34051) - `awss3receiver`: Add support for retrieving logs and metrics to the AWS S3 Receiver. (#30750) - `receiver/azuremonitorreceiver`: Add support for Managed Identity and Default Credential auth (#31268, #33584) - `azuremonitorreceiver`: Add `maximum_number_of_records_per_resource` config parameter in order to overwrite default (#32165) - `clickhouseexporter`: Upgrading stability for logs to beta (#33615) The logs exporter has been proven to be stable for large scale production deployments. Configuration options specific to logs are unlikely to change. - `cloudfoundryreceiver`: Add support to receive CloudFoundry Logs (#32671) - `datadogreceiver`: Add support for metrics in Datadog receiver (#18278) - `datadogexporter`: Add a feature gate `exporter.datadogexporter.TraceExportUseCustomHTTPClient` that allows a custom HTTP client to be used in trace export (#34025) This is an experimental feature. By default the feature gate is disabled and trace export uses a default HTTP client. - `elasticsearchexporter`: Introduce experimental `telemetry.log_request_body` and `telemetry.log_response_body` config (#33854) - `cmd/opampsupervisor`: Adds support for forwarding custom messages to/from the agent (#33575) - `geoipprocessor`: Add providers configuration and maxmind provider factory (#33269) - `healthcheckv2extension`: Add partial gRPC service implementation to healthcheckv2. (#26661) - `healthcheckv2extension`: Add support for streaming Watch RPC to healthcheckv2 gRPC service. (#26661) - `healthcheckv2extension`: Add HTTP service to healthcheckv2 (#26661) - `splunkhecexporter`: Increase the performance of JSON marshaling (#34011) - `pkg/stanza`: Add `parse_ints` config in json parser to support parsing int or float properly (#33696) - `loadbalancingexporter`: Adds a new streamID routingKey, which will route based on the datapoint ID. See updated README for details (#32513) - `awsxrayexporter`: Allow multiple log group names/arns to be set in environmental variables (#33795) - `dockerobserver`: Add hint to error when using float for `api_version` field (#34043) - `dockerstatsreceiver`: Add hint to error when using float for `api_version` field (#34043) - `pkg/ottl`: Emit traces for statement sequence executions to troubleshoot OTTL statements/conditions (#33433) - `pkg/stanza`: Bump 'logs.jsonParserArray' and 'logs.assignKeys' feature gates to beta. (#33948) This enables the feature gates by default to allow use of the `json_array_parser` and `assign_keys` operations. - `receiver/filelog`: Add filelog.container.removeOriginalTimeField feature-flag for removing original time field (#33946) - `statsdreceiver`: Allow configuring summary percentiles (#33701) - `pkg/stanza`: Switch to faster json parser lib for container operator (#33929) - `telemetrygen`: telemetrygen `--rate` flag changed from Int64 to Float64 (#33984) - `extension/opamp`: Rely on the Collector APIs to do config redaction (#34078) Previously all config fields had to be redacted, now `configopaque.String` is used to determine which fields should be redacted. As a result, fields that are not sensitive are no longer redacted. - `azuremonitorreceiver`: Upgrade stability to alpha (#33689) - `windowsperfcountersreceiver`: `windowsperfcountersreceiver` now appends an index number to additional instance names that share a name. An example of this is when scraping `\Process(*)` counters with multiple running instances of the same executable. (#32319) **NOTES** - This change can expose cardinality issues where the counters were previously collapsed under the non-indexed instance name. - The change mimics Windows Performance Monitor behavior: The first instance name remains unchanged, additional instances are suffixed with `#` where `N=1` and is increased for each duplicate. - e.g. Given 3 powershell instances, this will return `powershell`, `powershell#1` and `powershell#2`. ### 🧰 Bug fixes 🧰 - `servicegraphconnector`: Fix failed label does not work leads to servicegraph metrics error (#32018) - `apachesparkreceiver`: Updating the stability to reflect that the component is shipped as part of contrib. (#33906) - `azureblobreceiver`: Updating the stability to reflect that the component is shipped as part of contrib. (#33902) - `countconnector`: Updating the stability to reflect that the component is shipped as part of contrib. (#33903) - `deltatorateprocessor`: Updating the stability to reflect that the component is shipped as part of contrib. (#33904) - `httpcheckreceiver`: Updating the stability to reflect that the component is shipped as part of contrib. (#33897) - `metricsgenerationprocessor`: Updating the stability to reflect that the component is shipped as part of contrib. (#33905) - `podmanreceiver`: Updating the stability to reflect that the component is shipped as part of contrib. (#33899) - `purefareceiver`: Updating the stability to reflect that the component is shipped as part of contrib. (#33901) - `purefbreceiver`: Updating the stability to reflect that the component is shipped as part of contrib. (#33900) - `zookeeperreceiver`: Updating the stability to reflect that the component is shipped as part of contrib. (#33898) - `probabilisticsamplerprocessor`: Fix bug where log sampling was being reported by the counter `otelcol_processor_probabilistic_sampler_count_traces_sampled` (#33874) - `cmd/telemetrygen`: Fix `make docker-telemetrygen` command. (#33989) - `processor/groupbyattrsprocessor`: Fix dropping of metadata fields when processing metrics. (#33419) - `testbed`: Fixes incorrect count for sent data items in load generator. (#34057) - `prometheusreceiver`: Fix hash computation to include non exported fields like regex in scrape configuration for TargetAllocator (#29313) - `datadogexporter`: Exit when API key validation fails and `api::fail_on_invalid_key` is set to `true`. (#33935) - `kafkametricsreceiver`: Fix issue with incorrect consumer offset (#33309) - `sqlserverreceiver`: Enable default metrics to properly trigger SQL Server scrape (#34065) - `syslogreceiver`: Allow to define `max_octets` for octet counting RFC5424 syslog parser (#33182) - `windowsperfcountersreceiver`: Metric definitions with no matching performance counter are no longer included as metrics with zero datapoints in the scrape output. (#4972) ## v0.104.0 ### 🛑 Breaking changes 🛑 - `sumologicexporter`: removed compress_encoding (#33604) - `exporter/clickhouse`: Change behavior of how default database is read from the config (#33693) Changed the default `database` to `default`. The final database will prioritize `endpoint`, unless `database` is set to a value not equal to `default`. If neither are specified then it defaults to the `default` database. Possible breaking change if someone has the DSN configured in combination with `database` config option. - `exporter/clickhouse`: Add `async_insert` config option to enable inserting asynchronously by default. (#33614) Adds `async_insert` config option to enable inserting asynchronously by default. To preserve the previous behavior, set `async_insert` to `false` in your config. When enabled, the exporter will insert asynchronously, which can improve performance for high-throughput deployments. The `async_insert` option can be set to `true` or `false` to enable or disable async inserts, respectively. The default value is `true`. Keep in mind this setting is added since the exporter now sets it to default. Async insert and its related settings can still be defined in `endpoint` and `connection_params`, which take priority over the new config option. - `clickhouseexporter`: Add `AggregationTemporality` column to histogram and exponential histogram tables. Rename `AggTemp` column to `AggregationTemporality` in sum table. (#33424) It's a breaking change. users who upgrade to the latest version need to alter the Clickhouse table: ```sql ALTER TABLE otel_metrics_exponential_histogram ADD COLUMN AggregationTemporality Int32 CODEC(ZSTD(1)); ALTER TABLE otel_metrics_histogram ADD COLUMN AggregationTemporality Int32 CODEC(ZSTD(1)); ALTER TABLE otel_metrics_sum RENAME COLUMN AggTemp TO AggregationTemporality; ``` - `exporter/clickhouse`: Remove deprecated `ttl_days` config option, use `ttl` instead. (#33648) - `vcenterreceiver`: Drops support for vCenter 6.7 (#33607) - `all`: Promote `component.UseLocalHostAsDefaultHost` feature gate to beta. This changes default endpoints from 0.0.0.0 to localhost (#30702) This change affects the following components: - extension/awsproxy - extension/health_check - extension/health_checkv2 - extension/jaegerremotesampling - internal/aws/proxy - processor/remotetap - receiver/awsfirehose - receiver/awsxray - receiver/influxdb - receiver/jaeger - receiver/loki - receiver/opencensus - receiver/sapm - receiver/signalfx - receiver/skywalking - receiver/splunk_hec - receiver/zipkin - receiver/zookeeper - `receiver/mongodb`: Graduate receiver.mongodb.removeDatabaseAttr feature gate to stable (#24972) ### 🚩 Deprecations 🚩 - `exporter/elasticsearch`: Deprecate the "dedot" configuration. (#33772) dedot has been deprecated, and will always be enabled in ECS mode and disabled for other modes in future - `exporter/elasticsearch`: Deprecate the "dedup" configuration. (#33773) dedup has been deprecated, and will always be enabled in future. ### 🚀 New components 🚀 - `otelarrow`: OTel-Arrow exporter and receiver are marked alpha, added to otelcontribcol (#26491) ### 💡 Enhancements 💡 - `exporter/elasticsearch`: Add initial support for metrics (#33513) - `elasticsearchexporter`: Add translation for k8s.deployment.name resource attribute (#33622) - `k8sattributesprocessor`: Add support for exposing `k8s.pod.ip` as a resource attribute (#32960) - `geoipprocessor`: Add MaxMind geoip provider for GeoIP2-City and GeoLite2-City databases. (#32663) - `vcenterreceiver`: Adds vCenter CPU readiness metric for VMs. (#33607) - `awsemfexporter`: AWS EMF Exporter to add AppSignals metadata flag into the user-agent (#32998) - `receiver/mongodb`: Ensure support of 6.0 and 7.0 MongoDB versions with integration tests (#32716) - `sumologicexporter`: added timeout validation (#33151) - `clickhouseexporter`: Updated the default logs table to a more optimized schema (#33611) Simplified data types, improved partitioning and time range queries. - `datadogconnector`: Add a feature gate `connector.datadogconnector.NativeIngest` that enables datadog connector to use the new native OTel API in APM stats computation. (#33297) The feature gate `connector.datadogconnector.NativeIngest` is disabled by default. - `datadogexporter`: Adds Kubernetes DD tags to keep when mapping resource attributes (#33728) See https://github.com/DataDog/opentelemetry-mapping-go/pull/334 for details. - `exporter/elasticsearch`: Add data stream routing (#33794, #33756) `data_stream.dataset` and `data_stream.namespace` in attributes will be respected when config `*_dynamic_index.enabled` is true. - `exporter/elasticsearch`: Encode metrics resource attributes in ECS mapping mode (#33823) - `elasticsearchexporter`: Preserve `host.name` resource attribute in ECS mode (#33670) - `servicegraphprocessor`: Added a new configuration option `enable_virtual_node_label` to allow users to identify which node is the virtual node in each edge of the service graph. (#31889) - `pkg/stanza`: Switch JSON parser used by json_parser to github.com/goccy/go-json (#33784) - `k8sobserver`: Add support for k8s.ingress endpoint. (#32971) - `statsdreceiver`: Optimize statsdreceiver to reduce object allocations (#33683) - `routingprocessor`: Use mdatagen to define the component's telemetry (#33526) - `loadbalancerexporter`: Refactors how the load balancing exporter splits metrics (#32513) All splitting is *behaviorally*, the same. However, the `resource` routingID now uses the `internal/exp/metrics/identity` package to generate the load balancing key, instead of bespoke code. This means that when upgrading to this version your routes for specific metric groupings could change. However, this will be stable and all future metrics will follow the new routing - `receiver/mongodbreceiver`: Add `server.address` and `server.port` resource attributes to MongoDB receiver. (#32810, #32350) The new resource attributes are added to the MongoDB receiver to distinguish metrics coming from different MongoDB instances. - `server.address`: The address of the MongoDB host, enabled by default. - `server.port`: The port of the MongoDB host, disabled by default. - `observerextension`: Expose host and port in endpoint's environment (#33571) - `rabbitmqexporter`: Promote rabbitmqexporter to alpha. (#33331) - `pkg/ottl`: Add a `schema_url` field to access the SchemaURL in resources and scopes on all signals (#30229) - `solacereceiver`: Renamed some SemConv fields to support latest semantic conventions for messaging spans (version `1.25.0`) (#33499) - `sqlserverreceiver`: Enable more perf counter metrics when directly connecting to SQL Server (#33420) This enables the following metrics by default on non Windows-based systems: `sqlserver.batch.request.rate` `sqlserver.batch.sql_compilation.rate` `sqlserver.batch.sql_recompilation.rate` `sqlserver.page.buffer_cache.hit_ratio` `sqlserver.user.connection.count` - `extension/googleclientauth`: Add Google-signed ID token support (#33185) Update github.com/GoogleCloudPlatform/opentelemetry-operations-go/extension/googleclientauth to v0.48.0. With this update, extension/googleclientauth now supports Google-signed ID token as auth header. - `vcenterreceiver`: Adds vCenter CPU capacity and network drop rate metrics to hosts. (#33607) ### 🧰 Bug fixes 🧰 - `resourcedetectionprocessor`: Fetch CPU info only if related attributes are enabled (#33774) - `datasetexporter`: Upgrade dataset-go to v0.19.0 and fix found issues (#33498, #32533, #33675) Upgrade `dataset-go` library from v0.18.0 to v0.19.0. Enable skipped integration test and adjust the test so it is passing again. Do not validate configuration, let the framework run the validation. - `datasetexporter`: Upgrade dataset-go to v0.20.0 (#33812) Upgrade `dataset-go` library from v0.19.0 to v0.20.0. Make number of outgoing connections configurable. - `datadogexporter`: Fix panics on invalid sized trace & span IDs (#33566) See https://github.com/DataDog/opentelemetry-mapping-go/pull/340 for details. - `datadogexporter`: Ignore metric datapoints with `no recorded value` flag (#33728) This flag is not supported by Datadog, so we just ignore these datapoints. See https://github.com/DataDog/opentelemetry-mapping-go/pull/330 for details. - `tailsamplingprocessor`: Fix precedence of inverted match in and policy (#33671) Previously if the decision from a policy evaluation was `NotSampled` or `InvertNotSampled` it would return a `NotSampled` decision regardless, effectively downgrading the result. This was breaking the documented behaviour that inverted decisions should take precedence over all others. - `otelarrowreceiver`: Ensure consume operations are not canceled at stream EOF. (#33570) - `vcenterreceiver`: Fixes errors in some of the client calls for environments containing multiple datacenters. (#33734) ## v0.103.0 ### 🛑 Breaking changes 🛑 - `cmd/opampsupervisor,extension/opamp`: Upgrade the opamp-go library to v0.15.0 (#33416) With this change, UUIDv7 is recommended for the OpAMP extension's instance_uid field instead of ULID. ULIDs will continue to work, but may be displayed as UUIDs. The supervisor's persistent state (${storage_dir}/persistent_state.yaml) will need to be cleared to generate a new UUIDv7 instead of a ULID. This change may be incompatible with management servers using v0.14.0 of opamp-go. - `mongodbreceiver`: Now only supports `TCP` connections (#32199) This fixes a bug where hosts had to explicitly set `tcp` as the transport type. The `transport` option has been removed. - `cmd/configschema`: Removes the deprecated `configschema` command. This command will no longer be released or supported. (#33384) - `sqlserverreceiver`: sqlserver.database.io.read_latency has been renamed to sqlserver.database.latency with a `direction` attribute. (#29865) ### 🚩 Deprecations 🚩 - `healthcheckextension`: Remove incorrect logic behind `check_collector_pipeline` config (#33469) This logic incorrectly set the pipeline to OK after waiting for enough callbacks from the opencensus library to be called. As this was broken, I'm removing it to remove the dependency on opencensus as well. Improvements will be available via healthcheckv2 extension. - `googlecloudspannerreceiver`: Mark the component as unmaintained. If we don't find new maintainers, it will be deprecated and removed. (#32651) ### 💡 Enhancements 💡 - `filelogreceiver`: If include_file_record_number is true, it will add the file record number as the attribute `log.file.record_number` (#33530) - `kubeletstats`: Add k8s.pod.cpu.node.utilization metric (#33390) - `awss3exporter`: endpoint should contain the S3 bucket (#32774) - `awss3receiver`: Add support for encoding extensions to be used in the AWS S3 Receiver. (#30750) - `gitproviderreceiver`: Adds branch commit and line based metrics (#22028) Adds the following branch based metrics. * git.repository.branch.time * git.repository.branch.commit.aheadby.count * git.repository.branch.commit.behindby.count * git.repository.branch.line.deletion.count * git.repository.branch.line.addition.count - `statsdreceiver`: update statsd receiver to use mdatagen (#33524) - `coralogixexporter`: Allow setting application name from `cx.application.name` and `cx.subsystem.name` resource attributes (#33217) - `metricstransformprocessor`: Adds the 'count' aggregation type to the Metrics Transform Processor. (#24978) - `elasticsearchexporter`: Add support for confighttp options, notably "auth". (#33367) Add support for confighttp and related configuration settings, such as "auth". This change also means that the Elasticsearch URL may be specified as "endpoint", like the otlphttp exporter. - `elasticsearchexporter`: Check that endpoints are valid URLs during config validation. (#33350) Check that endpoints are valid URLs during config validation so that an invalid endpoint causes a fatal error during startup, rather than leading to a persistent runtime error. - `opampsupervisor`: Add config validation for the supervisor config (#32843) - `statsdreceiver`: Added received/accepted/refused metrics (#24278) - `filelogreceiver`: Add support for gzip compressed log files (#2328) - `confmap/provider/secretsmanagerprovider`: Add support for JSON formatted secrets in secretsmanagerprovider confmap (#32143) The `secretsmanagerprovider` confmap will now allow to get secret by a json key if the secret value is json. To specify key separate key from secret name/arn by `#` e.g. `mySecret#mySecretKey`. - `geoipprocessor`: Add initial processing based on source.address resource attribute (#32663) - `healthcheckv2extension`: Add shared aggregation logic for status events. (#26661) - `tailsamplingprocessor`: Simple LRU Decision Cache for "keep" decisions (#31583) - `processor/tailsampling`: Migrates internal telemetry to OpenTelemetry SDK via mdatagen (#31581) The metric names and their properties, such as bucket boundaries for histograms, were kept like before, to keep backwards compatibility. - `kafka`: Added `disable_fast_negotiation` configuration option for Kafka Kerberos authentication, allowing the disabling of PA-FX-FAST negotiation. (#26345) - `pkg/ottl`: Added `keep_matching_keys` function to allow dropping all keys from a map that don't match the pattern. (#32989) - `OTel-Arrow`: Update to OTel-Arrow v0.24.0 (#26491) - `pkg/ottl`: Add debug logs to help troubleshoot OTTL statements/conditions (#33274) - `pkg/ottl`: Introducing `append` function for appending items into an existing array (#32141) - `pkg/ottl`: Introducing `URI` converter parsing URI string into SemConv (#32433) - `probabilisticsamplerprocessor`: Add Proportional and Equalizing sampling modes (#31918) Both the existing hash_seed mode and the two new modes use OTEP 235 semantic conventions to encode sampling probability. - `prometheusreceiver`: Resource attributes produced by the prometheus receiver now include stable semantic conventions for `server` and `url`. (#32814) To migrate from the legacy net.host.name, net.host.port, and http.scheme resource attributes, | migrate to server.address, server.port, and url.scheme, and then | set the receiver.prometheus.removeLegacyResourceAttributes feature gate. - `datadogexporter`: The Datadog Exporter now supports the `proxy_url` parameter to configure an HTTP proxy to use when sending telemetry to Datadog. (#33316) - `spanmetrics`: Produce delta temporality span metrics with StartTimeUnixNano and TimeUnixNano values representing an uninterrupted series (#31671, #30688) This allows producing delta span metrics instead of the more memory-intensive cumulative metrics, specifically when a downstream component can convert the delta metrics to cumulative. - `sqlserverreceiver`: Add support for more Database IO metrics (#29865) The following metrics have been added: - sqlserver.database.latency - sqlserver.database.io - sqlserver.database.operations - `cmd/opampsupervisor`: Receive and report effective config to the OpAMP server (#30622) - `processor/transform`: Add `transform.flatten.logs` featuregate to give each log record a distinct resource and scope. (#32080) This option is useful when applying transformations which alter the resource or scope. e.g. `set(resource.attributes["to"], attributes["from"])`, which may otherwise result in unexpected behavior. Using this option typically incurs a performance penalty as the processor must compute many hashes and create copies of resource and scope information for every log record. - `receiver/windowsperfcounters`: Counter configuration now supports recreating the underlying performance query at scrape time. (#32798) ### 🧰 Bug fixes 🧰 - `filelogreceiver`: Container parser should add k8s metadata as resource attributes and not as log record attributes (#33341) - `deltatocumulative`: properly drop samples when at limit (#33285) fixes a segfault in the limiting behavior, where streams exceeding the limit still had their samples processed. due to not being tracked, this led to a nil-pointer deref - `postgresqlreceiver`: Fix bug where `postgresql.rows` always returning 0 for `state="dead"` (#33489) - `prometheusreceiver`: Fall back to scrape config job/instance labels for aggregated metrics without instance/job labels (#32555) - `elasticsearchexporter`: Duplicate Key in JSON (#33454) - `logzioexporter`: Fix issue where log attributes were not correctly exported (#33231) - `exporter/datadog`: Prevents collector shut down when Datadog logs pipeline fails to validate API key (#33195) ## v0.102.0 ### 🛑 Breaking changes 🛑 - `k8sattributesprocessor`: Move `k8sattr.rfc3339` feature gate to stable. (#33304) - `extension/opamp`: Redact all values in the effective config (#33267) All values will be treated as if they are a `configopaque.String` type. This will be changed once the Collector APIs are updated to unmarshal the config while only redacting actual `configopaque.String`-typed values. The exception to redaction is the `service::pipelines` section, which is useful for debugging and does not contain any `configopaque.String` values. - `extension/filestorage`: Replace path-unsafe characters in component names (#3148) The feature gate `extension.filestorage.replaceUnsafeCharacters` is now removed. - `vcenterreceiver`: vcenterreceiver replaces deprecated packet metrics by removing them and enabling by default the newer ones. (#32929, #32835) Removes the following metrics: `vcenter.host.network.packet.errors`, `vcenter.host.network.packet.count`, and `vcenter.vm.network.packet.count`. Also enables by default the following metrics: `vcenter.host.network.packet.error.rate`, `vcenter.host.network.packet.rate`, and `vcenter.vm.network.packet.rate`. ### 🚀 New components 🚀 - `geoipprocessor`: introduce the GeoIP processor (#32663) ### 💡 Enhancements 💡 - `pkg/ottl`: Add the `Day` Converter to extract the int Day component from a time.Time (#33106) - `pkg/ottl`: Adds `Month` converter to extract the int Month component from a time.Time (#33106) - `cmd/telemetrygen`: Add support for adding spanID and traceID as exemplars to datapoints generated by telemetrygen (#33320) - `cmd/telemetrygen`: Add support for specifying trace ID and span ID in telemetrygen for logs (#33234) - `pkg/ottl`: Adds a `Year` converter for extracting the int year component from a time.Time (#33106) - `filelogreceiver`: Log when files are rotated/moved/truncated (#33237) - `stanza`: Add monitoring metrics for open and harvested files in fileconsumer (#31256) - `awss3receiver`: Uses obsreport to report metrics for the AWS S3 Receiver. (#30750) - `awsxrayexporter`: AWS X-Ray exporter to make local root spans a segment for internal/service spans and subsegment + segment for client/producer/consumer spans. (#33000) - `prometheusreceiver`: Allow to configure http client used by target allocator generated scrape targets (#18054) - `clickhouseexporter`: Add `create_schema` option to ClickHouse exporter (#32282) The new create_schema option allows disabling default DDL to let the user manage their own schema. - `pkg/stanza`: Expose recombine max log size option in the container parser configuration (#33186) - `sumologicexporter`: add support for tracing (#32315) - `exceptionsconnector`: Add support for exemplars in exceptionsconnector (#24409) - `processor/resourcedetectionprocessor`: Add support for Azure tags in ResourceDetectionProcessor. (#32953) - `solarwindsapmsettingsextension`: Added the first part of concrete implementation of solarwindsapmsettingsextension (#27668) - `kubeletstatsreceiver`: Add k8s.container.cpu.node.utilization metric (#27885) - `pkg/ottl`: Adds a `Minute` converter for extracting the int minute component from a time.Time (#33106) ### 🧰 Bug fixes 🧰 - `podmanreceiver`: add scraper's shutdown method (#29994) - `awsxrayexporter`: Fix the DB subsegment(client span) name with JDBC conn string starts with "jdbc:" (#33225) - `exp/metrics`: fixes staleness.Evict such that it only ever evicts actually stale metrics (#33265) - `receiver/mysql`: Remove the order by clause for the column that does not exist (#33271) - `influxdb(exporter|receiver)`: remove Metric flags field to/from InfluxDB conversion (#29896) - `kafkareceiver`: Fix bug that was blocking shutdown (#30789) - `exporter/datadog`: Fixes a potential race condition when the traces exporter and metrics exporter are both shutting down. (#33291) ## v0.101.0 ### 🛑 Breaking changes 🛑 - `sumologicexporter`: change logs behavior (#31479) * set OTLP as default format * add support for OTLP format * do not support metadata attributes * do not support source headers - `sumologicexporter`: change metrics behavior (#31479) * remove support for carbon2 and graphite * add support for otlp format * do not support metadata attributes * do not support source headers * set otlp as default metrics format - `sumologicexporter`: remove deprecated configuration options (#32315) migration has been described in the following document https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.100.0/exporter/sumologicexporter#migration-to-new-architecture - `remotetapprocessor`: Make the `limit` configuration work properly. (#32385) The `limit` configuration was ignored previously, but now it works according to the configuration and documentation. Nothing is required of users. See the remotetapprocessor's `README.md` for details. - `groupbytraceprocessor`: Fix groupbytrace metrics contain duplicate prefix (#32698) - `vcenterreceiver`: Removes `vcenter.cluster.name` attribute from `vcenter.datastore` metrics (#32674) If there were multiple Clusters, Datastore metrics were being repeated under Resources differentiated with a `vcenter.cluster.name` resource attribute. In the same vein, if there were standalone Hosts, in addition to clusters the metrics would be repeated under a Resource without the `vcenter.cluster.name` attribute. Now there will only be a single set of metrics for one Datastore (as there should be, as Datastores don't belong to Clusters). - `resourcedetectionprocessor`: Move `processor.resourcedetection.hostCPUModelAndFamilyAsString` feature gate to stable. (#29025) - `filelog, journald, tcp, udp, syslog, windowseventlog receivers`: The internal logger has been changed from zap.SugaredLogger to zap.Logger. (#32177) This should not have any meaningful impact on most users but the logging format for some logs may have changed. - `awsxrayexporter`: change x-ray exporter's translator to make "." split annotation pass as-is (#32694, #31732) This change make below change to beta stage for feature gate 'exporter.xray.allowDot',this change will let the change mention below enable by default | In the past, X-Ray doesn’t support “.”. So we have a translator in x-ray export to translates it to “_” before sending traces to X-Ray Service. | To match otel naming style, x-ray service team decide to change their service to support both "." type and "" type of naming. In this case the translator that translate "." to "" is no-longer needed. This PR change the way this translator work | X-Ray PMs agree on rolling out this change by using feature-gate ### 🚀 New components 🚀 - `awss3receiver`: Initial implementation of the AWS S3 receiver. (#30750) - `receiver/mysql`: Adds INFORMATION_SCHEMA TABLES metrics (#32693) This adds table size metrics using the INFORMATION_SCHEMA TABLES table: https://dev.mysql.com/doc/refman/8.3/en/information-schema-tables-table.html. Specifically, we are adding the columns: `TABLE_ROWS`, `AVG_ROW_LENGTH`, `DATA_LENGTH`, `INDEX_LENGTH`. - `exporter/otelarrow`: Implementation copied from opentelemetry/otel-arrow repository @v0.23.0. (#26491) ### 💡 Enhancements 💡 - `filelogreceiver`: Add container operator parser (#31959) - `jsonlogencodingextension`: Move jsonlogencodingextension to alpha (#32697) - `exceptionsconnector`: Make span name a default dimension for output metrics and log records. (#32162) - `azureblobreceiver`: Support service principal authentication for Blob storage (#32705) - `deltatocumulativeprocessor`: exponential histogram accumulation (#31340) accumulates exponential histogram datapoints by adding respective bucket counts. also handles downscaling, changing zero-counts, offset adaptions and optional fields - `sumologicexporter`: add sticky session support (#32315) - `elasticsearchexporter`: Replace go-elasticsearch BulkIndexer with go-docappender (#32378) Replace go-elasticsearch BulkIndexer with go-docappender bulk indexer, in preparation for future reliability fixes. As a result of this change, there are minor behavioral differences: - flush timeout is now enforced on client side - oversize payload special handling is now removed - go-docappender uses bulk request filterPath which means bulk response is smaller, less JSON parsing and lower CPU usage - document level retry debug logging is removed as retries are done transparently - `elasticsearchexporter`: Converts more SemConv fields in OTel events to ECS fields in Elasticsearch documents when `mapping.mode: ecs` is specified. (#31694) - `extension/storage/filestorage`: New flag cleanup_on_start for the compaction section (default=false). (#32863) It will remove all temporary files in the compaction directory (those which start with `tempdb`), temp files will be left if a previous run of the process is killed while compacting. - `opampsupervisor`: Allows the supervisor to persist its instance ID between restarts. (#21073) - `opampsupervisor`: Adds the ability to configure the agent description (#32824) - `vcenterreceiver`: Refactors how and when client makes calls in order to provide for faster collection times. (#31837) - `resourcedetectionprocessor`: Support GCP Bare Metal Solution in resource detection processor. (#32985) - `splunkhecreceiver`: Make the channelID header check case-insensitive and allow hecreceiver endpoints able to extract channelID from query params (#32995) - `processor/transform`: Allow common where clause (#27830) - `loadbalancingexporter`: Improve the performance when merging traces belonging to the same backend (#32032) - `pkg/ottl`: Added support for timezone in Time converter (#32140) - `jsonlogencodingextension`: Adds a new encoding option for JSON log encoding extension to grab attributes and resources from a log and output that in JSON format. (#32679) - `probabilisticsamplerprocessor`: Adds the `FailClosed` flag to solidify current behavior when randomness source is missing. (#31918) - `prometheusremotewriteexporter`: Add `exporter.prometheusremotewritexporter.RetryOn429` feature gate to retry on http status code 429 response. (#31032) The feature gate is initially disabled by default. - `vcenterreceiver`: Changing various default configurations for vcenterreceiver and removing warnings about future release. (#32803, #32805, #32821, #32531, #32557) The resource attributes that will now be enabled by default are `vcenter.datacenter.name`, `vcenter.virtual_app.name`, `vcenter.virtual_app.inventory_path`, `vcenter.vm_template.name`, and `vcenter.vm_template.id`. The metric `vcenter.cluster.memory.used` will be removed. The metrics `vcenter.cluster.vm_template.count` and `vcenter.vm.memory.utilization` will be enabled by default. - `sqlserverreceiver`: Add metrics for database status (#29865) - `sqlserverreceiver`: Add more metrics (#29865) Added metrics are: - sqlserver.resource_pool.disk.throttled.read.rate - sqlserver.resource_pool.disk.throttled.write.rate - sqlserver.processes.blocked These metrics are only available when directly connecting to the SQL server instance - `extension/encoding/text_encoding`: Add support for marshaling and unmarshaling text with separators. (#32679) ### 🧰 Bug fixes 🧰 - `deltatocumulativeprocessor`: Evict only stale streams (#33014) Changes eviction behavior to only evict streams that are actually stale. Currently, once the stream limit is hit, on each new stream the oldest tracked one is evicted. Under heavy load this can rapidly delete all streams over and over, rendering the processor useless. - `elasticsearchexporter`: Retried docs are no longer included in failed docs in an edge case where all errors are retriable (#33092) Update dep go-docappender to 2.1.2. This fixes the bug when all errors are retriable in bulk request response, retried docs will be included in failed docs. - `cmd/opampsupervisor`: The OpAMP supervisor now configures the `ppid` parameter of the opamp extension, which allows the collector to shut down if the supervisor is no longer running. (#32189) - `vcenterreceiver`: Adds initially disabled packet drop rate metric for VMs. (#32929) - `awskinesisexporter`: fixed compressed data not generating the compression footers (#32860) - `splunkhecreceiver`: Fix single metric value parsing (#33084) - `vcenterreceiver`: vcenterreceiver client no longer returns error if no Virtual Apps are found. (#33073) - `vcenterreceiver`: Adds initially disabled new packet rate metrics to replace the existing ones for VMs & Hosts. (#32835) - `googlecloudpubsubreceiver`: Fix memory leak during shutdown (#32361) - `datadogexporter`: Compress host metadata before sending with gzip. (#32992) - `resourcedetectionprocessor`: Change type of `host.cpu.stepping` from int to string. (#31136) - Disable the `processor.resourcedetection.hostCPUSteppingAsString` feature gate to get the old behavior. - `pkg/ottl`: Fixes a bug where function name could be used in a condition, resulting in a cryptic error message. (#33051) ## v0.100.0 ### 🛑 Breaking changes 🛑 - `receiver/hostmetrics`: enable feature gate `receiver.hostmetrics.normalizeProcessCPUUtilization` (#31368) This changes the value of the metric `process.cpu.utilization` by dividing it by the number of CPU cores. For example, if a process is using 2 CPU cores on a 16-core machine, the value of this metric was previously `2`, but now it will be `0.125`. - `testbed`: Remove deprecated `GetAvailablePort` function (#32800) ### 🚀 New components 🚀 - `healthcheckv2extension`: Introduce the skeleton for the temporary healthcheckv2 extension. (#26661) - `intervalprocessor`: Implements the new interval processor. See the README for more info about how to use it (#29461) - `OpenTelemetry Protocol with Apache Arrow Receiver`: Implementation copied from opentelemetry/otel-arrow repository @v0.20.0. (#26491) - `roundrobinconnector`: Add a roundrobin connector, that can help single thread components to scale (#32853) ### 💡 Enhancements 💡 - `telemetrygen`: Add support to set metric name (#32840) - `exporter/kafkaexporter`: Enable setting message topics using resource attributes. (#31178) - `exporter/datadog`: Introduces the Datadog Agent logs pipeline for exporting logs to Datadog under the "exporter.datadogexporter.UseLogsAgentExporter" feature gate. (#32327) - `elasticsearchexporter`: Add retry.retry_on_status config (#32584) Previously, the status codes that trigger retries were hardcoded to be 429, 500, 502, 503, 504. It is now configurable using `retry.retry_on_status`, and defaults to `[429, 500, 502, 503, 504]` to avoid a breaking change. To avoid duplicates, it is recommended to configure `retry.retry_on_status` to `[429]`, which would be the default in a future version. - `exporter/splunkhec`: add experimental exporter batcher config (#32545) - `windowsperfcountersreceiver`: Returns partial errors for failures during scraping to prevent throwing out all successfully retrieved metrics (#16712) - `jaegerencodingextension`: Promote jaegerencodingextension to alpha (#32699) - `kafkaexporter`: add an ability to publish kafka messages with message key based on metric resource attributes - it will allow partitioning metrics in Kafka. (#29433, #30666, #31675) - `cmd/opampsupervisor`: Switch the OpAMP Supervisor's bootstrap config to use the nopreceiver and nopexporter (#32455) - `otlpencodingextension`: Move otlpencodingextension to alpha (#32701) - `prometheusreceiver`: Prometheus receivers and exporters now preserve 'unknown', 'info', and 'stateset' types. (#16768) It uses the metric.metadata field with the 'prometheus.type' key to store the original type. - `ptracetest`: Add support for ignore scope span instrumentation scope information (#32852) - `sqlserverreceiver`: Enable direct connection to SQL Server (#30297) Directly connecting to SQL Server will enable the receiver to gather more metrics for observing the SQL Server instance. The first metric added with this update is `sqlserver.database.io.read_latency`. - `connector/datadog`: The Datadog connector now has a config option to identify top-level spans by span kind. This new logic can be enabled by setting `traces::compute_top_level_by_span_kind` to true in the Datadog connector config. Default is false. (#32005) `traces::compute_top_level_by_span_kind` needs to be enabled in both the Datadog connector and Datadog exporter configs if both components are being used. With this new logic, root spans and spans with a server or consumer `span.kind` will be marked as top-level. Additionally, spans with a client or producer `span.kind` will have stats computed. Enabling this config option may increase the number of spans that generate trace metrics, and may change which spans appear as top-level in Datadog. - `exporter/datadog`: The Datadog exporter now has a config option to identify top-level spans by span kind. This new logic can be enabled by setting `traces::compute_top_level_by_span_kind` to true in the Datadog exporter config. Default is false. (#32005) `traces::compute_top_level_by_span_kind` needs to be enabled in both the Datadog connector and Datadog exporter configs if both components are being used. With this new logic, root spans and spans with a server or consumer `span.kind` will be marked as top-level. Additionally, spans with a client or producer `span.kind` will have stats computed. Enabling this config option may increase the number of spans that generate trace metrics, and may change which spans appear as top-level in Datadog. - `exporter/datadog`: Support stable semantic conventions for HTTP spans (#32823) - `cmd/opampsupervisor`: Persist collector remote config & telemetry settings (#21078) - `cmd/opampsupervisor`: Support AcceptsRestartCommand Capability. (#21077) - `telemetrygen`: Add headers to gRPC metadata for logs (#32668) - `sshcheckreceiver`: Add support for running this receiver on Windows (#30650) - `zipkinencodingextension`: Move zipkinencodingextension to alpha (#32702) ### 🧰 Bug fixes 🧰 - `prometheusremotewrite`: Modify prometheusremotewrite.FromMetrics to only generate target_info if there are metrics, as otherwise you can't deduce the timestamp. (#32318) - `prometheusremotewrite`: Change prometheusremotewrite.FromMetrics so that the target_info metric is only generated if at least one identifying OTel resource attribute (service.name and/or service.instance.id) is defined. (#32148) - `k8sclusterreceiver`: Fix container state metadata (#32676) - `sumologicexporter`: do not replace `.` with `_` for prometheus format (#31479) - `pkg/stanza`: Allow sorting by ascending order when using the mtime sort_type. (#32792) - `opampextension`: Add a new `ppid` parameter that can be used to enable orphan detection for the supervisor. (#32189) - `awsxrayreceiver`: Retain CloudWatch Log Group when translating X-Ray segments (#31784) - `pkg/stanza`: Fix issue when `exclude_older_than` is enabled without `ordering_criteria` configured (#32681) - `awskinesisexporter`: the compressor was crashing under high load due it not being thread safe. (#32589) removed compressor abstraction and each execution has its own buffer (so it's thread safe) - `filelogreceiver`: When a flush timed out make sure we are at EOF (can't read more) (#31512, #32170) - `vcenterreceiver`: Adds the `vcenter.cluster.name` resource attribute to resource pool with a ClusterComputeResource parent (#32535) - `vcenterreceiver`: Updates `vcenter.cluster.memory.effective` (primarily that the value was reporting MiB when it should have been bytes) (#32782) - `vcenterreceiver`: Adds warning to `vcenter.cluster.memory.used` metric if configured about its future removal (#32805) - `vcenterreceiver`: Updates the `vcenter.cluster.vm.count` metric to also report suspended VM counts (#32803) - `vcenterreceiver`: Adds `vcenter.datacenter.name` attributes to all resource types to help with resource identification (#32531) - `vcenterreceiver`: Adds `vcenter.cluster.name` attributes warning log related to Datastore resource (#32674) - `vcenterreceiver`: Adds new `vcenter.virtual_app.name` and `vcenter.virtual_app.inventory_path` resource attributes to appropriate VM Resources (#32557) - `vcenterreceiver`: Adds functionality for `vcenter.vm.disk.throughput` while also changing to a gauge. (#32772) - `vcenterreceiver`: Adds initially disabled functionality for VM Templates (#32821) - `remotetapprocessor`: Fix memory leak on shutdown (#32571) - `haproxyreceiver`: Fix reading stats larger than 4096 bytes (#32652) - `connector/count`: Fix handling of non-string attributes in the count connector (#30314) - `datadogexporter`: Fix nil pointer dereference when using beta infrastructure monitoring offering (#32865) The bug happened under the following conditions: - Setting `datadog.host.use_as_host_metadata` to true on a payload with data about the Datadog exporter host - Running using the official opentelemetry-collector-contrib Docker image - `pkg/translator/jaeger`: translate binary attribute values to/from Jaeger as is, without encoding them as base64 strings (#32204) - `awscloudwatchreceiver`: Fixed a bug where autodiscovery would not use nextToken in the paginated request (#32053) - `awsxrayexporter`: make comma`,` as invalid char for x-ray segment name (#32610) ## v0.99.0 ### 🛑 Breaking changes 🛑 - `dynatraceexporter`: remove deprecated component (#32278) - `extension/filestorage`: Replace path-unsafe characters in component names (#3148) The feature gate `extension.filestorage.replaceUnsafeCharacters` is now stable and cannot be disabled. See the File Storage extension's README for details. - `gitproviderreceiver`: Changed git provider metrics to better match conventions (#31985) - Renamed `git.repository.pull_request.open.time` to `git.repository.pull_request.time_open` - Renamed `git.repository.pull_request.merged.time` to `git.repository.pull_request.time_to_merge` - Renamed `git.repository.pull_request.approved.time` to `git.repository.pull_request.time_to_approval` - Combined `git.repository.pull_request.merged.count` and `git.repository.pull_request.open.count` into `git.repository.pull_request.count` with an attribute of `pull_request.state` equal to `open` or `merged` - `all`: Bump minimum version to go 1.21.0 (#32451) - `exporter/loadbalancing`: Change AWS Cloud map resolver config fields from camelCase to snake_case. (#32331) The snake_case is required in OTel Collector config fields. It used to be enforced by tests in cmd/oteltestbedcol, but we had to disable them. Now, the tests are going to be enforced on every component independently. Hence, the camelCase config fields recently added with the new AWS Cloud Map resolver has to be fixed. - `connector/servicegraphconnector`: Change `connector.servicegraph.virtualNode` feature gate from Alpha to Beta (now enabled by default) and change `virtual_node_peer_attributes` default values. (#31734) ### 🚀 New components 🚀 - `googleclientauthextension`: Add implementation of Google Client Auth Extension. (#32029) - `ackextension`: Promote to `alpha` stability (#26376) ### 💡 Enhancements 💡 - `deltatocumulativeprocessor`: exposes max_stale as metric (#32441) - `sumologicexporter`: use Sumo Logic Extension for authentication and to obtain endpoint (#31479) - `failoverconnector`: This change puts the failoverconnector into alpha (#20766) - `vcenterreceiver`: Changes process for collecting VMs & VM perf metrics used by the `vccenterreceiver` to be more efficient (one call now for all VMs) (#31837) - `opampextension`: Added a new `agent_description.non_identifying_attributes` config option to allow setting user-defined non-identifying attributes (#32107) - `googleclientauthextension`: Mark Google Client Auth Extension alpha stability. (#32442) - `splunkhecreceiver`: adding support for ack in the splunkhecreceiver (#26376) - `hostmetricsreceiver`: The hostmetricsreceiver now caches the system boot time at receiver start and uses it for all subsequent calls. The featuregate `hostmetrics.process.bootTimeCache` can be disabled to restore previous behaviour. (#28849) This change was made because it greatly reduces the CPU usage of the process and processes scrapers. - `filelogreceiver`: Add `send_quiet` and `drop_quiet` options for `on_error` setting of operators (#32145) - `otlpjsonfilereceiver`: Add a replay_file config option to support replaying static telemetry (#31533) - `pkg/ottl`: Add `IsList` OTTL Function (#27870) - `rabbitmqexporter`: Implements the RabbitMQ exporter (#28891) - `filelogreceiver`: Add `exclude_older_than` configuration setting (#31053) - `pkg/stanza/operator/transformer/recombine`: add a new "max_unmatched_batch_size" config parameter to configure the maximum number of consecutive entries that will be combined into a single entry before the match occurs (#31653) - `awsxrayreceiver`: Add support for local namespace in subsegment (#31514) ### 🧰 Bug fixes 🧰 - `awscloudwatchreceiver`: The receiver now supports extracting data from named loggroups without requiring filters for log streams. This was already advertised as feature, but ignored during initialization. (#32345) - `awskinesisexporter`: Wraps the `AssumeRoleProvider` in a `CachedCredentials` provider, in the case the AWS role is specified. This prevents a role assumption from happening every API call. (#32415) - `receiver/hostmetricsreceiver`: do not extract the cpu count if the metric is not enabled; this will prevent unnecessary overhead, especially on windows (#32133) - `azuremonitorexporter`: Fix: Use correct parentId for span events. (#27233) - `failoverconnector`: This change adds a fix for an identified bug regarding extra failover switches (#32094) - `failoverconnector`: Fix flaky test in pipeline selector component (#32396) - `pkg/stanza`: Fix race condition which prevented `jsonArrayParserFeatureGate` from working correctly. (#32313) - `cmd/opampsupervisor`: Fix collector subprocess not being stopped if bootstrapping fails (#31943) - `vcenterreceiver`: Remove the `vcenter.cluster.name` resource attribute from Host resources if the Host is standalone (no cluster) (#32548) - `azureeventhubreceiver`: Fix memory leak on shutdown (#32401) - `fluentforwardreceiver`: Fix memory leak (#32363) - `processor/resourcedetection, exporter/datadog`: Fix memory leak on AKS (#32574) - `mongodbatlasreceiver`: Fix memory leak by closing idle connections on shutdown (#32206) - `haproxyreceiver`: Fix show stat command on unix socket (#32291) - `opampsupervisor`: Fix restart delay when agent process exits unexpectedly. (#27891) - `spanmetrics`: Discard counter span metric exemplars after each flush interval to avoid unbounded memory growth (#31683) This aligns exemplar discarding for counter span metrics with the existing logic for histogram span metrics - `stanza`: Unmarshaling now preserves the initial configuration. (#32169) - `resourcedetectionprocessor`: Update to ec2 scraper so that core attributes are not dropped if describeTags returns an error (likely due to permissions) (#30672) ## v0.98.0 ### 🛑 Breaking changes 🛑 - `podmanreceiver`: Adds metrics and resources metadata and sets seconds precision for cpu metrics (#28640) - `clickhouseexporter`: Add ServiceName as `column` into Clickhouse metrics tables (#31670) It's a breaking change. users who upgrade to the latest version need to alter the Clickhouse table: ```sql ALTER TABLE otel_metrics_exponential_histogram ADD COLUMN ServiceName LowCardinality(String) CODEC(ZSTD(1)); ALTER TABLE otel_metrics_gauge ADD COLUMN ServiceName LowCardinality(String) CODEC(ZSTD(1)); ALTER TABLE otel_metrics_histogram ADD COLUMN ServiceName LowCardinality(String) CODEC(ZSTD(1)); ALTER TABLE otel_metrics_sum ADD COLUMN ServiceName LowCardinality(String) CODEC(ZSTD(1)); ALTER TABLE otel_metrics_summary ADD COLUMN ServiceName LowCardinality(String) CODEC(ZSTD(1)); ``` - `elasticsearchexporter`: Initial pass in implementing the `ecs` mapping mode (#31553) Breaking change if mapping `mode` is set to `ecs`, use `none` to maintain existing format - `pkg/stanza`: Revert recombine operator's 'overwrite_with' default value. (#30783) Restores the previous the default value of `oldest`, meaning that the recombine operator will emit the first entry from each batch (with the recombined field). This fixes the bug introduced by 30783 and restores the default setting so as to effectively cancel out the bug for users who were not using this setting. For users who were explicitly setting `overwrite_with`, this corrects the intended behavior. - `processor/attributes, processor/resource`: Remove stable coreinternal.attraction.hash.sha256 feature gate. (#31997) - `receiver/dockerstats`: Remove stable receiver.dockerstats.useScraperV2 feature gate. (#31999) - `awsxrayexporter`: change x-ray exporter's translator to make "." split annotation pass as-is (#31732) In the past, X-Ray doesn’t support “.”. So we have a translator in x-ray export to translates it to “_” before sending traces to X-Ray Service. | To match otel naming style, x-ray service team decide to change their service to support both "." type and "" type of naming. In this case the translator that translate "." to "" is no-longer needed. This PR change the way this translator work | X-Ray PMs agree on rolling out this change by using feature-gate - `oracledbreceiver`: Fix incorrect values being set for oracledb.tablespace_size.limit and oracledb.tablespace_size.usage (#31451) Please grant the `DBA_TABLESPACE_USAGE_METRICS` permission to the user connecting to the Oracle DB instance to ensure all enabled metrics are properly ingested. ### 🚩 Deprecations 🚩 - `postgresqlreceiver`: Minimal supported PostgreSQL version will be updated from 9.6 to 12.0 in a future release. (#30923) Aligning on the supported versions as can be seen [in the PostgreSQL releases section](https://www.postgresql.org/support/versioning) ### 🚀 New components 🚀 - `avrologencodingextension`: Add new encoding extension to support mapping of AVRO messages to logs. (#21067) ### 💡 Enhancements 💡 - `ottl`: Add new Unix function to convert from epoch timestamp to time.Time (#27868) - `filelogreceiver`: When reading a file on filelogreceiver not on windows, if include_file_owner_name is true, it will add the file owner name as the attribute `log.file.owner.name` and if include_file_owner_group_name is true, it will add the file owner group name as the attribute `log.file.owner.group.name`. (#30775) - `awsproxyextension`: Make awsproxy extension more resilient by initiating the AWS client during Start. (#27849) - `deltatocumulativeprocessor`: self-instrumentation to observe key metrics of the stream accumulation (#30705) - `datadog/connector`: Enable connector to use any attribute from the resource as Container Tag (#32224) This change allows the connector to use any attribute from the resource as a container tag. This is useful when you want to use a custom attribute from the resource as a container tag. For example, you can use the `namespace` attribute from the resource as a container tag. - `exceptionsconnector`: change stability of exceptionsconnector from development to alpha (#31820) - `exceptionsconnector`: Copy span attributes to the generated log from exception. (#24410) - `prometheusreceiver`: Allows receiving prometheus native histograms (#26555) - Native histograms are compatible with OTEL exponential histograms. - The feature can be enabled via the feature gate `receiver.prometheusreceiver.EnableNativeHistograms`. Run the collector with the command line option `--feature-gates=receiver.prometheusreceiver.EnableNativeHistograms`. - Currently the feature also requires that targets are scraped via the ProtoBuf format. To start scraping native histograms, set `config.global.scrape_protocols` to `[ PrometheusProto, OpenMetricsText1.0.0, OpenMetricsText0.0.1, PrometheusText0.0.4 ]` in the receiver configuration. This requirement will be lifted once Prometheus can scrape native histograms over text formats. - For more up to date information see the README.md file of the receiver at https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/prometheusreceiver/README.md#prometheus-native-histograms. - `all`: Add support for ARM build (#12920) - `failoverconnector`: Support ignoring `max_retries` setting in failover connector (#9868) - `spanmetricsconnector`: Change default value of metrics_flush_interval from 15s to 60s (#31776) - `pkg/ottl`: Adding a string converter into pkg/ottl (#27867) - `cmd/opampsupervisor`: Handle OpAMP connection settings. (#21043) - `loadbalancingexporter`: Support the timeout period of k8s resolver list watch can be configured. (#31757) - `cmd/telemetrygen`: Add Support for specifying Log Severity (#26498) ### 🧰 Bug fixes 🧰 - `datadog/connector`: Fix data race in datadog metrics client (#31964) The PR ensures mutex protects gauges map in every code path. - `exporter/awskinesisexporter`: Fixed issue with compression what was causing EOF exceptions when attempting to decompress the payload (#32081) - `filelogreceiver`: Fix missing scope name and group logs based on scope (#23387) - `jaegerremotesamplingextension`: Fix leaking goroutine on shutdown (#31157) - `jmxreceiver`: Fix memory leak during component shutdown (#32289) - `k8sobjectsreceiver`: Fix memory leak caused by the pull mode's interval ticker (#31919) - `kafkareceiver`: fix kafka receiver panic on shutdown (#31926) - `prometheusreceiver`: Fix a bug where a new prometheus receiver with the same name cannot be created after the previous receiver is Shutdown (#32123) - `resourcedetectionprocessor`: Only attempt to detect Kubernetes node resource attributes when they're enabled. (#31941) - `syslogreceiver`: Fix issue where static resource and attributes were ignored (#31849) ## v0.97.0 ### 🛑 Breaking changes 🛑 - `datadogconnector`: Remove feature gate `connector.datadogconnector.performance` (#31638) - `cmd/mdatagen`: Delete deprecated cmd/mdatagen from this project. Use go.opentelemetry.io/collector/cmd/mdatagen instead. (#30497) - `receiver/postgresql`: Bump postgresqlreceiver.preciselagmetrics gate to beta (#31220) - `receiver/vcenter`: Bump receiver.vcenter.emitPerfMetricsWithObjects feature gate to stable (#31215) - `prometheusreceiver`: Remove enable_protobuf_negotiation option on the prometheus receiver. Use config.global.scrape_protocols = [ PrometheusProto, OpenMetricsText1.0.0, OpenMetricsText0.0.1, PrometheusText0.0.4 ] instead. (#30883) See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#configuration-file for details on setting scrape_protocols. - `vcenterreceiver`: Fixed the resource attribute model to more accurately support multi-cluster deployments (#30879) For more information on impacts please refer https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/31113. The main impacts are that the `vcenter.resource_pool.name`, `vcenter.resource_pool.inventory_path`, and `vcenter.cluster.name` are reported with more accuracy on VM metrics. ### 🚩 Deprecations 🚩 - `instanaexporter`: Mark the Instana Exporter as deprecated. (#31765) ### 🚀 New components 🚀 - `awss3receiver`: introduce the AWS S3 receiver (#30750) - `sumologicextension`: promote to `alpha` stability (#29601) - `googleclientauthextension`: Add boilerplate for Google Client Auth Extension (#31412) - `grafanacloudconnector`: Adds a connector to generate metrics for Grafana Cloud. (#31647) - `rabbitmqexporter`: Add new exporter for sending telemetry to RabbitMQ brokers using the AMQP 0.9.1 protocol (#28891) ### 💡 Enhancements 💡 - `exporter/loadbalancingexporter`: Adding AWS Cloud Map for service discovery of Collectors backend. (#27241) - `ottl`: Add new function to decode a base64 encoded string and output the original string (#31543) - `ackextension`: adding the in-memory implementation of the ackextension (#26376) - `awss3exporter`: add `compression` option to enable file compression on S3 (#27872) Add `compression` option to compress files using `compress/gzip` library before uploading to S3. - `servicegraphprocessor`: Added a new configuration option `database_name_attribute` to allow users to specify a custom attribute name for identifying the database name in span attributes. (#30726) - `awss3exporter`: Add support for encoding extension to awss3exporter (#30554) - `processor/k8sattributes`: Add support for `k8s.node.uid` metadata (#31637) - `awss3exporter`: Add support for specifying the file extension for files uploaded to S3 when using an encoding extension. (#31818) - `datadogexporter`: Datadog exporter uses the same default HTTP settings as Datadog Agent HTTP transport (#31733) - `datadogexporter`: Datadog exporter respects a subset of settings in confighttp client configs (#31733) Currently the following configs are respected: `read_buffer_size`, `write_buffer_size`, `timeout`, `max_idle_conns`, `max_idle_conns_per_host`, `max_conns_per_host`, `idle_conn_timeout`, `disable_keep_alives` and `tls.insecure_skip_verify`. - `deltatocumulativeprocessor`: introduce configurable stream limit (#31488) Adds `max_streams` option that allows to set upper bound (default = unlimited) to the number of tracked streams. Any additional streams exceeding the limit are dropped. - `deltatocumulativeprocessor`: expire stale series (#30705, #31016) Adds `max_stale` option that allows to set an interval (default = `5min`) after which a series that no longer receives new samples is removed from tracking. - `datadogconnector`: Add a new option to the Datadog connector to enable container tags on stats Payloads. (#31642) This change adds a new option to the Datadog connector to enable container tags on stats Payloads. This is useful for users who want to use container tags as second primary tag for Datadog APM. - `dockerstatsreceiver`: add metrics for online CPU count and memory fails count (#31366) - `fileexporter`: Adopt the encoding extension with the file exporter. (#31774) - `pkg/ottl`: Add `ParseXML` function for parsing XML from a target string. (#31133) - `fileexporter`: Added the option to write telemetry data into multiple files, where the file path is based on a resource attribute. (#24654) - `fileexporter`: File write mode is configurable now (truncate or append) (#31364) - `elasticsearchexporter`: When timestamp is not set, use observedTimestamp (#11752) - `k8sclusterreceiver`: add optional status_last_terminated_reason resource attribute (#31282) - `awsproxyextension`: Expose service_name as configurable option. Previously, it was hardcoded as xray. (#29550) - `datadogexporter`: Add new telemetry metric, `otelcol_datadog_otlp_translator_resources_missing_source` that counts OTLP resources missing a hostname-identifying attribute. (#31805) - Enable Collector metrics https://opentelemetry.io/docs/collector/internal-telemetry/#configure-internal-metrics to check for this metric. - `extension/opamp`: Promote the OpAMP extension to alpha stability (#31616) - `prometheusremotewriteexporter`: Publish telemetry about translation of metrics from Otel to Prometheus. Don't drop all data points if some fail translation. (#29729) - `prometheusreceiver`: Use confighttp for target allocator client (#31449) - `spanmetricsconnector`: Add `metrics_expiration` option to enable expiration of metrics if spans are not received within a certain time frame. (#30559) The feature can be configured by specifying the desired duration in the `metrics_expiration` option. By default, the expiration is disabled (set to 0). - `splunkentreceiver`: Updated the config.go and propagated these changes to other receiver components. Change was necessary to differentiate different configurable endpoints. (#30254) - `exporter/datadogexporter`: Do not drop traces when payload channel is full. (#31893) - `connector/datadogconnector`: Do not resolve container tags if payload already has tags associated with it. (#31893) ### 🧰 Bug fixes 🧰 - `bigipreceiver`: Fix potential nil pointer usage in GetPoolMembers (#31899) - `carbonreceiver`: Do not report fatal error when closed normally (#31913) - `datadogexporter`: Fix data race in metrics exporter shutdown (#31663) - `deltatocumulativeprocessor`: timer-based expiry (#31615) converts expiry to 1m timer, eliminating a race condition and failing test - `telemetrygen`: Do not use WithBlock when forming grpc connections for metrics/traces in telemetrygen to avoid infinite retry after failure (#31401) - `filestatsreceiver`: Fix file.path to return the proper absolute path of the file (#31738) - `internal/docker`: Updated docker dependency and fixed zap.String incompatibility (#31087) - `exporter/loadbalancing`: Fix panic when a sub-exporter is shut down while still handling requests. (#31410) - `cmd/telemetrygen`: Fixed key mapping for logs telemetry attributes. (#31309) - `exporter/awskinesisexporter`: Fix the capacity of records slices in the initialized batch (#20914) - `hostmetricsreceiver`: Adds the receiver.hostmetrics.normalizeProcessCPUUtilization feature gate to optionally normalize process.cpu.utilization values. (#31368) When enabled, the receiver.hostmetrics.normalizeProcessCPUUtilization feature gate will cause process.cpu.utilization values to be divided by the number of logical cores on the system. This is necessary to produce a value on the interval of [0-1], as the description of process.cpu.utilization the metric says. - `transformprocessor`: Change metric unit for metrics extracted with `extract_count_metric()` to be the default unit (`1`) (#31575) The original metric `unit` does not apply to extracted `count` metrics the same way it does to `sum`, `min` or `max`. Metrics extracted using `extract_count_metric()` now use the more appropriate default unit (`1`) instead. - `dockerstatsreceiver`: Add shutdown method to fix leaking goroutines (#30438) - `loadbalancingexporter`: Fix memory leaks on shutdown (#31050) - `signalfxexporter`: Fix memory leak in shutdown (#30864, #30438) - `servicegraphprocessor`: Fix 'failed to find dimensions for key' error from race condition in metrics cleanup. (#31701) - `processor/k8sattributes`: Allows k8sattributes processor to work with k8s role/rolebindings when filter::namespace is set. (#14742) - `exporter/datadog`: Demote noisy gohai logs to debug level (#29741) These logs would be present at the info level when using the official Docker images but were not useful to end-users. - `opencensusreceiver`: Refactor the opencensusreceiver to pass lifecycle tests and avoid leaking gRPC connections. (#31643) - `sqlqueryreceiver`: Fix memory leak on shutdown for log telemetry (#31782) ## v0.96.0 ### 🛑 Breaking changes 🛑 - `f5cloudexporter`: Remove deprecated module (#31531) - `datadogconnector`: Move feature gate `connector.datadogconnector.performance` to stable stage. (#31414) `connector.datadogconnector.performance` will be removed in the next release - `spanmetricsprocessor`: Remove spanmetrics processor (#29567) - You can use the spanmetrics connector as a replacement - `httpforwarder`: Remove extension named httpforwarder, use httpforwarderextension instead. (#24171) - `k8sclusterreceiver`: Remove deprecated k8s.kubeproxy.version resource attribute (#29748) ### 🚀 New components 🚀 - `ackextension`: Adding an interface for Acknowledgement extension (#26376) - `sumologicextension`: add implementation of Sumo Logic Extension (#29601) ### 💡 Enhancements 💡 - `datadogexporter`: Attach the collector version to stats payloads to improve the debugging experience. (#31454) - `awsxrayexporter`: support both deprecated and stable http attributes translation for backward compatibility. (#30935) - `azuremonitorexporter`: Added support for configuring the Azure Monitor Exporter connection string via the `APPLICATIONINSIGHTS_CONNECTION_STRING` environment variable. (#31523) - `datadogconnector`: datadogconnector no longer mutates the input traces in trace-to-trace pipelines. (#31414) - `statsdreceiver`: Add support for the latest version of DogStatsD protocol (v1.3) (#31295) - `fileexporter`: Scope the behavior of the fileexporter to its lifecycle, so it is safe to shut it down or restart it. (#27489) - `processor/resourcedetection`: Add `processor.resourcedetection.hostCPUSteppingAsString` feature gate to change the type of `host.cpu.stepping` from `int` to `string`. (#31136) This feature gate will graduate to beta in the next release. - `routingconnector`: a warning is logged if there are two or more routing items with the same routing statement (#30663) - `pkg/ottl`: Add new IsInt function to facilitate type checking. (#27894) - `cmd/mdatagen`: Make lifecycle tests generated by default (#31532) - `opampextension`: enables creating and using an http client (#31389) - `pkg/stanza`: Improve timestamp parsing documentation (#31490) - `postgresqlreceiver`: Add `receiver.postgresql.connectionPool` feature gate to reuse database connections (#30831) The default implementation recreates and closes connections on each scrape per database configured/discovered. This change offers a feature gated alternative to keep connections open. Also, it exposes connection configuration to control the behavior of the pool. - `datadogconnector`: Add `source:datadogconnector` tag to trace agent telemetry metrics generated by the datadogconnector. (#31528) - `datadogexporter`: Add `source:datadogexporter` tag to trace agent telemetry metrics generated by the datadogexporter. (#31528) - `datadogexporter`: Automatically map `cloud.region`, `cloud.availability_zone` and `cloud.provider` to the `region`, `zone` and `cloud_provider` host tags. (#31372) ### 🧰 Bug fixes 🧰 - `carbonreceiver`: Accept carbon metrics with float timestamps (#31312) - `chronyreceiver`: move initialization of the chrony client to the start function (#27849) - `deltatocumulativeprocessor`: permits advancing delta start timestamps, as required by spec. (#31365) - `deltatocumulativeprocessor`: due to an oversight, only the first sample of each stream was processed. now all samples are. (#31350) - `cmd/telemetrygen`: Inherit root CAs from the host environment if not supplied on the command line. (#31191) - `syslogexporter`: fix setting network connection, do not load TLS configuration for UDP (#31130) - `journaldreceiver`: Fix bug where failed startup could bury error message due to panic during shutdown (#31476) - `loadbalancingexporter`: Fixes a bug where the endpoint become required, despite not being used by the load balancing exporter. (#31371) - `oracledbreceiver`: Use metadata.Type for the scraper id to avoid invalid scraper IDs. (#31457) - `filelogreceiver`: Fix bug where delete_after_read would cause panic (#31383) - `receiver/filelog`: Fix issue where file fingerprint could be corrupted while reading. (#22936) - `cmd/telemetrygen`: Fix incorrect error logged in traces batch span processor shutdown (#31362) ## v0.95.0 ### 🛑 Breaking changes 🛑 - `all`: Bump minimum version to go 1.21 (#31105) - `receiver/elasticsearch`: Remove receiver.elasticsearch.emitNodeVersionAttr feature gate (#31221) - `receiver/mongodb`: Bump receiver.mongodb.removeDatabaseAttr feature gate to beta (#31212) - `splunkenterprisereceiver`: adds additional metrics specific to indexers (#30704) - `exporter/datadogexporter`: Disable APM stats computation in Datadog Exporter by default, `exporter.datadogexporter.DisableAPMStats` is changed to beta (#31219) - `extension/storage`: The `filestorage` and `dbstorage` extensions are now standalone modules. (#31040) If using the OpenTelemetry Collector Builder, you will need to update your import paths to use the new module(s). - `github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/filestorage` - `github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/dbstorage` ### 🚩 Deprecations 🚩 - `f5cloudexporter`: deprecating component that is no longer maintained (#31186) ### 🚀 New components 🚀 - `confmap/secretsmanagerprovider`: Initial implementation of secrets manager provider. Allows fetch variables from AWS Secrets Manager (#19368) - `deltatocumulative`: adds processor to convert sums (initially) from delta to cumulative temporality (#30705) ### 💡 Enhancements 💡 - `hostmetricsreceiver`: Add a new optional resource attribute `process.cgroup` to the `process` scraper of the `hostmetrics` receiver. (#29282) - `datadogexporter`: Adds support for stable JVM metrics introduced in opentelemetry-java-instrumentation v2.0.0 (#31194) See https://github.com/DataDog/opentelemetry-mapping-go/pull/265 for details. - `datasetexporter`: Release resources if they haven't been used for some time. (#31292) - `datadogconnector`: Add a trace config `peer_tags` on supplementary peer tags on APM stats. (#31158) - `datadogexporter`: Add a trace config `peer_tags` on supplementary peer tags on APM stats. (#31158) - `awss3exporter`: Add a marshaler that stores the body of log records in s3. (#30318) - `pkg/ottl`: Adds a new ParseCSV converter that can be used to parse CSV strings. (#30921) - `loadbalancingexporter`: Add benchmarks for Metrics and Traces (#30915) - `pkg/ottl`: Add support to specify the format for a replacement string (#27820) - `pkg/ottl`: Add `ParseKeyValue` function for parsing key value pairs from a target string (#30998) - `receivercreator`: Remove use of `ReportFatalError` (#30596) - `processor/tail_sampling`: Add metrics that measure the number of sampled spans and the number of spans that are dropped due to sampling decisions. (#30482) - `exporter/signalfx`: Send histograms in otlp format with new config `send_otlp_histograms` option (#26298) - `receiver/signalfx`: Accept otlp protobuf requests when content-type is "application/x-protobuf;format=otlp" (#26298) - `signalfxreceiver`: Remove deprecated use of `host.ReportFatalError` (#30598) - `syslogexporter`: Adding support for sending rfc6587 octet counts in syslog messages (#31013) - `connector/datadogconnector`: Internal telemetry metrics for the Datadog traces exporter are now reported through the Collector's self-telemetry (#31179) - These internal metrics may be dropped or change name without prior notice - `exporter/datadogexporter`: Internal telemetry metrics for the Datadog traces exporter are now reported through the Collector's self-telemetry (#31179) - These internal metrics may be dropped or change name without prior notice ### 🧰 Bug fixes 🧰 - `pkg/stanza`: Add 'allow_skip_pri_header' flag to syslog setting. (#30397) Allow parsing syslog records without PRI header. Currently pri header is beng enforced although it's not mandatory by the RFC standard. Since influxdata/go-syslog is not maintained we had to switch to haimrubinstein/go-syslog. - `datadogexporter`: Fix bug where multiple resources would cause datadogexporter to send extraneous additional stats buckets. (#31173) - `extension/storage`: Ensure fsync is turned on after compaction (#20266) - `logstransformprocessor`: Fix potential panic on shutdown due to incorrect shutdown order (#31139) - `logicmonitorexporter`: Fix memory leak on shutdown (#31150) - `opencensusreceiver`: Fix memory leak on shutdown (#31152) - `receiver/prometheusreceiver`: prometheusreceiver fix translation of metrics with _created suffix (#30309) - `pkg/stanza`: Fixed a bug in the keyvalue_parser where quoted values could be split if they contained a delimited. (#31034) ## v0.94.0 ### 🛑 Breaking changes 🛑 - `servicegraphprocessor`: removed deprecated component, use the servicegraph connector instead. (#26091) - `datadogconnector`: Enable feature gate `connector.datadogconnector.performance` by default. (#30829) See https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/connector/datadogconnector#feature-gate-for-performance for caveats of this feature gate. - `datadogprocessor`: Delete datadogprocessor which has been deprecated since v0.84.0 (#31026) Use datadogconnector instead. - `kafkareceiver`: standardizes the default topic name for metrics and logs receivers to the same topic name as the metrics and logs exporters of the kafkaexporter (#27292) If you are using the Kafka receiver in a logs and/or a metrics pipeline and you are not customizing the name of the topic to read from with the `topic` property, the receiver will now read from `otlp_logs` or `otlp_metrics` topic instead of `otlp_spans` topic. To maintain previous behavior, set the `topic` property to `otlp_spans`. - `pkg/stanza`: Entries are no longer logged during error conditions. (#26670) This change is being made to ensure sensitive information contained in logs are never logged inadvertently. This change is a breaking change because it may change user expectations. However, it should require no action on the part of the user unless they are relying on logs from a few specific error cases. - `pkg/stanza`: Invert recombine operator's 'overwrite_with' default value. (#30783) Previously, the default value was `oldest`, meaning that the recombine operator _should_ emit the first entry from each batch (with the recombined field). However, the actual behavior was inverted. This fixes the bug but also inverts the default setting so as to effectively cancel out the bug fix for users who were not using this setting. For users who were explicitly setting `overwrite_with`, this corrects the intended behavior. ### 🚩 Deprecations 🚩 - `skywalkingexporter`: Mark the component as unmaintained. If we don't find new maintainers, it will be deprecated and removed. (#23796) ### 🚀 New components 🚀 - `sumologicextension`: add configuration and readme (#29601) - `failoverconnector`: Refactor of connector to separate concerns between managing indexes and core failover component (#20766) - `otelarrow`: Skeleton of new OpenTelemetry Protocol with Apache Arrow Receiver (#26491) - `processor/interval`: Adds the initial structure for a new processor that aggregates metrics and periodically forwards the latest values to the next component in the pipeline. (#29461) As per the CONTRIBUTING.md recommendations, this PR only creates the basic structure of the processor. The concrete implementation will come as a separate followup PR ### 💡 Enhancements 💡 - `receiver/journald`: add a new config option "all" that turns on full output from journalctl, including lines that are too long. (#30920) - `pkg/stanza`: Add support in a header configuration for json array parser. (#30321) - `awss3exporter`: Add the ability to export trace/log/metrics in OTLP ProtoBuf format. (#30682) - `dockerobserver`: Upgrading Docker API version default from 1.22 to 1.24 (#30900) - `filterprocessor`: move metrics from OpenCensus to OpenTelemetry (#30736) - `groupbyattrsprocessor`: move metrics from OpenCensus to OpenTelemetry (#30763) - `datadogconnector`: Add trace configs that mirror datadog exporter (#30787) ignore_resources: disable certain traces based on their resource name span_name_remappings: map of datadog span names and preferred name to map to span_name_as_resource_name: use OTLP span name as datadog operation name compute_stats_by_span_kind: enables an additional stats computation check based on span kind peer_tags_aggregation: enables aggregation of peer related tags trace_buffer: specifies the buffer size for datadog trace payloads - `elasticsearchexporter`: Add `mapping.mode: raw` configuration option (#26647) Setting `mapping.mode: raw` in the Elasticsearch exporter's configuration will result logs and traces being indexed into Elasticsearch with their attribute fields directly at the root level of the document instead inside an `Attributes` object. Similarly, this setting will also result in traces being indexed into Elasticsearch with their event fields directly at the root level of the document instead of inside an `Events` object. - `loadbalancingexporter`: Optimize metrics and traces export (#30141) - `gitproviderreceiver`: Add pull request metrics (#22028) - git.repository.pull_request.open.count - git.repository.pull_request.open.time - git.repository.pull_request.merged.count - git.repository.pull_request.merged.time - git.repository.pull_request.approved.time - `all`: Add `component.UseLocalHostAsDefaultHost` feature gate that changes default endpoints from 0.0.0.0 to localhost (#30702) This change affects the following components: - extension/awsproxy - extension/health_check - extension/jaegerremotesampling - internal/aws/proxy - processor/remotetap - receiver/awsfirehose - receiver/awsxray - receiver/influxdb - receiver/jaeger - receiver/loki - receiver/opencensus - receiver/sapm - receiver/signalfx - receiver/skywalking - receiver/splunk_hec - receiver/zipkin - receiver/zookeeper - `googlepubsubreceiver`: Add support for GoogleCloud logging encoding (#29299) - `processor/resourcedetectionprocessor`: Detect Azure cluster name from IMDS metadata (#26794) - `processor/transform`: Add `copy_metric` function to allow duplicating a metric (#30846) ### 🧰 Bug fixes 🧰 - `basicauthextension`: Accept empty usernames. (#30470) Per https://datatracker.ietf.org/doc/html/rfc2617#section-2, username and password may be empty strings (""). The validation used to enforce that usernames cannot be empty. - `servicegraphconnector`: update prefix to match the component type (#31023) - `datadog/connector`: Create a separate connector in the Datadog connector for the trace-to-metrics and trace-to-trace pipelines. It should reduce the number of conversions we do and help with Datadog connector performance. (#30828) Simplify datadog/connector with two separate connectors in trace-to-metrics pipeline and trace-to-trace pipeline. - `datadogreceiver`: Set AppVersion to allow Datadog version property to transform properly to service.version resource attribute (#30225) - `cmd/opampsupervisor`: Fix memory leak on shutdown (#30438) - `exporter/datadog`: Fixes a bug where empty histograms were not being sent to the backend in the distributions mode. (#31019) - `pkg/ottl`: Fix parsing of string escapes in OTTL (#23238) - `pkg/stanza`: Recombine operator should always recombine partial logs (#30797) Previously, certain circumstances could result in partial logs being emitted without any recombination. This could occur when using `is_first_entry`, if the first partial log from a source was emitted before a matching "start of log" indicator was found. This could also occur when the collector was shutting down. - `pkg/stanza`: Fix bug where recombine operator's 'overwrite_with' condition was inverted. (#30783) - `exporter/signalfx`: Use "unknown" value for the environment correlation calls as fallback. (#31052) This fixed the APM/IM correlation in the Splunk Observability UI for the users that send traces with no "deployment.environment" resource attribute value set. - `namedpipereceiver`: Fix SIGSEGV when named pipe creation fails (#31088) ## v0.93.0 ### 🛑 Breaking changes 🛑 - `azuremonitorexporter`: Fixed an issue where span attributes with double and int values were incorrectly added to the `measurements` field in the Application Insights schema. These attributes are now correctly placed in the `properties` field. (#29683) - `vcenterreceiver`: Bump "receiver.vcenter.emitPerfMetricsWithObjects" feature gate (#30615) - `docker`: Adopt api_version as strings to correct invalid float truncation (#24025) - `extension/filestorage`: Replace path-unsafe characters in component names (#3148) The feature gate `extension.filestorage.replaceUnsafeCharacters` is now enabled by default. See the File Storage extension's README for details. - `postgresqlreceiver`: add schema attribute to postgresqlreceiver (#29559) Adds a new resource attribute to the PSQL receiver to store the schema of the table or index Existing table attributes are adjusted to not include the schema, which was inconsistently used ### 🚩 Deprecations 🚩 - `mdatagen`: Deprecate mdatagen in preparation for its move to opentelemetry-collector (#30497) ### 🚀 New components 🚀 - `solarwindsapmsettingsextension`: added configuration and readme (#27668) - `alertmanagerexporter`: Add Alertmanager exporter to builder config (#23569) - `otelarrow`: Skeleton of new OpenTelemetry Protocol with Apache Arrow Exporter. (#26491) - `osqueryreceiver`: Adds osquery receiver skeleton (#30375) ### 💡 Enhancements 💡 - `pkg/stanza`: Add a json array parser operator and an assign keys transformer. (#30321) Json array parser operator can be used to parse a json array string input into a list of objects. | Assign keys transformer can be used to assigns keys from the configuration to an input list - `splunkhecexporter`: Batch data according to access token and index, if present. (#30404) - `awscloudwatchlogsexporter`: Add instrumentation scope in log records exported to CloudWatch logs (#30316, #29884) - `cassandraexporter`: added authorization by username and password (#27827) - `lokiexporter`: migrate metrics to use OpenTelemetry (#30170) - `cmd/telemetrygen`: This updates telemetrygen to create multiple child spans per trace and enhances the tool's functionality for load testing the remote tracing backend. (#30687) - `cmd/telemetrygen`: This updates telemetrygen with TLS/mTLS options to test the security of telemetry ingestion services and infrastructure for secure communication. To illustrate the usage, a new example, secure-tracing is added to examples collection. (#29681) - `k8sattributesprocessor`: Apply lifecycle tests to k8sprocessor, change its behavior to report fatal error (#30387) - `k8sclusterreceiver`: add new disabled os.description, k8s.container_runtime.version resource attributes (#30342) - `k8sclusterreceiver`: add os.type resource attribute (#30342) - `kubeletstatsreceiver`: Add new `*.cpu.usage` metrics. (#25901) - `oidcauthextension`: Move validation logic outside of the extension creation, to the configuration validation (#30460) - `datadogexporter`: Add support for setting host tags via host metadata. (#30680) When the `datadog.host.use_as_metadata` resource attribute is set to `true`: - Nonempty string-value resource attributes starting with `datadog.host.tag.` will be added as host tags for the host associated with the resource. - deployment.environment and k8s.cluster.name as mapped to Datadog names and added as host tags for the host associated with the resource. - `opensearchexporter`: added opensearch exporter to the contrib distribution metadata (#30183) - `pkg/ottl`: Add `flatten` function for flattening maps (#30455) - `redisreceiver`: adds metric for slave_repl_offset (#6942) also adds a shell script to set up docker-compose integration test - `exporter/datadogexporter`: Add kafka metrics mapping. This allows users of the JMX Receiver/JMX Metrics Gatherer and kafka metrics receiver to have access to the OOTB kafka Dashboard. (#30731) - `receiver/sqlquery`: Add debug log when running SQL query (#29672) - `cmd/opampsupervisor`: Use a bootstrapping flow to get the Collector's agent description. (#21071) ### 🧰 Bug fixes 🧰 - `receiver/filelog`: fix panic after upgrading from v0.71.0 when using storage (#30235) - `clickhouseexporter`: Fix clickhouse exporter insert metrics data bug (#30210) - `prometheusremotewriteexporter`: Check if the context was canceled by a timeout in the component level to avoid unnecessary retries. (#30308) - `elasticsearchreceiver`: Fix nil panic on non-linux systems (#30140) - `kafkareceiver`: The Kafka receiver now exports some partition-specific metrics per-partition, with a `partition` tag (#30177) The following metrics now render per partition: - kafka_receiver_messages - kafka_receiver_current_offset - kafka_receiver_offset_lag ## v0.92.0 ### 🛑 Breaking changes 🛑 - `httpforwarder`: Use confighttp.HTTPDefaultClientSettings when configuring the HTTPClientSettings for the httpforwarder extension. (#6641) By default, the HTTP forwarder extension will now use the defaults set in the extension: * The idle connection timeout is set to 90s. * The max idle connection count is set to 100. - `pkg/ottl`: Now validates against extraneous path segments that a context does not know how to use. (#30042) - `pkg/ottl`: Throw an error if keys are used on a path that does not allow them. (#30162) - `tanzuexporter`: Remove tanzuexporter, user can still use versions 0.91. (#30184) - `zipkinexporter`: Use default client HTTP settings in zipkinexporter, move validation to config validation (#29931) ### 🚩 Deprecations 🚩 - `mdatagen`: Component is being moved to core to allow it to be used there as well. (#30173) - `k8sclusterreceiver`: deprecate optional k8s.kubeproxy.version resource attribute (#29748) - `configschema`: Deprecating configschema to prefer generating documentation as part of its metadata generation with mdatagen (#30187) ### 🚀 New components 🚀 - `failoverconnector`: PR provides core logic for failover connector and implements failover for trace signals (#20766) - `failoverconnector`: PR extends failover connector for metric and log pipelines (#20766) - `namedpipereceiver`: Add "namedpipereceiver" that allows ingesting logs over a Named Pipe (#27234) ### 💡 Enhancements 💡 - `encoding/jaegerencodingextension`: Add support for JSON protocol for jaeger codec (#6272) - `githubgen`: Adds a set of distribution reports that can be used to notify distribution maintainers of any changes to distributions. (#28628) - `vcenterreceiver`: Add explicit statement of support for version 8 of ESXi and vCenter (#30274) - `carbonexporter`: Add support for resourcetotelemetry (#29879) - `carbonexporter`: Add retry and queue, use standard configs (#29862) - `carbonexporter`: Add ability to configure max_idle_conns (#30109) - `mdatagen`: add Meter/Tracer methods to simplify instrumenting components (#29927) - `servicegraphprocessor`: update own telemetry to use otel (#29917) - `datadogexporter`: DataDog log timestamp (ie. '@timestamp') now includes milliseconds (#29785) - `exporter/elasticsearch`: set the User-Agent header in the outgoing HTTP requests. (#29898) - `elasticsearchexporter`: add missing trace status description in span (#27645) - `routingconnector`: routingconnector supports matching the statement only once (#26353) - `filestatsreceiver`: Add a file.count metric to filestatsreceiver that reports the number of files matched by the receiver (#24651) - `filterprocessor`: Add telemetry for metrics, logs, and spans that were intentionally dropped via filterprocessor. (#13169) - `googlecloudpubsubexporter`: Expose `Endpoint` and `Insecure` in configuration. (#29304) - `exporter/honeycombmarker`: set the User-Agent header in the outgoing HTTP requests (#29894) - `pkg/ottl`: Add Hour OTTL Converter (#29468) - `kafkaexporter`: add ability to publish kafka messages with message key of TraceID - it will allow partitioning of the kafka Topic. (#12318) - `kafkareceiver`: Add three new metrics to record unmarshal errors. (#29302) - `kineticaexporter`: added metrics handling (#27239) - `logzioexporter`: add scopename to exported logs (#20659) when it exists, scope name will be added to exported logs under the scopeName field. - `hostmetricsreceiver`: Add `system.memory.limit` metric reporting the total memory available. (#30306) This metric is opt-in. To enable it, set `scrapers::memory::metrics::system.memory.limit::enabled` to `true` in the hostmetrics config. - `datadogexporter`: Add support for more semantic conventions related to host metadata (#30158) The following semantic conventions are now detected for host metadata: - `host.ip` - `host.mac` - `system.cpu.physical.count` - `system.cpu.logical.count` - `system.cpu.frequency` - `system.memory.limit` - `prometheusexporter`: Accumulate histograms with delta temporality (#4968) - `kafkaexporter`: Adds the ability to configure the Kafka client's Client ID. (#30144) - `pkg/stanza`: Remove sampling policy from logger (#23801) - `resourcedetectionprocessor`: Add "aws.ecs.task.id" attribute (#8274) Resourcedetectionprocessor now exports "aws.ecs.task.id" attribute, in addition to "aws.ecs.task.arn". This allows exporters like "awsemfexporter" to automatically pick up that attribute and make it available in templating (e.g. to use in CloudWatch log stream name). - `spanmetricsconnector`: Fix OOM issue for spanmetrics by limiting the number of exemplars that can be added to a unique dimension set (#27451) - `connector/spanmetrics`: Configurable resource metrics key attributes, filter the resource attributes used to create the resource metrics key. (#29711) This enhancement can be used to fix broken spanmetrics counters after a span producing service restart, when resource attributes contain dynamic/ephemeral values (e.g. process id). - `splunkhecreceiver`: Returns json response in raw endpoint when it is successful (#20766) - `logicmonitorexporter`: add support for log resource mapping configurations (#29732) - `sqlqueryreceiver`: Swap MS SQL Server driver from legacy 'denisenkom' to official Microsoft fork (#27200) ### 🧰 Bug fixes 🧰 - `awsemfexporter`: AWS EMF Exporter will drop metrics that contain Inf values to avoid JSON marshal errors. (#29336) - `azuretranslatorpkg`: When receiving data from Azure some data does not meet the Common Specifications when sending the timestamp. Allow the attribute timeStamp to be used as an alternative to the standard time. (#28806) - `datadogconnector`: Add feature flag to address memory issue with Datadog Connector (#29755) - `filterset`: Fix concurrency issue when enabling caching. (#11829) - `pkg/ottl`: Fix issue with the hash value of a match subgroup in replace_pattern functions. (#29409) - `opampsupervisor`: Fix panic on agent shutdown (#29955) - `prometheusreceiver`: Fix configuration validation to allow specification of Target Allocator configuration without providing scrape configurations (#30135) - `carbonexporter`: Fix metric with empty numberdatapoint serialization (#30182) - `wavefrontreceiver`: Return error if partially quoted (#30315) - `hosmetricsreceiver`: change cpu.load.average metrics from 1 to {thread} (#29914) - `bearertokenauthextension`: Http receiver trying to get the authorization with the lower case from headers, But The headers from Http is received as Authorization capitalcase even-though we sent in lower case and Always return 401 Unauthorized (#24656) - `pkg/ottl`: Fix bug where the Converter `IsBool` was not usable (#30151) - `prometheusremotewriteexporter`: sanitize retry default settings (#30286) - `snowflakereceiver`: Fixed bug where storage metrics for snowflake were not being reported (#29750) - `apachesparkreceiver`: propagate application list errors to reveal underlying issue (#30278) - `haproxyreceiver`: Support empty values in haproxy stats. (#30252) - `time`: The `%z` strptime format now correctly parses `Z` as a valid timezone (#29929) `strptime(3)` says that `%z` is "an RFC-822/ISO 8601 standard timezone specification", but the previous code did not allow the string "Z" to signify UTC time, as required by ISO 8601. Now, both `+0000` and `Z` are recognized as UTC times in all components that handle `strptime` format strings. ## v0.91.0 ### 🚀 New components 🚀 - `alertmanagerexporter`: Add Alertmanager exporter implementation and tests (#23569) ### 💡 Enhancements 💡 - `spanmetricsconnector`: Add exemplars to sum metric (#27451) - `exporter/datadogexporter`: Add support for nested log attributes. (#29633) - `jaegerreceiver,jaegerremotesamplingextension`: mark featuregates to replace Thrift-gen with Proto-gen types for sampling strategies as stable (#27636) The following featuregates are stable: - extension.jaegerremotesampling.replaceThriftWithProto - receiver.jaegerreceiver.replaceThriftWithProto - `awsemfexporter/awscloudwatchlogsexporter`: Add component name to user agent header for outgoing put log even requests (#29595) - `elasticsearchexporter`: Logstash format compatibility. Traces or Logs data can be written into an index in logstash format. (#29624) - `extension/opampextension`: Implement `extension.NotifyConfig` to be notified of the Collector's effective config and report it to the OpAMP server. (#27293) - `receiver/influxdbreceiver`: Endpoint `/ping` added to enhance compatibility with third party products (#29594) - `kafkareceiver`: Add the ability to consume logs from Azure Diagnostic Settings streamed through Event Hubs using the Kafka API. (#18210) - `resourcedetectionprocessor`: Add detection of host.ip to system detector. (#24450) - `resourcedetectionprocessor`: Add detection of host.mac to system detector. (#29587) - `pkg/ottl`: Add `silent` ErrorMode to allow disabling logging of errors that are ignored. (#29710) - `postgresqlreceiver`: Add config property for excluding specific databases from scraping (#29605) - `redisreceiver`: Upgrade the redis library dependency to resolve security vulns in v7 (#29600) - `signalfxexporter`: Enable HTTP/2 health check by default (#29716) - `splunkhecexporter`: Enable HTTP/2 health check by default (#29717) - `statsdreceiver`: Add support for 'simple' tags that do not have a defined value, to accommodate DogStatsD metrics that may utilize these. (#29012) This functionality is gated behind a new `enable_simple_tags` config boolean, as it is not part of the StatsD spec. ### 🧰 Bug fixes 🧰 - `exporter/prometheusremotewrite`: prometheusremotewrite exporter fix created metrics missing timestamp (#24915) - `connector/spanmetrics`: Fix memory leak when the cumulative temporality is used. (#27654) - `awscontainerinsightreceiver`: Filter terminated pods from node request metrics (#27262) - `clickhouseexporter`: Fix regression error introduced in #29095 (#29573) - `prometheusexporter`: Fix panic when exporter mutates data (#29574) - `splunkhecexporter`: Do not send null event field values in HEC events. Replace null values with an empty string. (#29551) - `k8sobjectsreceiver`: fix k8sobjects receiver fails when some unrelated Kubernetes API is down (#29706) - `resourcedetectionprocessor`: Change type of `host.cpu.model.id` and `host.cpu.model.family` from int to string. (#29025) - Disable the `processor.resourcedetection.hostCPUModelAndFamilyAsString` feature gate to get the old behavior. - `Fix problem where checkpoints could be lost when collector is shutdown abruptly`: filelogreceiver (#29609, #29491) - `googlecloudspannerreceiver`: Google Cloud Spanner Receiver currently generates an exception and exits if it attempts to read data from a database that doesn't exist. However it's normal for a single receiver to poll multiple databases, so this is not graceful failure. This PR makes a change to gracefully generate an error in case of an unreadable missing database and then continue reading other databases.. (#26732) - `pkg/stanza`: Allow `key_value_parser` to parse values that contain the delimiter string. (#29629) ## v0.90.1 ### 🧰 Bug fixes 🧰 - `exporters`: Upgrade core dependency to remove noisy "Exporting finished" log message in exporters. (#29612) ## v0.90.0 ### 🛑 Breaking changes 🛑 - `dockerstatsreceiver`: Add [container.cpu.limit], [container.cpu.shares] and [container.restarts] metrics from docker container api (#21087) It requires API version 1.25 or greater. ### 🚀 New components 🚀 - `failoverconnector`: New component that will allow for pipeline failover triggered by the health of target downstream exporters (#20766) - `gitproviderreceiver`: add repo, branch, and contributor count metrics (#22028) ### 💡 Enhancements 💡 - `opensearchexporter`: Promote opensearchexporter to alpha. (#24668) - `awsemfexporter`: Improve NaN value checking for Summary metric types. (#28894) - `awsemfexporter`: Logs relating to the start and finish of processing metrics have been reduced to debug level (#29337) - `azuremonitorreceiver`: Support Azure gov cloud (#27573) - `clickhouseexporter`: Added support for more control over TTL configuration. Currently, it supports timelines only in days, now also in hours, minutes and seconds (propertyName ttl_days --> ttl). (#28675) - `datasetexporter`: Collect usage metrics with Otel and send grouped attributes in session info. (#27650, #27652) - `resourcedetectionprocessor`: Add k8s cluster name detection when running in EKS (#26794) - `pkg/ottl`: Add new IsDouble function to facilitate type checking. (#27895) - `configschema`: Generate metadata for connectors. (#26990) - `telemetrygen`: Exposes the span duration as a command line argument `--span-duration` (#29116) - `honeycombmarkerexporter`: Change honeycombmarkerexporter to alpha (#27666) - `mysqlreceiver`: expose tls in mysqlreceiver (#29269) If `tls` is not set, the default is to disable TLS connections. - `processor/transform`: Convert between sum and gauge in metric context when alpha feature gate `processor.transform.ConvertBetweenSumAndGaugeMetricContext` enabled (#20773) - `receiver/mongodbatlasreceiver`: adds project config to mongodbatlas metrics to filter by project name and clusters. (#28865) - `pkg/stanza`: Add "namedpipe" operator. (#27234) - `pkg/resourcetotelemetry`: Do not clone data in pkg/resourcetotelemetry by default (#29327) - The resulting consumer will be marked as `MutatesData` instead - `pkg/stanza`: Improve performance by not calling decode when nop encoding is defined (#28899) - `exporter/prometheusremotewrite`: prometheusremotewrite exporter add option to send metadata (#13849) - `receivercreator`: Added support for discovery of endpoints based on K8s services (#29022) By discovering endpoints based on K8s services, a dynamic probing of K8s service leveraging for example the httpcheckreceiver get enabled - `signalfxexporter`: change default timeout to 10 seconds (#29436) - `awss3exporter`: add support for `s3_force_path_style` and `disable_ssl` parameters (#29331) In order to support alternative object-storage, these parameters are useful and help to leverage those systems not compatible with domain style path, or just hosted without ssl (like just deployed in a k8s namespace). - `hostmetricsreceiver`: Add optional Linux-only metric `system.linux.memory.available` (#7417) This is an alternative to `system.memory.usage` metric with `state=free`. Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values. This is supposed to be more accurate than just "free" memory. For reference, see the calculations referenced in [What is the difference between MemFree and MemAvailable in /proc/meminfo](https://superuser.com/a/980821). See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). - `azuremonitorexporter`: Updated Azure Monitor Exporter service version from v2.0 to v2.1. (#29234) ### 🧰 Bug fixes 🧰 - `cassandraexporter`: Exist check for keyspace and dynamic timeout (#27633) - `datadogreceiver`: Fix set telemetry.sdk.language=dotnet instead of .NET (#29459) - `filelogreceiver`: Fix issue where files were unnecessarily kept open on Windows (#29149) - `receiver/activedirectoryds`: Fix shutdown of `activedirectorydsreceiver` when shutdown was called right after creation, without a corresponding start call. (#29505) - `honeycombmarkerexporter`: Fix default api_url and dataset_slug (#29309) - `influxdbexporter`: When InfluxDB v1 compatibility is enabled AND username&password are set, the exporter panics. Not any more! (#27084) - `mongodbreceiver`: add `receiver.mongodb.removeDatabaseAttr` Alpha feature gate to remove duplicate database name attribute (#24972) - `pkg/stanza`: Fix panic during stop for udp async mode only. (#29120) ## v0.89.0 ### 🛑 Breaking changes 🛑 - `pkg/stanza`: Improve parsing of Windows Event XML by handling anonymous `Data` elements. (#21491) This improves the contents of Windows log events for which the publisher manifest is unavailable. Previously, anonymous `Data` elements were ignored. This is a breaking change for users who were relying on the previous data format. - `processor/k8sattributes`: Graduate "k8sattr.rfc3339" feature gate to Beta. (#28817) Time format of `k8s.pod.start_time` attribute value migrated from RFC3339: Before: 2023-07-10 12:34:39.740638 -0700 PDT m=+0.020184946 After: 2023-07-10T12:39:53.112485-07:00 The feature gate can be temporary reverted back by adding `--feature-gate=-k8sattr.rfc3339` to the command line. - `filelogreceiver`: Change "Started watching file" log behavior (#28491) Previously, every unique file path which was found by the receiver would be remembered indefinitely. This list was kept independently of the uniqueness / checkpointing mechanism (which does not rely on the file path). The purpose of this list was to allow us to emit a lot whenever a path was seen for the first time. This removes the separate list and relies instead on the same mechanism as checkpointing. Now, a similar log is emitted any time a file is found which is not currently checkpointed. Because the checkpointing mechanism does not maintain history indefinitely, it is now possible that a log will be emitted for the same file path. This will happen when no file exists at the path for a period of time. - `dockerstatsreceiver`: cpu.container.percent metric is removed in favor of container.cpu.utilization (#21807) The metric `container.cpu.percentage` is now removed. `container.cpu.utilization` is enabled by default as a replacement. For details, see the [docs](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/dockerstatsreceiver#transition-to-cpu-utilization-metric-name-aligned-with-opentelemetry-specification). - `encoding extensions`: Rename encoding extensions for consistency with storage extensions (#24451) - `jaegerencoding` -> `jaeger_encoding` - `otlpencoding` -> `otlp_encoding` - `textencoding` -> `text_encoding` - `zipkinencoding` -> `zipkin_encoding` - `remoteobserverprocessor`: Rename remoteobserverprocessor to remotetapprocessor (#27873) - `collectdreceiver`: Stop using opencensus metrics, use the obsrecv format (#25148) ### 🚩 Deprecations 🚩 - `datadogexporter`: Deprecate config `traces::peer_service_aggregation` in favor of `traces::peer_tags_aggregation` (#29089) - `postgresqlreceiver`: Deprecation of postgresql replication lag metrics `postgresql.wal.lag` in favor of more precise 'postgresql.wal.delay' (#26714) ### 🚀 New components 🚀 - `extension/opampextension`: Add a new extension that implements an OpAMP agent for reporting the collector's health and effective configuration. (#16462) - `sumologicprocessor`: add Sumo Logic Processor (#23946) move processor from https://github.com/SumoLogic/sumologic-otel-collector/ repository - `alertmanagerexporter`: Add new exporter for sending events as alerts to Alertmanager (#23569) - `remotetapextension`: Add a new extension, remotetapextension to use with the remoteobserverprocessor processors. (#19634) - `otlpencodingextension`: Introduce OTLP encoding extension (#6272) - `pkg/translator/azure`: Create a translator for Azure Resource Log format (#18210) ### 💡 Enhancements 💡 - `awsxrayexporter`: Convert individual HTTP error events into exceptions within subsegments for AWS SDK spans and strip AWS.SDK prefix from remote aws service name (#27232) - `azuremonitorexporter`: Added connection string support to the Azure Monitor Exporter (#28853) This enhancement simplifies the configuration process and aligns the exporter with Azure Monitor's recommended practices. The Connection String method allows the inclusion of various fields such as the InstrumentationKey and IngestionEndpoint within a single string, facilitating an easier and more integrated setup. While the traditional InstrumentationKey method remains supported for backward compatibility, it will be phased out. Users are encouraged to adopt the Connection String approach to ensure future compatibility and to leverage the broader configuration options it enables. - `opensearchexporter`: Add log exporting capability to the opensearchexporter. (#23611) - `pdatatest`: Allow to compare metrics resource attributes or metric attribute values by matching on a portion of the dimension value with a regular expression. (#27690) Use `MatchResourceAttributeValue("node_id", "cloud-node")` to match two metrics with a resource attribute value that starts with "cloud-node". Use `MatchMetricAttributeValue("hostname", "container-tomcat-", "gauge.one", "sum.one")` to match metrics with the `hostname` attribute starting with `container-tomcat-`. - `processor/tailsampling`: adds optional upper bound duration for sampling (#26115) - `clickhouseexporter`: Add persistent storage support to clickhouse exporter (#27653) - `azuremonitorexporter`: Added documentation to describe how to use with the AAD Auth Proxy and enable AAD based authentication. (#24451) - `azuremonitorexporter`: Extended Azure Monitor exporter to support persistent queue. Default is for QueueSettings.Enabled to be false. (#25859) - `collectdreceiver`: Add support of confighttp.HTTPServerSettings (#28811) - `collectdreceiver`: Promote collectdreceiver as beta component (#28658) - `receiver/hostmetricsreceiver`: Added support for host's cpuinfo frequnecies. (#27445) In Linux the current frequency is populated using the values from /proc/cpuinfo. An os specific implementation will be needed for Windows and others. - `datadogexporter`: Add a new traces config `trace_buffer` that specifies the number of outgoing trace payloads to buffer before dropping. (#28577) If you start seeing log messages like `Payload in channel full. Dropped 1 payload.` in the datadog exporter, consider setting a higher `trace_buffer` to avoid traces being dropped. - `datadogexporter`: Add a new config `traces::peer_tags_aggregation` that enables aggregation of peer related tags in Datadog exporter (#29089) - `receiver/hostmetrics/scrapers/process`: add configuration option to mute `error reading username for process` (#14311, #17187) - `syslogexporter`: Promote syslogexporter to alpha and add it to otelcontribcol (#21242, #21244, #21245) - `azureevenhubreceiver`: Allow the Consumer Group to be set in the Configuration. (#28633) - `spanmetricsconnector`: Add Events metric to span metrics connector that adds list of event attributes as dimensions (#27451) - `exceptionsconnector`: Add trace id and span id to generated logs from exceptions when using exceptionsconnector. (#24407) - `processor/k8sattribute`: support adding labels and annotations from node (#22620) - `windowseventlogreceiver`: Add parsing for Security and Execution event fields. (#27810) - `filelogreceiver`: Add the ability to order files by mtime, to only read the most recently modified files (#27812) - `wavefrontreceiver`: Wrap metrics receiver under carbon receiver instead of using export function (#27248) - `exporter/datadog`: Added the "exporter.datadogexporter.DisableAPMStats" feature gate to disable APM stats computation. (#28615) - `pkg/ottl`: Add IsBool function into OTTL (#27897) - `k8sclusterreceiver`: add k8s.node.condition metric (#27617) - `kafka`: Expose resolve_canonical_bootstrap_servers_only (#26022) - `mongodbatlasreceiver`: Enhanced collector logs to include more information about the MongoDB Atlas API calls being made during logs retrieval. (#28851) - `datadogexporter`: Add support for host.cpu attributes. (#29156) - `datadogexporter`: Add support for custom container tags via resource attributes prefixed by `datadog.container.tag.*`. (#29156) - `receiver/mongodbatlasreceiver`: emit resource attributes "`mongodb_atlas.region.name`" and "`mongodb_atlas.provider.name`" on metric scrape. (#28833) - `pkg/golden`: Move the internal/coreinternal/golden folder to pkg/golden (#28594) - `processor/resourcedetection`: Add `processor.resourcedetection.hostCPUModelAndFamilyAsString` feature gate to change the type of `host.cpu.family` and `host.cpu.model.id` attributes from `int` to `string`. (#29025) This feature gate will graduate to beta in the next release. - `tailsamplingprocessor`: Optimize performance of tailsamplingprocessor (#27889) - `redisreceiver`: include server.address and server.port resource attributes (#22044) - `servicegraphprocessor, servicegraphconnector`: Add a config option to periodically flush metrics, instead of flushing on every push. (#27679) - `spanmetricsconnector`: Add exemplars to sum metric (#27451) - `exporter/syslog`: send syslog messages in batches (#21244) This changes the behavior of the Syslog exporter to send each batch of Syslog messages in a single request (with messages separated by newlines), instead of sending each message in a separate request and closing the connection after each message. - `cmd/telemetrygen`: Use exporter per worker for better metrics throughput (#26709) - `cmd/telemetrygen`: Add support for --otlp-http for telemetrygen logs (#18867) - `exporter/awss3exporter`: This feature allows role assumption for s3 exportation. It is especially useful on Kubernetes clusters that are using IAM roles for service accounts (#28674) ### 🧰 Bug fixes 🧰 - `lokiexporter`: The tenant attribute is now not automatically promoted to a label. (#21045) To add tenant attributes (resource/record) to labels, use the label hints explicitly. - `azuretranslator`: Allow numeric fields to use a String or Integer representation in JSON. (#28650) - `extension/zipkinencodingextension`: Fix bug when err is nil if invalid protocol value is supplied. (#28686) - `filelogreceiver`: Fix issue where counting number of logs emitted could cause panic (#27469, #29107) - `lokireceiver`: Fix issue where counting number of logs emitted could cause panic (#27469, #29107) - `kafkareceiver`: Fix issue where counting number of logs emitted could cause panic (#27469, #29107) - `k8sobjectsreceiver`: Fix issue where counting number of logs emitted could cause panic (#27469, #29107) - `fluentforwardreceiver`: Fix issue where counting number of logs emitted could cause panic (#27469, #29107) - `otlpjsonfilereceiver`: Fix issue where counting number of logs emitted could cause panic (#27469, #29107) - `datadogconnector`: Mark datadogconnector as `MutatesData` to prevent data race (#29111) - `azureeventhubreceiver`: Updated documentation around Azure Metric to OTel mapping. (#28622) - `receiver/hostmetrics`: Fix panic on load_scraper_windows shutdown (#28678) - `apachesparkreceiver`: Replacing inaccurate units for the spark.job.stage.active and spark.job.stage.result metrics for the Apache Spark receiver. (#29104) - `splunkhecreceiver`: Do not encode JSON response objects as string. (#27604) - `processor/k8sattributes`: Set attributes from namespace/node labels or annotations even if node/namespaces attribute are not set. (#28837) - `datadogexporter`: Only extract DD container tags from resource attributes. Previously, container tags were also extracted from span attributes. (#29156) - `datadogexporter`: Only add container tags in dedicated container tag section. Previously, container tags were also added as span tags. Container tags will now only be accessible via the span container tab, and not as span tags. (#29156) - `pkg/stanza`: Fix data-corruption/race-condition issue in udp async (reuse of buffer); use buffer pool instead. (#27613) - `datadogexporter`: Fixes potential log records loss on a transient network/connectivity error (#24550) The Datadog exporter threats network/connectivity errors (http client doesn't receive a response) as permanent errors, which can lead to log records loss. This change makes these errors retryable. - `servicegraphprocessor, servicegraphconnector`: Measure latency in seconds instead of milliseconds (#27488) Measures latency in seconds instead of milliseconds, as the metric name indicates. Previously, milliseconds was used. This unit is still available via the feature gate `processor.servicegraph.legacyLatencyUnitMs`. This is a breaking change. - `sshcheckreceiver`: Use key_file instead of keyfile for the key in config. Aligns project practice, code, and docs. (#27035) - `zipkinreceiver`: Return BadRequest in case of permanent errors (#4335) ## v0.88.0 ### 🛑 Breaking changes 🛑 - `k8sclusterreceiver`: Remove opencensus.resourcetype resource attribute (#26487) - `splunkhecexporter`: Remove `max_connections` configuration setting. (#27610) use max_idle_conns or max_idle_conns_per_host instead. - `signalfxexporter`: Remove `max_connections` configuration setting. (#27610) use max_idle_conns or max_idle_conns_per_host instead. ### 🚩 Deprecations 🚩 - `dockerstatsreceiver`: cpu.container.percent metric will be deprecated in v0.79.0 in favor of container.cpu.utilization (#21807) The metric `container.cpu.percentage` is now disabled by default and will be removed in v0.88.0. As a replacement, the following metric is now enabled by default: `container.cpu.utilization`. For details, see the [docs](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/dockerstatsreceiver#transition-to-cpu-utilization-metric-name-aligned-with-opentelemetry-specification). - `parquetexporter`: Remove the parquet exporter (#27284) ### 🚀 New components 🚀 - `encoding/jsonlogencodingextension`: Add a new extension to support JSON encoding (only logs) (#6272) - `honeycombmarkerexporter`: This component will export markers to be consumed by the Honeycomb Markers API to highlight user events (#26653) - `zipkinencodingextension`: Introduce zipkin encoding extension. (#6272) ### 💡 Enhancements 💡 - `datasetexporter`: Make export of resources and scopes more flexible (#27651, #27649) - `pkg/stanza`: Add option to run udp logs receiver (and stanza udp input operator) concurrently to reduce data-loss during high-scale scenarios (#27613) - `receiver/prometheus`: Warn instead of failing when users rename using metric_relabel_configs in the prometheus receiver (#5001) - `awscloudwatchlogsexporter/awsemfexporter`: Reduce noisy logs emitted by CloudWatch Logs Pusher. (#27774) The Collector logger will now write successful CloudWatch API writes at the Debug level instead of Info level. - `k8sobjectsreceiver`: Move k8sobjectsreceiver from Alpha stability to Beta stability for logs. (#27635) - `datadogconnector`: Allow datadogconnector to be used as a traces-to-traces connector (#27846) - `doubleconverter`: Adding a double converter into pkg/ottl (#22056) - `syslogreceiver`: validate protocol name (#27581) - `elasticsearchexporter`: add missing scope info in span attributes (#27282) - `extension/storage/filestorage`: Add support for setting bbolt fsync option (#20266) - `filelogreceiver`: Add a new "top_n" option to specify the number of files to track when using ordering criteria (#23788) - `azuredataexplorerexporter`: Added exporter helper config support for Azure Data Explorer exporter (#24329) - `k8sclusterreceiver`: add optional k8s.pod.qos_class resource attribute (#27483) - `pkg/stanza`: Log warning, instead of error, when Windows Event Log publisher metadata is not available and cache the successfully retrieved ones. (#27658) - `pkg/ottl`: Add optional Converter parameters to replacement Editors (#27235) Functions to modify matched text during replacement can now be passed as optional arguments to the following Editors: - `replace_pattern` - `replace_all_patterns` - `replace_match` - `replace_all_matches` - `awscloudwatchlogsexporter`: Improve the performance of the awscloudwatchlogsexporter (#26692) Improve the performance by adding support to multiple consumers and removing locks and limiters that are no longer necessary. - `pkg/pdatatest`: support ignore timestamps in span comparisons for pdatatest (#27688) - `prometheusremotewriteexporter`: addition of `max_batch_size_bytes` configurable parameter, to allow users to adjust it based on the capabilities of their specific remote storage (#21911) - `pkg/pdatatest`: support ignore span attribute value in span comparisons for ptracetest (#27689) - `pkg/pdatatest`: support ignore span ID in span comparisons for ptracetest (#27685) - `pkg/pdatatest`: support ignore trace ID in span comparisons for ptracetest (#27687) - `pkg/stanza`: When async is enabled for udp receiver, separate logic into readers (only read logs from udp port and push to channel), and processors (read logs from channel and process; decode, split, add attributes, and push downstream), allowing to change concurrency level for both readers and processors separately. (#27613) - `signalfxexporter`: Add an option to control the dimension client timeout (#27815) - `signalfxexporter`: Add the build version to the user agent of the SignalFx exporter (#16841) - `splunkentreceiver`: Users can now use auth settings and basicauth extension to connect to their Splunk enterprise deployments (#27026) ### 🧰 Bug fixes 🧰 - `datasetexporter`: Do not crash on NPE when any of the attributes contains null value. (#27648) - `syslog`: add integration tests and fix related bugs (#21245) - `processor/resourcedetection`: Don't parse the field `cpuInfo.Model` if it's blank. (#27678) - `k8sclusterreceiver`: Change clusterquota and resourcequota metrics to use {resource} unit (#10553) - `cmd/telemetrygen`: Fix `go install` for telemetrygen (#27855) - `pkg/ottl`: Fix bug where named parameters needed a space after the equal sign (`=`). (#28511) - `filelogreceiver`: Fix issue where batching of files could result in ignoring start_at setting. (#27773) - `prometheusremotewrite`: Fix remote write exporter not respecting retrySettings.enabled flag (#27592) - `redactionprocessor`: Fix mask when multiple patterns exist (#27646) ## v0.87.0 ### 🛑 Breaking changes 🛑 - `receiver/kubeletstats`: Fixes a bug where the "insecure_skip_verify" config was not being honored when "auth_type" is "serviceAccount" in kubelet client. (#26319) Before the fix, the kubelet client was not verifying kubelet's certificate. The default value of the config is false, so with the fix the client will start verifying tls cert unless the config is explicitly set to true. - `parquetexporter`: Deprecate the Parquet Exporter, it will be removed in the next release. (#27284) - `bug_fix`: Improve counting for the `count_traces_sampled` metric (#25882) - `extension/filestorage`: Replace path-unsafe characters in component names (#3148) ### 🚩 Deprecations 🚩 - `resourcedetectionprocessor`: Detect faas.instance in the gcp detector, and deprecate detecting faas.id in the gcp detector. (#26486) faas.id has been removed from the semantic conventions. - `k8sclusterreceiver`: Deprecate opencensus.resourcetype resource attribute (#26487) opencensus.resourcetype resource attribute is deprecated and disabled by default. ### 🚀 New components 🚀 - `encodingextension`: Add implementation of encodingextension (#6272) ### 💡 Enhancements 💡 - `processor/probabilisticsampler`: Allow non-bytes values to be used as the source for the sampling decision (#18222) - `receiver/azuremonitorreceiver`: Add support for authenticating using AD workload identity (#24451) - `kafkareceiver`: Allow users to attach kafka header metadata with the log/metric/trace record in the pipeline. Introduce a new config param, 'header_extraction' and some examples. (#24367) - `exporter/kafkaexporter`: Adding Zipkin encoding option for traces to kafkaexporter (#21102) - `kubeletstatsreceiver`: Support specifying context for `kubeConfig` `auth_type` (#26665) - `kubeletstatsreceiver`: Adds new `k8s.pod.cpu_limit_utilization`, `k8s.pod.cpu_request_utilization`, `k8s.container.cpu_limit_utilization`, and `k8s.container.cpu_request_utilization` metrics that represent the ratio of cpu used vs set limits and requests. (#27276) - `kubeletstatsreceiver`: Adds new `k8s.pod.memory_limit_utilization`, `k8s.pod.memory_request_utilization`, `k8s.container.memory_limit_utilization`, and `k8s.container.memory_request_utilization` metrics that represent the ratio of memory used vs set limits and requests. (#25894) - `filestatsreceiver`: Move the filestats receiver to beta stability (#27252) - `haproxyreceiver`: Move the haproxyreceiver to beta stability (#27254) - `splunkentreceiver`: adding additional metrics to the splunkentreceiver (#12667) - `cmd/telemetrygen`: Add support for custom telemetry attributes (#26505) ### 🧰 Bug fixes 🧰 - `processor/spanmetrics`: Prune histograms when dimension cache is pruned. (#27080) Dimension cache was always pruned but histograms were not being pruned. This caused metric series created by processor/spanmetrics to grow unbounded. - `syslogexporter`: use proper defaults according to RFCs (#25114) - `syslogparser`: return correct structure from syslog parser (#27414) - `splunkhecreceiver`: Fix receiver behavior when used for metrics and logs at the same time; metrics are no longer dropped. (#27473) - `metricstransformprocessor`: Fixes a nil pointer dereference when copying an exponential histogram (#27409) - `telemetrygen`: better defaults for http exporter mode (#26999) - the url path default is now correct for both traces and metrics - when not provided, the endpoint is automatically set to target a local gRPC or HTTP endpoint depending on the communication mode selected - `k8sclusterreceiver`: change k8s.container.ready, k8s.pod.phase, k8s.pod.status_reason, k8s.namespace.phase units to empty (#10553) - `k8sclusterreceiver`: Change k8s.node.condition* metric units to empty (#10553) - `syslogreceiver`: Fix issue where long tokens would be truncated prematurely (#27294) - `mongodbreceiver`: Fix mongo version not being collected (#27441) ## v0.86.0 ### 🛑 Breaking changes 🛑 - `jaegerexporter, jaegerthrifthttpexporter`: Removing deprecated jaeger and jaegerthrifthttp exporters (#26546) This follows the deprecation plan to remove the component. The original removal date was July 2023, it is now past that. - `receiver/nginx`: Bump 'nginx.connections_current' gate to stable (#27024) ### 💡 Enhancements 💡 - `processor/tailsampling`: Allow sub-second decision wait time (#26354) - `processor/resourcedetection`: Added support for host's cpuinfo attributes. (#26532) In Linux and Darwin all fields are populated. In Windows only family, vendor.id and model.name are populated. - `pkg/stanza`: Add 'omit_pattern' setting to `split.Config`. (#26381) This can be used omit the start or end pattern from a log entry. - `skywalkingreceiver`: implement receiver for JVM metrics in Skywalking and adapted it to the OpenTelemetry protocol. (#20315) - `statsdreceiver`: Add TCP support to statsdreceiver (#23327) - `azuredataexplorerexporter`: Added an optional column in the exported trace data to store the status code and message as a dynamic field. (#26496) - `statsdreceiver`: Allow for empty tag sets (#27011) - `pkg/ottl`: Update contexts to set and get time.Time (#22010) - `pkg/ottl`: Add a Now() function to ottl that returns the current system time (#27038, #26507) - `filelogreceiver`: Log the globbing IO errors (#23768) - `exporter/loadbalancing`: Allow metrics routing (#25858) - `pkg/ottl`: Allow named arguments in function invocations (#20879) Arguments can now be specified by a snake-cased version of their name in the function's `Arguments` struct. Named arguments can be specified in any order, but must be specified after arguments without a name. - `pkg/ottl`: Add new `TruncateTime` function to help with manipulation of timestamps (#26696) - `pkg/stanza`: Add 'overwrite_text' option to severity parser. (#26671) Allows the user to overwrite the text of the severity parser with the official string representation of the severity level. - `prometheusreceiver`: add a new flag, enable_protobuf_negotiation, which enables protobuf negotiation when scraping prometheus clients (#27027) - `redisreceiver`: Added `redis.cmd.latency` metric. (#6942) - `processor/resourcedetectionprocessor`: add k8snode detector to provide node metadata; currently the detector provides `k8d.node.uid` (#26538) - `routingconnector`: Change routingconnector stability to alpha (#26495) - `supported platforms`: Add `linux/s390x` architecture to cross build tests in CI (#25138) - `telemetrygen`: Move the telemetrygen tool to use gRPC logging at warn level, in line with otlpgrpc. (#26659) - `splunkentreceiver`: adding component logic to splunkenterprise receiver (#12667) - `splunkhecreceiver`: Update splunk hec receiver to extract time query parameter if it is provided (#27006) - `cmd/telemetrygen`: Add CLI option for selecting different metric types (#26667) - `cloudflarereceiver`: Make TLS config optional for cloudflarereceiver (#26562) - `receiver/awscontainerinsightsreceiver`: Remove the need to set an env var in the receiver to get CPU and memory info (#24777) - `awsxrayexporter`: Change `exporter.awsxray.skiptimestampvalidation` feature gate from Alpha to Beta (#26553) - `processor/k8sattributes`: allow metadata extractions to be set to empty list (#14452) ### 🧰 Bug fixes 🧰 - `processor/tailsampling`: Prevent the tail-sampling processor from accepting duplicate policy names (#27016) - `awsemfexporter`: AWS EMF Exporter will not drop any metrics that contain NaN values to avoid JSON marshal errors. (#26267) - `k8sclusterreceiver`: Change k8s.deployment.available and k8s.deployment.desired metric units to {pod} (#10553) - `awsxrayexporter`: Restore the AWS X-Ray metadata structure when exporting. (#23610) - `telemetrygen`: remove need for JSON unmarshalling of trace status codes and unsupport mixed case input (#25906) - `haproxyreceiver`: Remove unused resource attributes. (#24920) - `k8sclusterreceiver`: Change k8scluster receiver metric units to follow otel semantic conventions (#10553) - `pkg/stanza`: Fix bug where force_flush_period not applied (#26691) - `filelogreceiver`: Fix issue where truncated file could be read incorrectly. (#27037) - `receiver/hostmetricsreceiver`: Make sure the process scraper uses the gopsutil context, respecting the `root_path` configuration. (#24777) This regression was introduced by #24777 - `k8sclusterreceiver`: change k8s.container.restarts unit from 1 to {restart} (#10553) ## v0.85.0 ### 🛑 Breaking changes 🛑 - `k8sclusterreceiver`: Remove deprecated Kubernetes API resources (#23612, #26551) Drop support of HorizontalPodAutoscaler v2beta2 version and CronJob v1beta1 version. Note that metrics for those resources will not be emitted anymore on Kubernetes 1.22 and older. - `prometheusexporters`: Append prometheus type and unit suffixes by default in prometheus exporters. (#26488) Suffixes can be disabled by setting add_metric_suffixes to false on the exporter. - `attributesprocessor, resourceprocessor`: Transition featuregate `coreinternal.attraction.hash.sha256` to stable (#4759) ### 💡 Enhancements 💡 - `postgresqlreceiver`: Added `postgresql.database.locks` metric. (#26317) - `receiver/statsdreceiver`: Add support for distribution type metrics in the statsdreceiver. (#24768) - `pkg/ottl`: Add converters to convert time to unix nanoseconds, unix microseconds, unix milliseconds or unix seconds (#24686) - `oauth2clientauthextension`: Enable dynamically reading ClientID and ClientSecret from files (#26117) - Read the client ID and/or secret from a file by specifying the file path to the ClientIDFile (`client_id_file`) and ClientSecretFile (`client_secret_file`) fields respectively. - The file is read every time the client issues a new token. This means that the corresponding value can change dynamically during the execution by modifying the file contents. - `receiver/hostmetrics`: Don't collect connections data from the host if system.network.connections metric is disabled to not waste CPU cycles. (#25815) - `jaegerreceiver,jaegerremotesamplingextension`: Add featuregates to replace Thrift-gen with Proto-gen types for sampling strategies (#18401) Available featuregates are: - extension.jaegerremotesampling.replaceThriftWithProto - receiver.jaegerreceiver.replaceThriftWithProto - `influxdbexporter`: Add user-configurable LogRecord dimensions (otel attributes -> InfluxDB tags) (#26342) - `k8sclusterreceiver`: Add optional k8s.kubelet.version, k8s.kubeproxy.version node resource attributes (#24835) - `k8sclusterreceiver`: Add k8s.pod.status_reason option metric (#24034) - `k8sobjectsreceiver`: Adds logic to properly handle 410 response codes when watching. This improves the reliability of the receiver. (#26098) - `k8sobjectreceiver`: Adds option to exclude event types (MODIFIED, DELETED, etc) in watch mode. (#26042) - `datadogexporter`: Host metadata for remote hosts is now reported on first sight or on change (#25145) Host metadata for remote hosts will only be sent for payloads with the datadog.host.use_as_metadata resource attribute. ### 🧰 Bug fixes 🧰 - `processor/routing`: When using attributes instead of resource attributes, the routing processor would crash the collector. This does not affect the connector version of this component. (#26462) - `awsemfexporter`: Fix possible panic in when configuration option `awsemf.output_destination:stdout` is set (#26250) - `snmpreceiver`: Fix how to determine how many RAs on a metric are scalar (#26363) We now create the proper number of resources for configurations where a resource uses fewer than the available number of scalar resource attributes. - `processor/tailsampling`: Added saving instrumentation library information for tail-sampling (#13642) - `receiver/kubeletstats`: Fixes client to refresh service account token when authenticating with kubelet (#26120) - `datadogexporter`: Fixes crash when mapping OTLP Exponential Histograms with no buckets. These will now be dropped instead. (#26103) - `filelogreceiver`: Fix the behavior of the add operator to continue to support EXPR(env("MY_ENV_VAR")) expressions (#26373) - `snmpreceiver`: SNMP values of type Counter64 were seen as unsupported, because the returned data type uint64 was unhandeled. (#23897, #26119) - `pkg/stanza`: Fix issue unsupported type 'syslog_parser' (#26452) ## v0.84.0 ### 🛑 Breaking changes 🛑 - `jaegerreceiver`: Deprecate remote_sampling config in the jaeger receiver (#24186) The jaeger receiver will fail to start if remote_sampling config is specified in it. The `receiver.jaeger.DisableRemoteSampling` feature gate can be set to let the receiver start and treat remote_sampling config as no-op. In a future version this feature gate will be removed and the receiver will always fail when remote_sampling config is specified. - `googlecloudexporter`: remove retry_on_failure from the googlecloud exporter. The exporter itself handles retries, and retrying can cause issues. (#57233) - `vcenterreceiver`: Dimensions performance metrics into metric attribute `object` (#25147) The following metrics have been effected to include the new metric attribute to properly dimension the data.`vcenter.vm.network.throughput`,`vcenter.vm.network.usage`,`vcenter.vm.network.packet.count`,`vcenter.vm.disk.latency.avg`,`vcenter.vm.disk.latency.max`,`vcenter.host.network.usage`,`vcenter.host.network.throughput`,`vcenter.host.network.packet.count`,`vcenter.host.network.packet.errors`, `vcenter.host.disk.latency.avg`,`vcenter.host.disk.latency.max`, and `vcenter.host.disk.throughput`. More information on how to migrate can be found at https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/vcenterreceiver#feature-gates ### 🚩 Deprecations 🚩 - `datadogprocessor`: Deprecation of Datadog processor in favor of Datadog connector (#19740) - `tanzuobservabilityexporter`: Deprecation of Tanzu Observability (Wavefront) Exporter in favor of native OTLP ingestion. (#24225) ### 💡 Enhancements 💡 - `redisreceiver`: Adding username parameter for connecting to redis (#24408) - `postgresqlreceiver`: Added `postgresql.temp_files` metric. (#26080) - `receiver/azuremonitor`: Added new attributes to the metrics like name, type and resource_group. (#24774) - `clickhouseexporter`: Change writing of metrics data to batch (#24403) - `signalfxexporter`: Added a mechanism to drop histogram buckets (#25845) - `journaldreceiver`: add support for identifiers (#20295) - `journaldreceiver`: add support for dmesg (#20295) - `cassandraexporter`: Allow custom port for Cassandra connection (#24391) - `pkg/ottl`: Add converters to covert duration to nanoseconds, microseconds, milliseconds, seconds, minutes or hours (#24686) - `snmpreceiver`: Support scalar OID resource attributes (#23373) Add column and scalar OID metrics to resources that have scalar OID attributes - `googlemanagedprometheus`: Add a `add_metric_suffixes` option to the googlemanagedprometheus exporter. When set to false, metric suffixes are not added. (#26071) - `haproxyreceiver`: Add support for HTTP connections (#24440) - `cmd/telemetrygen`: Add cli flag --status-code for trace generation (#24286) - `kubeletstatsreceiver`: Add a new `uptime` metric for nodes, pods, and containers to track how many seconds have passed since the object started (#25867) - `opensearchexporter`: implement [OpenSearch](https://opensearch.org/) exporter. (#23611) - `pkg/ottl`: Add new `ExtractPatterns` converter that extract regex pattern from string. (#25834, #25856) - `pkg/ottl`: Add support for Log, Metric and Trace Slices to `Len` converter (#25868) - `lokitranslator`: Added Attributes support to the InstrumentationScope (#24027) - `lokitranslator`: Public method `LogToLokiEntry` from `pkg/loki/translator` now returns normalized (`.` replaced by `_`) label names (#26093) - `postgresqlreceiver`: Added `postgresql.deadlocks` metric. (#25688) - `postgresqlreceiver`: Added `postgresql.sequential_scans` metric. (#26096) - `prometheusreceiver`: The otel_scope_name and otel_scope_version labels are used to populate scope name and version. otel_scope_info is used to populate scope attributes. (#25870) - `receiver/prometheus`: translate units from prometheus to UCUM (#23208) - `snmpreceiver`: Add support for SNMP values of type counter64 (#23897) - `snmpreceiver`: Timeout for SNMP requests can now be configured. (#25885) - `telemetrygen`: The telemetrygen now supports setting the log's body (#26031) - `awsxrayexporter`: add `exporter.awsxray.skiptimestampvalidation` Alpha feature gate to remove xray timestamp restriction on first 32 bits of trace id (#26041) ### 🧰 Bug fixes 🧰 - `receiver_creator`: Update expr and relocate breaking `type` function to `typeOf` (#26038) - `azuremonitor_logexporter`: The log exporter now supports non-string data for the log record body. (#23422) - `vcenterreceiver`: Added a vcenter.resource_pool.inventory_path resource attribute to resource pool metrics in order to properly dimension resource pools of the same name. (#25831) - `loadbalancingexporter`: fix k8s service resolver retaining invalid old endpoints (#24914) - `prometheusremotewriteexporter`: Retry on 5xx status codes using `cenkalti/backoff` client (#20304) - `cmd/telemetrygen`: fix the default value of the arg status-code (#25849) ## v0.83.0 ### 🛑 Breaking changes 🛑 - `receiver/k8scluster`: Unify predefined and custom node metrics. (#24776) - Update metrics description and units to be consistent - Remove predefined metrics definitions from metadata.yaml because they are controlled by `node_conditions_to_report` and `allocatable_types_to_report` config options. - `prometheusexporter`: Remove invalid unit translations from the prometheus exporters (#24647) - `receiver/prometheusexec`: Removes the deprecated prometheus_exec receiver (#24740) ### 🚀 New components 🚀 - `datadogconnector`: This is a new component that computes Datadog APM Stats in the event that trace pipelines are sampled. (#19740) This component replaces the Datadog processor - `gitproviderreceiver`: Add the skeleton for the new gitproviderreceiver in development with accompanying github scraper. (#22028) ### 💡 Enhancements 💡 - `azuredataexplorerexporter`: Add support for managed identity. This enables users to not use Key based authentication (#21924) - `awsemfexporter`: Add awsemf.nodimrollupdefault feature gate to aws emf exporter (#23997) Enabling the awsemf.nodimrollupdefault will cause the AWS EMF Exporter to use the NoDimensionRollup configuration setting by default instead of ZeroAndSingleDimensionRollup. - `awss3exporter`: add Sumo Logic Installed Collector marshaler (#23212) - `receiver/collectdreceiver`: Migrate from opencensus to pdata, change collectd, test to match pdata format. (#20760) - `datasetexporter`: Make duration of shutdown procedure configurable to minimise data losses. (#24415) - `datasetexporter`: Make sure serverHost field is correctly and always populated on the DataSet events. For more information and available configuration options, please refer to the plugin readme file. (#20660, #24415) - `datadogreceiver`: add datadog trace and span id (#23057) - `pkg/ottl`: Add support for using addition and subtraction with time and duration (#22009) - `transformprocessor`: Add extract_count_metric OTTL function to transform processor (#22853) - `transformprocessor`: Add extract_sum_metric OTTL function to transform processor (#22853) - `prometheusreceiver`: Don't drop histograms without buckets (#22070) - `pkg/ottl`: Add a new Function Getter to the OTTL package, to allow passing Converters as literal parameters. (#22961) Currently OTTL provides no way to use any defined Converter within another Editor/Converter. Although Converters can be passed as a parameter, they are always executed and the result is what is actually passed as the parameter. This allows OTTL to pass Converters themselves as a parameter so they can be executed within the function. - `resourcedetectionprocessor`: GCP resource detection processor can automatically add `gcp.gce.instance.hostname` and `gcp.gce.instance.name` attributes. (#24598) - `splunkhecexporter`: Add heartbeat check while startup and new config param, heartbeat/startup (defaults to false). This is different than the healthcheck_startup, as the latter doesn't take token or index into account. (#24411) - `hostmetricsreceiver`: Report logical and physical number of CPUs as metric. (#22099) Use the `system.cpu.logical.count::enabled` and `system.cpu.physical.count::enabled` flags to enable them - `k8sclusterreceiver`: Allows disabling metrics and resource attributes (#24568) - `k8sclusterreceiver`: Reduce memory utilization (#24769) - `k8sattributes`: Added k8s.cluster.uid to k8sattributes processor to add cluster uid (#21974) - `resourcedetectionprocessor`: Collect heroku metadata available instead of exiting early. Log at debug level if metadata is missing to help troubleshooting. (#25059) - `hostmetricsreceiver`: Improved description of the system.cpu.utilization metrics. (#25115) - `cmd/mdatagen`: Avoid reusing the same ResourceBuilder instance for multiple ResourceMetrics (#24762) - `resourcedetectionprocessor`: Add detection of os.description to system detector (#24541) - `filelogreceiver`: Bump 'filelog.allowHeaderMetadataParsing' feature gate to beta (#18198) - `receiver/purefareceiver`: implement the custom label `fa_array_name` to act as a pretty label for metrics received. (#23889, #21248, #22027) - `receiver/prometheusreceiver`: Add config `report-extra-scrape-metrics` to report additional prometheus scraping metrics (#21040) Emits additional metrics - scrape_body_size_bytes, scrape_sample_limit, scrape_timeout_seconds. scrape_body_size_bytes metric can be used for checking failed scrapes due to body-size-limit. - `receiver/sqlquery`: Set ObservedTimestamp on collected logs (#23776) - `exporter/awss3exporter`: Allow custom endpoints to be configured for exporting spans (#21833) - `cmd/telemetrygen`: Add ability to set custom path to endpoint. (#24551) - `telemetrygen`: Adds batch option to configure whether to batch traces, and size option to configure minimum size in MB of each trace for load testing. (#9597) - `webhookreceiver`: Add an optional config setting to set a required header that all incoming requests must provide (#24270) - `extension/jaegerremotesampling`: gRPC remote source usage in jaegerremotesampling extension propagates HTTP headers if set in gRPC client config (#24414) - `extension/jaegerremotesampling`: gRPC remote source usage in jaegerremotesampling extension supports optional caching via existing `reload_interval` config (#24840) ### 🧰 Bug fixes 🧰 - `receiver/sshcheck`: Add the SSH endpoint as a resource attribute (#24441) - `awsemfexporter`: Enforce time to live on metric data that is stored for the purpose of cumulative to delta conversions within EMF Exporter (#25058) This change fixes a bug where the cache used to store metric information for cumulative to delta conversions was not enforcing its time to live. This could cause excessive memory growth in certain scenarios which could lead to OOM failures for Collector. To properly fix this issue package global metric caches were removed and replaced with caches that are unique per emf exporter. A byproduct of this change is that no two emf exporters within an Collector will share a caches leading to more accurate cumulative to delta conversions. - `awsemfexporter`: Add retain_initial_value_of_delta_metric to translateOTelToGroupedMetric, allowing the initial set of metrics to be published (#24051) - `carbonreceiver`: Fix Carbon receiver obsrecv operations memory leak (#24275) The carbonreceiver has a memory leak where it will repeatedly open new obsrecv operations but not close them afterwards. Those operations eventually create a burden. The fix is to make sure the receiver only creates an operation per interaction over TCP. - `datadogexporter`: Populate OTLP resource attributes in Datadog logs. Changes mapping for `jvm.loaded_classes` from `process.runtime.jvm.classes.loaded` to `process.runtime.jvm.classes.current_loaded`. (#24674) - `datadogexporter`: Fix the population of Datadog `system.*` metrics. Ensure the average is within [min, max] in histograms. (#25071) The minimum and maximum estimation is only used when the minimum and maximum are not available in the OTLP payload or this is a cumulative payload. - `pkg/stanza`: Create a new decoder for each TCP/UDP connection to prevent concurrent write to buffer. (#24980) - `exporter/kafkaexporter`: Fixes a panic when SASL configuration is not present (#24797) - `lokitranslator, lokiexporter`: Fixes a panic that occurred during the promotion of nested attributes containing dots to labels (#25125) - `awsxrayexporter`: Fix X-Ray Segment status code and exception translations. (#24381) - `receiver/haproxy`: Make sure emitted resource metrics have distinct resources by default (#24921) This is done by enabling and renaming the following resource attributes: - proxy_name -> haproxy.proxy_name - service_name -> haproxy.service_name - `receiver/k8sobjects`: Fix bug where duplicate data would be ingested for watch mode if the client connection got reset. (#24806) - `datadogreceiver`: Fixed NPE on failed to decode message path (#24562) - `zipkinreceiver`: Respects zipkin's serialised status tags to be converted to span status (#14965) - `datadogexporter`: Correctly set metrics exporter capabilities to state that it mutates data (#24908) This could lead to random panics if using more than one metrics exporter. - `processor/resourcedetection`: Do not drop all system attributes if `host.id` cannot be fetched. (#24669) - `signalfxexporter`: convert vmpage_io* translated metrics to pages (#25064) - `splunkhecreceiver`: aligns success resp body w/ splunk enterprise (#19219) changes resp from plaintext "ok" to json {"text":"success", "code":0} ## v0.82.0 ### 🛑 Breaking changes 🛑 - `receiver/awsfirehose`: Change the type of `Config.AccessKey` to be `configopaque.String` (#17273) - `receiver/cloudfoundry`: Change the type of `Config.UAA.Password` to be `configopaque.String` (#17273) - `exporter/datasetexporter`: Remove temporary client side attribute aggregation and corresponding traces.max_wait and traces.aggregate config options which are now redundant. (#20660) This pull request removes the following attributes from the DataSet trace events: services, span_count, error_count. Those attributes were populated on the client side as part of the client side aggregation code. This client side aggregation was meant as a temporary solution until a proper solution is implement on the server side. Being a temporary solution meant it had many edge cases and would only work under specific and limited circumstances (all spans which belong to a trace are part of the same batch received by the plugin). Corresponding config options (traces.aggregate and traces.max_wait) which are not redundant and unused have also been removed. - `mysqlreceiver`: removing `mysql.locked_connects` metric which is replaced by `mysql.connection.errors` (#23211) - `pkg/ottl`: Allow access to the metrics slice in the metric context (#24446) This is only a breaking change for users using OTTL in custom components. For all Contrib components this is an enhancement. - `pkg/stanza`: Make fileconsumer.PositionalScanner internal (#23999) - `pkg/stanza`: Make fileconsumer.Fingerprint internal (#23998) - `receiver/httpcheck`: Fail fast on endpoint missing scheme (#23020) Previously, when configured with an endpoint without HTTP/HTTPS scheme like "opentelemetry.io", the receiver would start correctly, but fail to check the endpoint, producing the `httpcheck.error` metric on every collection interval. After this change, the receiver fails to start, writing an error log saying that you need to provide a scheme in the endpoint. - `receiver/jmx`: Change the types of `Config.{Password,KeystorePassword,TruststorePassword}` to be `configopaque.String` (#17273) - `httpcheckreceiver`: support scraping multiple targets (#18823) - `resourcedetectionprocessor`: Disable `host.id` by default on the `system` detector. This restores the behavior prior to v0.72.0 when using the `system` detector together with other detectors that set `host.id` (#21233) To re-enable `host.id` on the `system` detector set `system::resource_attributes::host.id::enabled` to `true`: ``` resourcedetection: detectors: [system] system: resource_attributes: host.id: enabled: true ``` - `receiver/nsxt`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/podman`: Change the type of `Config.SSHPassphrase` to be `configopaque.String` (#17273) - `receiver/postgresql`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `prometheusreceiver`: Remove unused buffer_period and buffer_count configuration options (#24258) - `prometheusreceiver`: Add the `trim_metric_suffixes` configuration option to allow enable metric suffix trimming. (#21743, #8950) When enabled, suffixes for unit and type are trimmed from metric names. If you previously enabled the `pkg.translator.prometheus.NormalizeName` feature gate, you will need to enable this option to have suffixes trimmed. - `receiver/pulsar`: Change the types of `Config.Authentication.Token.Token` and `Config.Authentication.Athenz.PrivateKey` to be `configopaque.String` (#17273) - `receiver/rabbitmq`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/redis`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/riak`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/saphana`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/snmp`: Change the types of the `Config.{AuthPassword,PrivacyPassword}` fields to be of `configopaque.String` (#17273) - `receiver/snowflake`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/solace`: Change the type of `Config.Auth.PlainText.Password` to be `configopaque.String` (#17273) - `spanmetricsconnector`: Histograms will not have exemplars by default (#23872) Previously spanmetricsconnector would attach every single span as an exemplar to the histogram. Exemplars are now disabled by default. To enable them set `exemplars::enabled=true` - `receiver/vcenter`: Change the type of `Config.Password` to be `configopaque.String` (#17273) ### 🚩 Deprecations 🚩 - `dynatraceexporter`: Add deprecation note to Dynatrace metrics exporter (#23992) - `pkg/stanza`: Deprecate fileconsumer.EmitFunc in favor of fileconsumer.emit.Callback (#24036) - `pkg/stanza`: Deprecate fileconsumer.Finder and related sortation structs and functions (#24013) - `servicegraphprocessor`: Service Graph Processor is deprecated in favor of the Service Graph Connector (#19737) ### 🚀 New components 🚀 - `exceptionsconnector`: A connector that generate metrics and logs from recorded applications exceptions from spans (#17272) - `opensearchexporter`: exports OpenTelemetry signals to [OpenSearch](https://opensearch.org/). (#23611) - `routingconnector`: A connector version of the routingprocessor (#19738) ### 💡 Enhancements 💡 - `lokiexporter, lokitranslator`: Added setting `default_labels_enabled`. This setting allows to make default labels `exporter`, `job`, `instance`, `level` optional (#22156) - `windowseventlogreceiver`: Add `exclude_providers` to the config. One or more event log providers to exclude from processing. (#21491) - `loadbalancingexporter`: Added docs for k8s service resolver. (#24287) - `loadbalancingexporter`: Added kubernetes service resolver to loadbalancingexporter. (#22776) - `opamp supervisor`: Add Capabilities support to Supervisor config. (#21044) - `opamp supervisor`: OpAMP Supervisor config file now supports "tls" settings in the "server" section. (#23848) - `pkg/ottl`: Add new `Len` converter that computes the length of strings, slices, and maps. (#23847) - `pkg/stanza`: Add option to skip log tokenization for both tcp and udp receivers. use the 'one_log_per_packet' setting to skip log tokenization if multiline is not used. (#23440) - `redisreceiver`: Adds unit to metrics where this was missing. (#23573) Affected metrics can be found below. - redis.role - redis.cmd.calls - redis.clients.connected - redis.clients.blocked - redis.keys.expired - redis.keys.evicted - redis.connections.received - redis.connections.rejected - redis.memory.fragmentation_ratio - redis.rdb.changes_since_last_save - redis.commands.processed - redis.keyspace.hits - redis.keyspace.misses - redis.slaves.connected - redis.db.keys - redis.db.expires - `elasticsearchexporter`: Add span duration in span store. (#14538) - `exporter/datasetexporter`: Rename 'observed_timestamp' field on the DataSet event to 'sca:observedTimestamp' and ensure the value is nanoseconds since epoch, update serializing and handling of body / message field to ensure it's consistent with other DataSet integrations and allow user to disable exporting scope information with each event by setting 'export_scope_info_on_event' logs config option to false. (#20660, #23826) - `exporter/datasetexporter`: Correctly map LogRecord severity to DataSet severity, remove redundant DataSet event message field prefix (OtelExporter - Log -) and remove redundant DataSet event fields (flags, flags.is_sampled). (#20660, #23672) - `journaldreceiver`: fail if unsufficient permissions for journalctl command (#20906) - `pkg/ottl`: Adds support for using boolean expressions with durations (#22713) - `pkg/ottl`: Adds support for using boolean expressions with time objects (#22008) - `pkg/ottl`: Add new `Duration` converter to convert string to a Golang time.duration (#22015) - `kafkareceiver`: Added support for json-encoded logs for the kafkareceiver (#20734) - `resourcedetectionprocessor`: Support GCP Cloud Run Jobs in resource detection processor. (#23681) - `googlemanagedprometheusexporter`: GMP exporter now automatically adds target_info and otel_scope_info metrics. (#24372) - `googlemanagedprometheusexporter`: GMP exporter supports filtering resource attributes to metric labels. (#21654) - `hostmetricsreceiver`: Remove the need to set environment variables with hostmetricsreceiver (#23861) - `experimentalmetricmetadata`: Introduce experimental entity event data types (#23565) - `influxdbexporter`: limit size of write payload (#24001) - `k8sclusterreceiver`: Change k8s.clusterresourcequota metrics to use mdatagen (#4367) - `k8sclusterreceiver`: Change k8s.cronjob.active_jobs to use mdatagen (#10553) - `k8sclusterreceiver`: Change k8s.daemonset metrics to use mdatagen (#10553) - `k8sclusterreceiver`: Refactor k8s.job metrics to use mdatagen (#10553) - `k8sclusterreceiver`: Change k8s.replicaset metrics to use mdatagen (#10553) - `k8sclusterreceiver`: Update k8s.replicationcontroller metrics to use mdatagen (#10553) - `k8sattrprocessor`: Add k8sattr.rfc3339 feature gate to allow RFC3339 format for k8s.pod.start_time timestamp value. (#24016) Timestamp value before and after. `2023-07-10 12:34:39.740638 -0700 PDT m=+0.020184946`, `2023-07-10T12:39:53.112485-07:00` - `k8sclusterreceiver`: k8sclusterreceiver - Begin emitting entity events as logs (#24400) - `k8sclustereceiver`: Report entity state periodically (#24413) - `exporter/kafka`: Added support to Kafka exporter for configuring SASL handshake version (#21074) - `tailsamplingprocessor`: Added invert_match rule for numeric matcher, to support exclusion decision (#24563) - `cmd/mdatagen`: Simplify resource building in MetricsBuilder, suggest using ResourceBuilder instead. (#24443) - `cmd/mdatagen`: Introduce resource builder helper. (#24360) - `datadogexporter`: Add support for the `metrics::sums::initial_cumulative_monotonic_value` setting (#24544) The setting has the same values and semantics as the `initial_value` setting from the `cumulativetodelta` processor - `datadogexporter`: Source resolution logic now runs all source providers in parallel to improve start times. (#24234) All source providers now run in all environments so you may see more spurious logs from downstream dependencies when using the Datadog exporter. These logs should be safe to ignore. - `datadogexporter`: Add support for reporting host metadata from remote hosts. (#24290) Resource attributes for each telemetry signal will be used for host metadata if the 'datadog.host.use_as_metadata' boolean attribute is set to 'true'. - `resourcedetectionprocessor`: The system detector now detects the `host.arch` semantic convention (#22939) The GOARCH value is used on architectures that are not well-known - `pkg/ottl`: Improve error reporting for errors during statement parsing (#23840) - Failures are now printed for all statements within a context, and the statements are printed next to the errors. - Erroneous values found during parsing are now quoted in error logs. - `prometheusremotewrite`: improve the latency and memory utilisation of the conversion from OpenTelemetry to Prometheus remote write (#24288) - `prometheusremotewriteexporter, prometheusexporter`: Add `add_metric_suffixes` configuration option, which can disable the addition of type and unit suffixes. (#21743, #8950) - `pkg/translator/prometheusremotewrite`: Downscale exponential histograms to fit prometheus native histograms if necessary. (#17565) - `routingprocessor`: Enables processor to extract metadata from client.Info (#20913) Enables processor to perform context based routing for payloads on the http server of otlp receiver - `processor/transform`: Report all errors from parsing OTTL statements (#24245) - `azuremonitorexporter`: Map enduser.id to Azure UserID tag (#18103) ### 🧰 Bug fixes 🧰 - `datasetexporter`: Call the correct library function then exporter is shutting down. (#24253) - `awscloudwatchreceiver`: emit logs from one log stream in the same resource (#22145) - `resourcedetectionprocessor`: avoid returning empty host.id on the `system` detector (#24230) - `ecsobserver`: Don't fail with error when finding a task of EC2 launch type and missing container instance, just ignore them. This fixes behavior when task is provisioning and its containers are not assigned to instances yet. (#23279) - `filelogreceiver`: Fix file sort timestamp validation (#24041) - `lokitranslator`: Fix bug when attributes targeted in slice hint not converted to labels when log record has severity_number (#22038) - `prometheusreceiver`: Don't fail the whole scrape on invalid data (#24030) - `datadogreceiver`: Include datadog span.Resource in translated span attributes (#23150) - `cmd/telemetrygen`: Move the span attribute span.kind to the native Kind which is a top level trace information (#24286) - `pkg/stanza`: Fix issue where nil body would be converted to string (#24017) - `pkg/stanza`: Fix issue where syslog input ignored enable_octet_counting setting (#24073) - `processor/resourcedetection`: Fix docker detector not setting any attributes. (#24280) - `processor/resourcedetection`: Fix Heroku config option for the `service.name` and `service.version` attributes (#24355) `service.name` and `service.version` attributes were mistakenly controlled by `heroku.app.name` and `heroku.release.version` options under `resource_attributes` configuration introduced in 0.81.0. This PR fixes the issue by using the correct config options named the same as the attributes. - `processor/resourcedetection`: make sure to use a aks config struct instead of nil to avoid collector panic (#24549) - `filelogreceiver`: Fix issue where files were deduplicated unnecessarily (#24235) - `processor/tailsamplingprocessor`: Fix data race when accessing spans during policies evaluation (#24283) - `zipkintranslator`: Stop dropping error tags from Zipkin spans. The old code removes all errors from those spans, rendering them useless if an actual error happened. In addition, no longer delete error tags if they contain useful information. (#16530) ## v0.81.0 ### 🛑 Breaking changes 🛑 - `clickhouseexporter`: Add scopeName and scopeVersion column to span table. (#21214) - `clickhouseexporter`: add log scope columns to span table. (#20280) - `receiver/aerospike`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/bigip`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/couchdb`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/elasticsearch`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/mongodb`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `receiver/mongodbatlas`: Change the types of `Config.PrivateKey` and `Config.Alerts.Secret` to be `configopaque.String` (#17273) - `receiver/mysql`: Change the type of `Config.Password` to be `configopaque.String` (#17273) - `dockerstatsreceiver`: Add non populated metrics `container.memory.anon` and `container.memory.file` that are only available when the host uses cgroups v2. (#21097) Metric `container.memory.file` was added to fulfil the lack of `container.memory.total_cache` metric in case that the cgroup version mounted in the host is v2 instead of v1. Now there is documentation of which metrics are available depending cgroups version being used on the host. ### 🚩 Deprecations 🚩 - `mysqlreceiver`: set `mysql.locked_connects` as optional in order to remove it in next release (#14138, #23274) ### 💡 Enhancements 💡 - `mdatagen`: Adds a parent field to metadata.yaml for subcomponents. (#23636) - `sqlqueryreceiver`: Add support of Start and End Timestamp Column in Metric Configuration. (#18925, #14146) - `postgresqlreceiver`: Adds unit to metrics where this was missing. (#23571) Affected metrics can be found below. - postgresql.bgwriter.maxwritten - postgresql.table.count - `mdatagen`: Adds validation to mdatagen to ensure that all required fields are present, and their content is valid. (#23783) - `filelogreceiver`: Add support for tracking the current file in filelogreceiver (#22998) - `exporter/datasetexporter`: Add more details to User-Agent header for DataSet HTTP requests (#20660) - `dockerstatsreceiver`: Add `container.image.id` and `container.command_line` optional resource attributes (#21092) - `googlecloudexporter`: Adds an experimental, opt-in write ahead log for GCP metrics exporter. (#23679) - `pkg/ottl`: Adds new `Time` converter to convert a string to a Golang time struct based on a supplied format (#22007) - `hostmetricsreceiver`: Add new Windows-exclusive process.handles metric. (#21379) - `websocketprocessor`: Rename websocketprocessor to remoteobserverprocessor (#23856) - `resourcedetectionprocessor`: Adds a way to configure the list of added resource attributes by the processor (#21482) Users can now configure what resource attributes are gathered by specific detectors. Example configuration: ``` resourcedetection: detectors: [system, ec2] system: resource_attributes: host.name: enabled: true host.id: enabled: false ec2: resource_attributes: host.name: enabled: false host.id: enabled: true ``` For example, this config makes `host.name` being set by `system` detector, and `host.id` by `ec2` detector. Moreover: - Existing behavior remains unaffected as all attributes are currently enabled by default. - The default attributes 'enabled' values are defined in `metadata.yaml`. - Future releases will introduce changes to resource_attributes `enabled` values. - Users can tailor resource detection process to their needs and environment. - `spanmetricsconnector`: Added disabling options for histogram metrics and option to exclude default labels from all metrics. In some cases users want to optionally disable part of metrics because they generate too much data or are not needed. (#16344) - `statsdreceiver`: All receivers are setting receiver name and version when sending data. This change introduces the same behaviour to the statsd receiver. (#23563) - `zookeeperreceiver`: Adds an additional health check metric based off of the response from the zookeeper ruok 4lw command. (#21481) - `k8sclusterreceiver`: Switch k8s.pod and k8s.container metrics to use pdata. (#23441) ### 🧰 Bug fixes 🧰 - `k8sclusterreceiver`: Add back all other vendor-specific node conditions, and report them even if missing, as well as all allocatable node metrics if present, to the list of Kubernetes node metrics available, which went missing during the pdata translation (#23839) - `k8sclusterreceiver`: Add explicitly `k8s.node.allocatable_pods` to the list of Kubernetes node metrics available, which went missing during the pdata translation (#23839) - `awsecscontainermetricsreceiver`: Fix possible panics in awsecscontainermetrics receiver (#23644) - `elasticsearchexporter`: use mapping.dedup and mapping.dedot configuration values (#19419) - `receiver/kafkametricsreceiver`: Updates certain metrics in kafkametricsreceiver to function as non-monotonic sums. (#4327) Update the metrics type in KafkaMetricsReceiver from "gauge" to "nonmonotonic sum". Changes metrics are, kafka.brokers, kafka.topic.partitions, kafka.partition.replicas, kafka.partition.replicas_in_sync, kafka.consumer_group.members. - `clickhouseexporter`: Fix clickhouse exporter create database fail (#23664) - `spanmetricsconnector`: set timestamp correctly for metrics with delta temporality (#7128) - `vcenterreceiver`: Fixed a bug in which the vCenter receiver was incorrectly emitting the "used" attribute twice under the vcenter.datastore.disk.usage metric instead of "used" and "available". (#23654) - `mongodbreceiver`: Fix missing version in mongodb creating panics during scrapes (#23859) - `postgresqlreceiver`: fixed an issue where postgresql receiver was emitting the same attribute value "toast_hit" twice under postgresql.blocks_read metric. (#23657) - `windowseventlogreceiver`: Fix buffer overflow when ingesting large raw Events (#23677) - `pkg/stanza`: adding octet counting event breaking for syslog parser (#23577) ## v0.80.0 ### 🛑 Breaking changes 🛑 - `redisreceiver`: Updates metric unit from no unit to Bytes. (#23454) Affected metrics can be found below. - redis.clients.max_input_buffer - redis.clients.max_output_buffer - redis.replication.backlog_first_byte_offset - redis.replication.offset - `elasticsearchreceiver`: Bump 'receiver.elasticsearch.emitNodeVersionAttr' to stable (#16847) All node metrics are now enriched with the node version resource attribute. - `nginxreceiver`: Bump 'receiver.nginx.emitConnectionsCurrentAsSum' featuregate to beta (enabled by default) (#4326) - `servicegraphprocessor`: Change metric names to match the spec (#18743, #16578) Latency metric `traces_service_graph_request_duration_seconds` are deprecated in favor of server and client metrics | `traces_service_graph_server_request_seconds` and `traces_service_graph_client_request_seconds` | respectively. Use the feature gate `processor.servicegraph.legacyLatencyMetricNames` to enable the old metric names. - `prometheusreceiver, prometheusexporter, prometheusremotewrite`: Disable `pkg.translator.prometheus.NormalizeName` feature gate by default (#23208) The feature gate `pkg.translator.prometheus.NormalizeName` was enabled prematurely while translation on the prometheus receiver was incomplete. To address this, the feature gate has been reverted back to alpha status. This will remain the case until the translation on the receiver side aligns with the translation on the exporter side, or until it is replaced with a configuration option or completely removed. To maintain the current behavior, you can enable the feature gate using the `--feature-gates=pkg.translator.prometheus.NormalizeName` command argument. However, please note that the translation in the prometheus receiver is a subject to future changes. ### 🚩 Deprecations 🚩 - `mysqlreceiver`: deprecate `mysql.locked_connects` in favor of `mysql.connection.errors` (#14138) - `sumologicexporter`: deprecating options which are going to be removed (#23059) The following options are going to be deprecated and removed in the future: - `metric_format: {carbon2, graphite}` (leaving only `prometheus`) - `metadata_attributes: []` - `graphite_template: