v0.45.0
This release includes versions v0.146.0 and v0.147.0 of the upstream Collector components.
The individual upstream Collector changelogs can be found here:
v0.147.0:
- https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.147.0
- https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.147.0
v0.146.0 and v0.146.1:
- https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.146.0
- https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.146.1
- https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.146.0
Highlights from the upstream Collector changelog
🛑 Breaking changes 🛑
-
processor/k8s_attributes: Introduce semantic conventions compliant feature gate pair for k8sattributes processor (#44693)- Added
processor.k8sattributes.EmitV1K8sConventionsfeature gate to enable stable semantic convention attributes (singular form:k8s.<workload>.label.<key>andk8s.<workload>.annotation.<key>) - Added
processor.k8sattributes.DontEmitV0K8sConventionsfeature gate to disable legacy non-compliant attributes (plural form:k8s.<workload>.labels.<key>andk8s.<workload>.annotations.<key>) - Both feature gates are in
alphastage and disabled by default - The processor now validates that legacy attributes cannot be disabled without enabling stable attributes
- Deprecated
k8sattr.labelsAnnotationsSingular.allowfeature 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
EmitV1K8sConventionsis enabled butDontEmitV0K8sConventionsis not
- Added
-
processor/resourcedetection: Promoteprocessor.resourcedetection.propagateerrorsfeature gate to Stable and is now always enabled (#44609) -
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/hostmetrics:process.context_switcheswill now properly count context switches for all threads (#36804)Previously, only the lead thread's context switches would be counted. We believe this was a bug, but are marking it as a breaking change.
-
receiver/kafka: Remove deprecated topic and exclude_topic fields (#46232) -
receiver/kafkametrics:receiver.kafkametricsreceiver.UseFranzGofeature gate is now in Beta stage and enabled by default (#44600)
🚩 Deprecations 🚩
processor/k8s_attributes: Rename internal telemetry metrics to use dots instead of underscores (#45871)processor/k8s_attributes: Renamek8sattributesprocessor tok8s_attributesprocessor and add deprecated aliask8sattributes(#45894)receiver/kubeletstats: TheGCEPersistentDisk,AWSElasticBlockStore, andGlusterfsvolume types have been deprecated as these have been deprecated in k8s (#40477)
💡 Enhancements 💡
-
all: Add detailed failure attributes to exporter send_failed metrics at detailed telemetry level (#13956)
Theotelcol_exporter_send_failed_{spans,metric_points,log_records}metrics now include failure attributes. -
exporter/debug: Output bucket counts for exponential histogram data points in normal verbosity. (#10463) -
exporter/debug: Addoutput_pathsconfiguration option to control output destination (#10472) -
exporter/kafkaexporter: Addconn_idle_timeoutconfiguration option to control when idle connections are closed (#45321)
Defaults to 9 minutes. -
exporter/loadbalancing: Support metrics routing by attributes in the loadbalancing exporter (#45675) -
exporter/loadbalancing: Change default timeout for k8s resolver from 1s to 1m to reduce Kubernetes API server load (#33004) -
extension/healthcheck: Addedextension.healthcheck.useComponentStatusfeature gate to enable v2 component status reporting (#42256) -
extension/filestorage: Support added for file-based storage configurations -
pkg/ottl: AddIsInCIDRfunction to check if IP belongs to given list of CIDR (#42215) -
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/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) -
processor/filter: Introduces inferred context conditions for filtering (#37904)
Introduces three new top-level config fields:metric_conditions,log_conditions,trace_conditions. -
processor/k8s_attributes: Addedcontainer.image.tagsresource attribute with feature gate controls (#44589) -
processor/k8s_attributes: ReplicaSet handling now supports PartialObjectMetadata, reducing cold-start memory/time (#44407) -
processor/redaction: Add HMAC hash functions (hmac-sha256andhmac-sha512) for GDPR-compliant pseudonymization (#45715) -
processor/resourcedetection: Addtags_from_imdsconfig option to EC2 detector to control instance tag retrieval method (#46046) -
processor/resourcedetection: Added Tencent Cloud CVM resource detector to the Resource Detection Processor (#45779) -
receiver/filelog: Suppress repeated permission-denied errors (#39491)
Only one error is logged per file per process run. -
receiver/hostmetrics: Add support for Linux hugepages memory monitoring via system.memory.linux.hugepages metrics (#42650) -
receiver/hostmetrics: Add optionalsystem.memory.linux.sharedmetric (#32712) -
receiver/hostmetrics: Reduce excessive float64 precision in memory, disk, and filesystem scrapers (#46141) -
receiver/k8sobjects: Add support for exclude_namespaces to exclude specific namespaces from being watched (#36217) -
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 zonek8s.service.load_balancer.ingress.count: Number of load balancer ingress points assigned to the service
New resource attributes:k8s.service.name: The k8s service namek8s.service.uid: The k8s service uidk8s.service.type: The k8s service typek8s.service.traffic_distribution: The service's traffic routing preferencek8s.service.publish_not_ready_addresses: Whether the service publishes endpoints before pods are ready
-
receiver/k8s_cluster: Define entities and relationships for Kubernetes resources in metadata.yaml (#41080) -
receiver/kafka: Addconn_idle_timeoutconfiguration option to control when idle connections are closed (#45321)Defaults to 9 minutes.
-
receiver/kafkametrics: Improvements to Franz-go consumer handling and configuration options -
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/loadbalancing: Change default timeout for k8s resolver from 1s to 1m to reduce Kubernetes API server load (#33004) -
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. -
pkg/confmap: Fix an issue where configs could fail to decode when using interpolated values in string fields (#14034) -
pkg/fileconsumer: Do not evaluate the include/exclude file patterns during component start (#45988)
Previously a synchronous glob walk would block the collector from reporting readiness. -
pkg/otelcol: The featuregate subcommand now rejects extra positional arguments instead of silently ignoring them. (#14554) -
pkg/stanza: Fix recombine operator logging errors at ERROR level whenon_erroris set to quiet mode (#42646) -
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.<label_key>) instead of
producing empty tag names. -
processor/batch: Fix bug where the batch processor would not copySchemaUrlmetadata during partial batch splits (#12279) -
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/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 thanmath.MaxInt64and result in negative attribute values.
This fix changes that behaviour by storing only those large values as string attributes instead. -
receiver/syslog: Handle multiple concatenated JSON objects (#46120)
Dynatrace distribution changelog:
🛑 Breaking changes 🛑
-
Self-monitoring: the
otelcol_exporter_send_failed_{spans,metric_points,log_records}metrics now only emit data points when there are failures to report.Not reporting data points which have a value of
0should reduce metric data volume and therefore ingest costs. -
Self-monitoring: The
rpc.*metrics were upgraded to usev1.39.0version of semantic conversions, which leads to breaking changes of the following metrics:rpc span and metric attributes have been renamed to align with naming guidelines:
rpc.system→rpc.system.name(values: grpc, grpc_web, connectrpc, thrift, dubbo, etc.)
rpc.methodandrpc.servicehave been merged into a fully-qualifiedrpc.methodattribute
rpc.client|server.duration→rpc.client|server.call.duration(unit changed to seconds)
rpc.grpc.request.metadata/rpc.grpc.response.metadata→rpc.request.metadata/rpc.response.metadata
rpc.grpc.status_code→ deprecated in favor ofrpc.response.status_code
rpc.jsonrpc.request_id→jsonrpc.request.id
rpc.jsonrpc.version→jsonrpc.protocol.versionsystem and process metrics:
*.linux.memorymetrics renamed to*.memory.linux
system.process.status→process.state
system.paging.typeandprocess.paging.fault_type→system.paging.fault.typepeer.serviceattribute has been deprecated in favor ofservice.peer.nameMore details available in this PR
🚀 New components 🚀
extension/filestorage: Add filestorage extension to the distribution (#834)
💡 Enhancements 💡
config_examples: Add an OTLP logs pipeline with resource detection to the host metrics config example (#846)