This Splunk OpenTelemetry Collector release includes changes from the opentelemetry-collector v0.148.0
and the opentelemetry-collector-contrib v0.148.0 releases where appropriate.
ð Breaking changes ð
- (Splunk)
configconverter: Removesplunk_otlp_histogramsresource attribute config converter (#7345)
This config converter was being used to automatically add the booleansplunk_otlp_histograms
resource attribute to metrics that were being sent from the SignalFx exporter when the
send_otlp_histogramsoption was enabled. This resource attribute will no longer be added.
If this functionality is still desired, users can use the resource attribute processor to add
this to any pipeline that is sending OTLP histograms to Splunk Observability Cloud. - (Core)
all: Change metric units to be singular to match OTel specification, e.g.{requests}->{request}(#14753) - (Contrib)
exporter/google_cloud_storage:reuse_if_existsbehavior changed: now checks bucket existence instead of attempting creation (#45971)
Previously,reuse_if_exists=truewould attempt bucket creation and fall back to reusing on conflict.
Now,reuse_if_exists=truechecks 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=falsestill attempts to create the bucket and fails if it already exists. - (Contrib)
exporter/kafka: Remove deprecated top-leveltopicandencodingconfiguration fields (#46916)
The top-leveltopicandencodingfields were deprecated in v0.124.0.
Use the per-signal fields instead:logs::topic,metrics::topic,
traces::topic,profiles::topic, and the correspondingencoding
fields under each signal section. - (Contrib)
exporter/kafka: Remove kafka-local batching partitioner wiring and require explicitsending_queue::batch::partition::metadata_keysconfiguration as a superset ofinclude_metadata_keyswhen batching is enabled. (#46757) - (Contrib)
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.utilizedandecs.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 forecs.task.memory.utilized,ecs.task.memory.reserved,
container.memory.utilized, andcontainer.memory.reservedhas 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. - (Contrib)
receiver/mysql: Set the default collection of query_sample to false (#46902) - (Contrib)
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. - (Contrib)
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 settingevent_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 ðĐ
- (Contrib)
exporter/google_cloud_storage: Introduce new snake case compliant namegoogle_cloud_storage(#46733) - (Contrib)
extension/google_cloud_logentry_encoding: Introduce new snake case compliant namegoogle_cloud_logentry_encoding(#46778) - (Contrib)
receiver/azure_monitor: Introduce new snake case compliant nameazure_monitor(#46730) - (Contrib)
receiver/cisco_os: Introduce new snake case compliant namecisco_os(#46948) - (Contrib)
receiver/prometheus_remote_write: Introduce new snake case compliant nameprometheus_remote_write(#46726) - (Contrib)
receiver/yang_grpc: Introduce new snake case compliant nameyang_grpc(#46723)
ðĄ Enhancements ðĄ
- (Splunk)
all: Add support for Debian 13 (Trixie) (#7318) - (Splunk)
installer: Add OBI (OpenTelemetry eBPF Instrumentation) installation support to install.sh (#7332)
Adds--with-obi,--obi-version, and--obi-install-dirflags to the Linux installer.
Downloads and verifies theobibinary from GitHub releases with SHA256 checksum validation.
Performs preflight checks for architecture, kernel version (5.8+, or 4.18+ on RHEL-family),
root privileges, and bpffs availability before installing. - (Splunk)
packaging: Update Splunk OpenTelemetry Java agent to v2.26.1 (#7355) - (Splunk)
packaging: Update Splunk OpenTelemetry Node.js agent to v4.4.0 (#7317) - (Contrib)
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
- (Contrib)
extension/headers_setter: Add support for file-based credentials viavalue_fileconfiguration 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 - (Contrib)
internal/kafka: This change adds support for authentication via OIDC to the Kafka client. (#41873)
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 - (Contrib)
pkg/fileconsumer:filelogreceiver 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. - (Contrib)
receiver/docker_stats: Enables dynamic metric reaggregation in the Docker Stats receiver. This does not break existing configuration files. (#45396) - (Contrib)
receiver/filelog: Addinclude_file_permissionsoption (#46504) - (Contrib)
receiver/haproxy: Addhaproxy.server.stateresource attribute to expose server status (UP, DOWN, MAINT, etc.) (#46799)
The new resource attribute is disabled by default and can be enabled via configuration. - (Contrib)
receiver/hostmetrics: Enable dynamic metric reaggregation for the cpu scraper in the hostmetrics receiver. (#46386) - (Contrib)
receiver/hostmetrics: Enable re-aggregation feature for the memory scraper to support dynamic metric attribute configuration at runtime. (#46618) - (Contrib)
receiver/hostmetrics: Enable re-aggregation feature for the load scraper by settingreaggregation_enabled. (#46617) - (Contrib)
receiver/hostmetrics: Enable metric re-aggregation for paging scrapers. (#46386, #46621) - (Contrib)
receiver/hostmetrics: Enables re-aggregation for nfs scraper (#46386, #46620) - (Contrib)
receiver/hostmetrics: Enable re-aggregation feature for the filesystem scraper by settingreaggregation_enabledand addingrequirement_levelto attributes. (#46616) - (Contrib)
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. - (Contrib)
receiver/hostmetrics: Enable re-aggregation feature for the disk scraper by settingreaggregation_enabledand addingrequirement_levelto attributes. (#46615) - (Contrib)
receiver/hostmetrics: Enable re-aggregation feature for the network scraper by settingreaggregation_enabledand addingrequirement_levelto attributes. (#46619) - (Contrib)
receiver/iis: Enable re-aggregation and set requirement levels for attributes. (#46360) - (Contrib)
receiver/kafka: addkafka.topic,kafka.partition,kafka.offsetto client metadata (#45931) - (Contrib)
receiver/kafkametrics: Enable re-aggregation feature for kafkametrics receiver to support dynamic metric attribute configuration at runtime. (#46362) - (Contrib)
receiver/mysql: Enables dynamic metric reaggregation in the MySQL receiver. This does not break existing configuration files. (#45396) - (Contrib)
receiver/oracledb: Addoracledb.procedure_execution_countattribute 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. - (Contrib)
receiver/oracledb: Addoracledb.command_typeattribute to the Top-Query collection. (#46838) - (Contrib)
receiver/postgresql: Enables dynamic metric reaggregation in the PostgreSQL receiver. This does not break existing configuration files. (#45396) - (Contrib)
receiver/prometheus: Graduatereceiver.prometheusreceiver.RemoveReportExtraScrapeMetricsConfigfeature gate to stable; deprecatereceiver.prometheusreceiver.EnableReportExtraScrapeMetricsfeature gate (#44181)
Thereport_extra_scrape_metricsconfiguration option is now fully ignored; remove it from your configuration to avoid crashes.
Thereceiver.prometheusreceiver.EnableReportExtraScrapeMetricsfeature gate is deprecated and will be removed in v0.148.0; use theextra_scrape_metricsPrometheus scrape configuration option instead. - (Contrib)
receiver/rabbitmq: Enable dynamic metric reaggregation in the RabbitMQ receiver. (#46374) - (Contrib)
receiver/redis: Enable dynamic metric reaggregation in the Redis receiver. (#46376) - (Contrib)
receiver/sqlserver: Addsqlserver.procedure_execution_countattribute to the Top-Query collection. (#46486) - (Contrib)
receiver/statsd: Add counter_type configuration option to control how counter values are represented (int, float, or stochastic_int) (#45276) - (Contrib)
receiver/systemd: Enable dynamic metric reaggregation in the systemd receiver. (#46381) - (Contrib)
receiver/vcenter: Enable re-aggregation feature for vcenter receiver metrics (#46384) - (Contrib)
receiver/windowseventlog: Add SID resolution feature to automatically resolve Windows Security Identifiers to user and group names (#45875)
Added newresolve_sidsconfiguration 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 ð§°
- (Splunk)
config: Updated default configuration files to use dot-notation attributes for internal metrics, addressing the upstream change in open-telemetry/opentelemetry-collector#14815 (#7351) - (Core)
exporter/debug: Add printing of metric metadata in detailed verbosity. (#14667) - (Core)
exporter/otlp_grpc: Prevent nil pointer panic when push methods are called before the OTLP exporter initializes its gRPC clients. (#14663)
When the sending queue and retry are disabled, calling ConsumeTraces,
ConsumeMetrics, ConsumeLogs, or ConsumeProfiles before the OTLP exporter
initializes its gRPC clients could cause a nil pointer dereference panic.
The push methods now return an error instead of panicking. - (Contrib)
exporter/kafka: Validate thattopic_from_metadata_keyis present ininclude_metadata_keyswhen configured, with clear config validation errors. (#46711) - (Contrib)
exporter/kafka: AddMergeCtxto preserveinclude_metadata_keyswhen batching is enabled. (#46718) - (Contrib)
exporter/signalfx: include inactive in memory total (#46474) - (Contrib)
extension/bearertokenauth: Fix bearer token auth rejecting custom headers in HTTP requests unless specified in canonical form (#45697) - (Contrib)
extension/file_storage: Fix nil pointer crash when bbolt reopen fails during on_rebound compaction (#46489) - (Contrib)
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) - (Contrib)
processor/resourcedetection: Fix consul detectortoken_filesetting the file path as the literal token value instead of configuring the consul SDK to read the file (#46745)
Whentoken_filewas configured, the file path string
was assigned toapi.Config.Tokeninstead ofapi.Config.TokenFile,
causing the consul API client to use the path as the authentication
token (always resulting in 403 Forbidden). - (Contrib)
processor/resourcedetection: Fix collector panic on shutdown when the same processor is used in multiple pipelines with refresh_interval enabled. (#46918) - (Contrib)
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 fromprocesslist.id = thread.thread_idtoprocesslist.id = thread.processlist_idto use the correct foreign key relationship. - (Contrib)
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. - (Contrib)
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). - (Contrib)
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. - (Contrib)
receiver/sqlserver: Fixedhost.nameresource attribute to be correctly extracted fromdatasourceconfiguration whenserveris not set (#42355)
When using thedatasourceconfiguration option, thehost.nameresource attribute will now be
properly parsed from the datasource connection string instead of being left empty or using an incorrect value. - (Contrib)
receiver/sqlserver: Add missinghost.namefor logs when usingdatasourceconfiguration (#46740) - (Contrib)
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.
Docker Image Manifests:
- Linux (amd64, arm64, ppc64le) and Windows (2019 amd64, 2022 amd64):
quay.io/signalfx/splunk-otel-collector:0.148.0- digest:
sha256:b421282d210bf4593110b3f9f627ef7f96bcbd69745196572837a13fb60d7c35