This Splunk OpenTelemetry Collector release includes changes from the opentelemetry-collector v0.147.0
and the opentelemetry-collector-contrib v0.147.0 releases where appropriate.
🛑 Breaking changes 🛑
- (Contrib)
processor/resourcedetection: Remove feature gate processor.resourcedetection.removeGCPFaasID (#45808) - (Contrib)
processor/resourcedetection: Changed cloud platform value for Azure EKS fromazure_ekstoazure.eksto align with OpenTelemetry semantic conventions v1.39.0. (#45030) - (Contrib)
receiver/kafka: Remove deprecated topic and exclude_topic fields (#46232) - (Contrib)
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 🚩
- (Splunk)
hana: Deprecate the hana monitor (#7261)
The hana monitor is deprecated and will removed on or after May 2026. Please use the
saphana
and sqlquery receivers instead. - (Splunk)
collectd/systemd: Deprecate the collectd/systemd monitor (#7205)
Please use the systemd receiver instead. - (Contrib)
processor/k8s_attributes: Rename internal telemetry metrics to use dots instead of underscores (#45871)
🚀 New components 🚀
💡 Enhancements 💡
- (Splunk)
collector: Added native Windows ARM installer for the Splunk OpenTelemetry Collector. (#7275)- The Windows ARM installer is now available as part of our release process, allowing users with ARM-based Windows devices to easily install the Splunk OpenTelemetry Collector.
- The PowerShell installation script has been updated to detect the system architecture and install the appropriate MSI package for either AMD64 or ARM64 platforms.
- (Splunk)
packaging: Update Splunk OpenTelemetry Java agent to v2.25.1 (#7272) - (Splunk)
packaging: Update JMX metrics gatherer to v1.54.0 (#7238) - (Splunk)
deployments/nomad: Add official support forv1.11.2(#7260) - (Core)
exporter/debug: Output bucket counts for exponential histogram data points in normal verbosity. (#10463) - (Core)
pkg/exporterhelper: Addmetadata_keysconfiguration tosending_queue.batch.partitionto partition batches by client metadata (#14139)
Themetadata_keysconfiguration option is now available in thesending_queue.batch.partitionsection for all exporters.
When specified, batches are partitioned based on the values of the listed metadata keys, allowing separate batching per metadata partition. This feature
is automatically configured when usingexporterhelper.WithQueue(). - (Contrib)
exporter/loadbalancing: Support metrics routing by attributes in the loadbalancing exporter (#45675) - (Contrib)
exporter/prometheusremotewrite: Add support for exporting InstrumentationScope attributes as Prometheus labels. This behavior can be disabled via thedisable_scope_infoconfiguration option. (#45266) - (Contrib)
extension/basicauth: Addusername_fileandpassword_fileoptions 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. - (Contrib)
pkg/ottl: Add Base64Encode function to OTTL (#46071) - (Contrib)
pkg/ottl: Added metadata access path to all OTTL contexts for accessing client request metadata (#33288) - (Contrib)
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. - (Contrib)
processor/redaction: Add HMAC hash functions (hmac-sha256andhmac-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 withhash_function: hmac-sha256(orhmac-sha512) andhmac_key: "${env:REDACTION_SECRET_KEY}". - (Contrib)
processor/resourcedetection: Added Tencent Cloud CVM resource detector to the Resource Detection Processor (#45779) - (Contrib)
processor/resourcedetection: Addtags_from_imdsconfig option to EC2 detector to control instance tag retrieval method (#46046)
Introduces thetags_from_imdsboolean field in the EC2 detector configuration.
When set totrue, instance tags are fetched via IMDS, which does not require any IAM
permissions but requiresInstanceMetadataTags=enabledon the instance.
When set tofalse(default), tags are fetched via the EC2DescribeTagsAPI,
which requires theec2:DescribeTagsIAM permission. This is the existing behavior and
the default to avoid breaking changes. - (Contrib)
receiver/apache: Enables dynamic metric reaggregation in the Apache receiver. This does not break existing configuration files. (#46348) - (Contrib)
receiver/azure_event_hub: Promote the Azure Event Hub receiver to beta stability. (#41661) - (Contrib)
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. - (Contrib)
receiver/ciscoos: Add multi-device configuration with global scraper settings and improved config validation (#42647) - (Contrib)
receiver/haproxy: Enable dynamic metric reaggregation in the HAProxy receiver. (#46357) - (Contrib)
receiver/hostmetrics: Reduce excessive float64 precision in memory, disk, and filesystem scrapers (#46141) - (Contrib)
receiver/k8s_cluster: Define entities and relationships for Kubernetes resources in metadata.yaml. (#41080) - (Contrib)
receiver/oracledb: Enable dynamic metric reaggregation in the OracleDB receiver. (#46371) - (Contrib)
receiver/postgresql: Added support for configuring custom collection intervals for Top Query records (#45614) - (Contrib)
receiver/prometheusremotewrite: Add support for extracting exemplars from Prometheus counters (#46145) - (Contrib)
receiver/splunkenterprise: Enables dynamic metric reaggregation in the Splunk Enterprise receiver. This does not break existing configuration files. (#45396) - (Contrib)
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 🧰
- (Core)
pkg/confmap: Fix another issue where configs could fail to decode when using interpolated values in string fields. (#14034)
For example, a resource attribute can be set via an environment variable to a string that is parseable as a number, e.g.1234.
(A similar bug was fixed in a previous release: that one was triggered when the field was nested in a struct,
whereas this one is triggered when the field internally has type "pointer to string" rather than "string".) - (Core)
pkg/queuebatch: Fix data race in partition_batcher where resetTimer() was called outside mutex, causing concurrent timer.Reset() calls and unpredictable batch flush timing under load. (#14491) - (Core)
pkg/scraperhelper: Log scrapers now emit log-appropriate receiver telemetry (#14654)
Log scrapers previously emitted the same receiver telemetry as metric scrapers,
such as the otelcol_receiver_accepted_metric_points metric (instead of otelcol_receiver_accepted_log_records),
or spans named receiver/myreceiver/MetricsReceived (instead of receiver/myreceiver/LogsReceived).
This did not affect scraper-specific spans and metrics. - (Core)
processor/batch: Fixes a bug where the batch processor would not copySchemaUrlmetadata from resource and scope containers during partial batch splits. (#12279, #14620) - (Contrib)
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. - (Contrib)
exporter/prometheusremotewrite: [exporter/prometheusremotewrite] Fix WAL wake-up race (#45288) - (Contrib)
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. - (Contrib)
internal/metadataproviders: Fix Azure IMDS header value (#46281)
Azure's IMDS endpoint is expecting theMetadataheader to betrue, notTrue, the latter causing 400s. - (Contrib)
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. - (Contrib)
pkg/translator/prometheusremotewrite: Fixes an issue where zero_threshold was reset to the default value for exponential histograms. (#46108) - (Contrib)
processor/cumulativetodelta: Fix memory blowup in exponential histogram delta conversion (#45927) - (Contrib)
processor/resourcedetection: IRSA and Pod Identity tokens are checked to determine if running within an EKS cluster (#45866) - (Contrib)
processor/tail_sampling: Properly remove trace id from its original batch when usingdecision_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. - (Contrib)
receiver/awscloudwatch: Use the oldest log timestamp as the next poll start time to prevent logs from being ignored (#41122) - (Contrib)
receiver/docker_stats: Avoid cancelling docker stats request before it's done reading response (#34194)
Resolves "context canceled" error while fetching docker stats - (Contrib)
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. - (Contrib)
receiver/splunkenterprise: fixes a bug with how ad-hoc search based metrics were being recorded (#46126)
Docker Image Manifests:
- Linux (amd64, arm64, ppc64le) and Windows (2019 amd64, 2022 amd64):
quay.io/signalfx/splunk-otel-collector:0.147.0- digest:
sha256:26eb986c0c59f3c9599ac2735e61b626f4850501d647fae1723ae5177ed33568