This Splunk OpenTelemetry Collector release includes changes from the opentelemetry-collector v0.154.0
and the opentelemetry-collector-contrib v0.154.0 releases where appropriate.
🛑 Breaking changes 🛑
- (Splunk)
config: Update deprecated receiver alias fromkubeletstatstokubelet_statsin default configs (#7556)
All collector configurations need to be updated to use thekubelet_statsalias. - (Splunk)
config: Update deprecated receiver alias fromkafkametricstokafka_metricsin default configs (#7556)
All collector configurations need to be updated to use thekafka_metricsalias. - (Splunk)
packaging: Remove the agent bundle (collectd, Python, and Java subprocesses) from all packages and container images. (#7513)
The agent bundle (bundled collectd, Python runtime, and Java runtime) is no longer shipped with
the Splunk Distribution of OpenTelemetry Collector. Monitors that relied on these bundled
runtimes (collectd-based monitors, Python-based monitors via the Smart Agent Receiver, and the
JMX Smart Agent monitor) are no longer supported. Users should migrate to native OpenTelemetry
receivers or Prometheus-compatible exporters for equivalent functionality. - (Splunk)
smartagentextension: Removecollectdconfiguration block andbundleDirfrom the Smart Agent Extension. (#7513)
Thecollectdconfiguration block (includingconfigDir,logLevel,intervalSeconds, etc.) has been removed from the Smart Agent Extension as the collectd subprocess no longer exists.
ThebundleDirfield has also been removed from the Smart Agent Extension configuration.
Configurations referencing these fields must be updated. - (Splunk)
smartagentreceiver: Remove collectd-based monitors (collectd/openstack, collectd/custom, and the collectd subprocess infrastructure). (#7513)
The collectd subprocess and all monitors that depended on it have been removed:
collectd/openstack,collectd/custom, and the underlying collectd infrastructure code.
Users relying on these monitors should migrate to native OpenTelemetry receivers. - (Splunk)
hana: Remove thehanamonitor after its deprecation period. (#7613)
Thehanamonitor has been removed.
Please use the
saphana
and sqlquery receivers instead. - (Splunk)
smartagentreceiver: Remove thejmxSmart Agent monitor that depended on the bundled Java runtime. (#7513)
ThejmxSmart Agent monitor has been removed along with the bundled Java runtime it required.
Users should migrate to thejmxreceiver from opentelemetry-collector-contrib for equivalent JMX
metrics collection. Users should also ensure that a compatible Java runtime is installed on the
host. - (Contrib)
connector/span_metrics: Validatecalls_dimensionsandhistogram.dimensionsat startup (#48097)
Duplicate dimension names incalls_dimensionsorhistogram.dimensionspreviously passed silently; they now fail validation at startup, matching the behaviour of the top-leveldimensionssetting. - (Contrib)
receiver/vcenter: Set resourcePoolMemoryUsageAttribute feature gate to beta. (#47552)
🚩 Deprecations 🚩
- (Splunk)
installer: Deprecate the HEC URL parameter (#7611)
The--hec-urland-hec_urlparameters (for BASH and PowerShell, respectively) have been
deprecated and will be removed in September 2026. - (Contrib)
exporter/prometheus_remote_write: Rename toprometheus_remote_writewith deprecated aliasprometheusremotewrite(#45339) - (Contrib)
exporter/signalfx: Traces have been deprecated for the exporter (#48748)
Trace correlation functionality no longer requires thesignalfxexporter to be included in trace pipelines.
Sending traces may now be sent solely via OTLP to enable trace correlation. All trace functionality and configuration
will be removed from this exporter in December 2026. - (Contrib)
processor/resource_detection: Thek8snodedetector is deprecated; usek8s_apiinstead. (#48597)
Both names work and produce identical output. When switching tok8s_api, also rename your config section fromk8snode:tok8s_api:; keeping the old key under the new detector name will silently apply defaults instead. - (Contrib)
receiver/apache_spark: Renameapachesparkreceiver toapache_sparkwith deprecated aliasapachespark(#45339) - (Contrib)
receiver/kafka: Deprecategroup_rebalance_strategyin favor ofgroup_rebalance_strategies(#48658)
Usegroup_rebalance_strategiesto configure one or more ordered protocols. The singular field remains supported for backward compatibility but logs a deprecation warning on startup.
group_rebalance_strategyandgroup_rebalance_strategiesare mutually exclusive; setting both fails validation. - (Contrib)
receiver/windows_service: Rename receiver type fromwindowsservicetowindows_service(#45339)
💡 Enhancements 💡
- (Splunk)
config: Removesignalfxexporter from trace pipelines in all default configs (#7594)
Trace correlation can now be done without including thesignalfxexporter in trace pipelines. - (Splunk)
installer: Add Splunk Platform log collection support to the Windows installer script. (#7592)
New MSI install parameters: SPLUNK_PLATFORM_URL, SPLUNK_PLATFORM_TOKEN, SPLUNK_PLATFORM_LOGS_INDEX
enable forwarding host logs to Splunk Platform via HEC. A newsplunk_logs_config_windows.yaml
config file is installed with filelog & windows_event_log receivers. - (Splunk)
installer: Add Splunk Platform log collection support to the Linux installer script. (#7452)
New flags--splunk-platform-token,--splunk-platform-url, and--splunk-platform-logs-index
enable forwarding host logs to Splunk Platform via HEC. A newsplunk_logs_config_linux.yaml
config file is installed with filelog receivers for/var/log,/etc,.bash_history, and journald (disabled by default). - (Splunk)
installer: Add Splunk Platform metrics collection support to the Linux installer script. (#7615)
New flag--splunk-platform-metrics-indexenables forwarding basic host metrics to Splunk Platform via HEC. - (Splunk)
packaging: Update Splunk OpenTelemetry Node.js agent to v4.8.0 (#7634) - (Core)
pkg/config/configtls: Addinclude_insecure_cipher_suitesto configtls to enable insecure cipher suites. Insecure cipher suites are disabled by default for security. (#13829) - (Core)
pkg/confighttp: AddExposedHeadersfield toCORSConfigto allow setting theAccess-Control-Expose-Headersresponse header. (#15119) - (Contrib)
connector/span_metrics: Support for glob expressions in thedimensionsfield of the spanmetrics connector config (#48097)
It is now possible to specify attributes to add as dimensions to metrics using glob expressions, in addition to exact string matching - (Contrib)
exporter/load_balancing: Add service, resource, and attributes routing key support for logs (#40223)
Logs can now be routed usingservice(default, routes by service.name),resource(routes by
full resource identity), orattributes(routes by configurable attribute values including
log.severity and log.body pseudo attributes). This enables stateful downstream processing like
log reduction, throttling, and tail-based sampling. - (Contrib)
exporter/signalfx: Handle entity events as property updates sent to the PUT endpoint instead of PATCH. (#48469) - (Contrib)
extension/google_cloud_logentry_encoding: Migrate semantic conventions from v1.38.0 to v1.40.0 (#47547) - (Contrib)
processor/cumulativetodelta: Add internal telemetry for converted and dropped datapoints, and for tracked streams. (#48246)
Three new metrics are emitted by the processor, all disabled by default (opt-in via the collector'sservice.telemetry.metricsconfiguration):otelcol_cumulativetodelta_datapoints: number of datapoints converted from cumulative to delta temporality (with ametric_typeattribute:sum,histogram, orexponential_histogram).otelcol_cumulativetodelta_datapoints_dropped: number of datapoints dropped instead of converted, with the samemetric_typeattribute and areasonattribute (reset,initial,bucket_mismatch).otelcol_cumulativetodelta_streams_tracked: number of metric streams currently tracked in memory.
Reset detections also emit a Debug-level log line including the metric name, type, and datapoint attributes — logs absorb the per-stream cardinality that would be prohibitive on a metric while still letting operators identify which stream is wrapping/restarting.
- (Contrib)
processor/k8s_attributes: Addpod_delete_grace_periodconfig option to configure pod metadata cache deletion grace period. (#48127)
Thepod_delete_grace_periodconfig option defaults to120sto match the previously hardcoded behavior. - (Contrib)
processor/resource_detection: Addk8s.cluster.uiddetection to thek8s_apidetector (formerlyk8snode), derived from thekube-systemnamespace UID. (#48597)
Thek8s.cluster.uidattribute is enabled by default. To disable it, setresource_attributes.k8s.cluster.uid.enabled: false.
The detector requiresgetpermission on thekube-systemnamespace. If the permission is missing, a warning is logged and the attribute is omitted; other attributes are unaffected. - (Contrib)
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
- (Contrib)
processor/tail_sampling: Add a newprocessor_tail_sampling_count_bytes_sampledmetric that counts bytes sampled per policy, mirroringprocessor_tail_sampling_count_spans_sampled. (#48348)
Gated behind theprocessor.tailsamplingprocessor.metricstatcountbytessampledfeature gate (alpha, disabled by default).
Bytes are measured using the protobuf-marshaledResourceSpanssize, the same calculation used formaximum_trace_size_bytes. - (Contrib)
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. - (Contrib)
processor/transform: Add thelimit_bucketsmethod to themerge_histogram_bucketsOTTL function to reduce explicit histogram bucket counts. (#48527) - (Contrib)
receiver/azure_blob: Allowlogs.encodingandtraces.encodingto reference an encoding extension ID, in addition to the built-inotlp_jsonandotlp_protovalues. (#48238)
Whenencodingis set to a value other thanotlp_jsonorotlp_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. - (Contrib)
receiver/azure_blob: Addencodingoption per signal to accept OTLP/Protobuf in addition to OTLP/JSON blob payloads (#48236)
Previously the receiver only accepted OTLP/JSON. Newlogs.encodingand
traces.encodingoptions each acceptotlp_json(default) orotlp_proto,
selecting the encoding of blob payloads per signal. The default preserves
prior behavior for existing OTLP/JSON producers. - (Contrib)
receiver/host_metrics: Add AIX to the system scraper's supported-OS allowlist. (#47095) - (Contrib)
receiver/k8s_events: Adddedup_intervalconfig to throttle MODIFIED watch notifications per Event UID. (#48018)
dedup_intervalis opt-in (default0preserves 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 fordedup_interval + 5m.
Adds an internal telemetry counterotelcol.k8s.events.modified.filteredthat
tracks how many MODIFIED notifications were dropped bydedup_interval. - (Contrib)
receiver/k8s_objects: Addinitial_delayto delay the first pull for pull-mode objects by an exact, per-object duration. (#48605)
initial_delaylets operators stagger heavy pull-mode object collections across startup time
without changing the configured recurringinterval.
If unset or0, the receiver keeps the current immediate first-pull behavior.
Watch-mode objects are unaffected. - (Contrib)
receiver/kafka: Addgroup_rebalance_strategiesso consumers can advertise multiple partition assignment protocols in order during rolling deployments (#48658)
Kafka picks the first protocol every group member supports. This avoidsINCONSISTENT_GROUP_PROTOCOLwhen old and new collector pods temporarily advertise different assignment strategies.
Order is preserved when configuring the franz-go client. - (Contrib)
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.
- (Contrib)
receiver/oracledb: Addoracledb.plan.last_loadandoracledb.plan_hash_valueattributes 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.
- (Contrib)
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)
- (Contrib)
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 - (Contrib)
receiver/oracledb: Add session wait event sampling (#48353)
Add new opt-in log eventdb.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). - (Contrib)
receiver/postgresql: Clean up the query_sample template to exclude our own connection and remove null query_start staements. (#47317) - (Contrib)
receiver/sqlquery: Report component status on database connection and query failures for health check v2 integration. (#43837) - (Contrib)
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.
- (Contrib)
receiver/sqlserver: Add Latch metrics for SQL Server receiver. (#48032)
Added five new opt-in metrics:sqlserver.latch.wait.rate— latch waits per secondsqlserver.latch.wait_time.avg— average latch wait timesqlserver.latch.wait_time.total— total cumulative latch wait timesqlserver.latch.superlatch.count— active superlatch countsqlserver.latch.superlatch.transition.rate— superlatch promotions/demotions withtransition.directionattribute
- (Contrib)
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.areawithmemory.poolattribute (target, total, sql_cache, optimizer, connection, granted_workspace, max_workspace)sqlserver.memory.page.countwithpage.poolattribute (cache, total, target, database, stolen, reserved, free)sqlserver.memory.cache.object.countwithcache.stateattribute (in_use, total)
- (Contrib)
receiver/sqlserver: Add session attributes todb.server.query_sampleevent. (#48346)
Thedb.server.query_samplelog 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.
- (Contrib)
receiver/statsd: Add support for configuring socket buffer size (#47379) - (Contrib)
receiver/windows_event_log: Add EVTX file support (#48047)
🧰 Bug fixes 🧰
- (Core)
pkg/exporterhelper: Fix nil-pointer panic insending_queue::batchUnmarshal whensending_queue::sizeris set andsending_queue::batch::enabledis false. (#14687)
Whensending_queue::sizerwas set andsending_queue::batch::enabled: false
cleared the batch Optional to None, the sizer-inheritance branch in
queuebatch.Config.Unmarshaldereferenced a nil Optional and crashed the
collector at startup. The branch now also requiresBatch.HasValue(). - (Contrib)
extension/text_encoding: Fix text encoding log unmarshalling for large messages when no unmarshaling separator is configured. (#48696) - (Contrib)
processor/resource_detection: Remove outdated warning about GKE host.name not being available with Workload Identity (#48876) - (Contrib)
processor/tail_sampling: span-ingest: Clean up storage and memory for implicit unsampled traces after decision wait (#48874) - (Contrib)
receiver/awss3: Strip the.zstsuffix from the object key after zstd decompression so files written byawss3exporterwithcompression: zstd(e.g.foo.binpb.zst) are correctly parsed instead of being dropped as "Unsupported file format". (#47802) - (Contrib)
receiver/host_metrics: Fix double-counting of CPU guest/guest_nice time, Linux already includes guest time within the user/nice fields (#48024) - (Contrib)
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. - (Contrib)
receiver/mysql: FixUSEandEXPLAIN FORMAT=jsoninexplainQueryto execute on the same database connection, ensuring the schema context set byUSEis visible to the subsequentEXPLAIN. (#48170)
Previously,USEandEXPLAINwere issued on the connection pool without pinning, so they could land on different connections. Both statements now run on the same*sql.Connacquired viadb.Conn(ctx). - (Contrib)
receiver/prometheus_remote_write: Fix exemplars for counters with multiple label-set variants being attached to the wrong datapoint. (#48674)
Docker Image Manifests:
- Linux (amd64, arm64, ppc64le) and Windows (2019 amd64, 2022 amd64):
quay.io/signalfx/splunk-otel-collector:0.154.0- digest:
sha256:b11a6e592248a2281cf95a765d30660a9951f04b0935f91d9ae93db5839b3b52