github signalfx/splunk-otel-collector v0.162.0

5 hours ago

This Splunk OpenTelemetry Collector release includes changes from the opentelemetry-collector v0.162.0
and the opentelemetry-collector-contrib v0.162.0 releases where appropriate.

🛑 Breaking changes 🛑

  • (Splunk) smartagent/cgroups: Remove the deprecated cgroups Smart Agent monitor. Use the hostmetrics receiver instead. (#8143)
  • (Splunk) smartagent/conviva: Remove the deprecated conviva Smart Agent monitor. (#8144)
  • (Splunk) smartagent/disk-io: Remove the deprecated Windows implementation of the disk-io Smart Agent monitor. Use the disk scraper in the hostmetrics receiver instead. (#8145)
  • (Splunk) smartagent/elasticsearch-query: Remove the deprecated elasticsearch-query Smart Agent monitor. (#8146)
  • (Splunk) smartagent/expvar: Remove the deprecated expvar Smart Agent monitor. Use Go instrumentation instead. (#8147)
  • (Splunk) smartagent/logstash: Remove the deprecated logstash Smart Agent monitor. (#8148)
  • (Splunk) smartagent/net-io: Remove the deprecated net-io Smart Agent monitor. Use the hostmetrics receiver instead. (#8149)
  • (Splunk) telegraf/dns: Remove the deprecated telegraf/dns monitor. Use the DNS check receiver instead. (#8150)
  • (Splunk) telegraf/ntpq: Remove the deprecated telegraf/ntpq monitor. Use the NTP receiver instead. (#8151)
  • (Splunk) telegraf/procstat: Remove the deprecated telegraf/procstat monitor. Use the hostmetrics receiver instead. (#8152)
  • (Splunk) telegraf/snmp: Remove the deprecated telegraf/snmp monitor. Use the SNMP receiver instead. (#8153)
  • (Splunk) telegraf/sqlserver: Remove the deprecated telegraf/sqlserver monitor. Use the SQL Server receiver instead. (#8154)
  • (Splunk) telegraf/statsd: Remove the deprecated telegraf/statsd monitor. Use the StatsD receiver instead. (#8155)
  • (Splunk) telegraf/tail: Remove the deprecated telegraf/tail monitor. Use the count connector instead. (#8156)
  • (Splunk) telegraf/varnish: Remove the deprecated telegraf/varnish monitor. (#8157)
  • (Splunk) telegraf/win_perf_counters: Remove the deprecated telegraf/win_perf_counters monitor. Use the Windows performance counters receiver instead. (#8158)
  • (Splunk) telegraf/win_services: Remove the deprecated telegraf/win_services monitor. Use the Windows service receiver instead. (#8159)
  • (Splunk) receiver/wavefront: Remove the deprecated wavefront receiver from the distribution. Wavefront is EOL and the receiver has been removed upstream. (#8175)
  • (Core) processor/queue_batch: Rename queuebatch processor to queue_batch processor. (#14396)
  • (Contrib) pkg/ottl: Remove the stable ottl.PanicDuplicateName and ottl.contexts.enableOTelColContext feature gates. (#44630, #46437)
  • (Contrib) processor/transform: Remove the stable processor.transform.defaultErrorModeIgnore feature gate. (#51242)
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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 🚩

  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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
    (open-telemetry/semantic-conventions#2768).
    They will be removed in a future release.

🚀 New components 🚀

  • (Splunk) awskinesisexporter: Added the awskinesis exporter to the Splunk distribution of the OpenTelemetry Collector. (#8182)
    The awskinesis exporter allows users to export telemetry data to Amazon Kinesis streams.

💡 Enhancements 💡

  • (Splunk) installer: Add totals to Windows Performance Counters in Windows metrics config. (#8172)
    Modified receivers config option for instances parameter of Windows Performance Counters to collect additionally _Total values.
  • (Splunk) receiver/gnmireceiver: Add yang_modules config option to derive each leaf's metric type (gauge/sum), unit, and enum/identityref value set directly from YANG schema files instead of requiring them in default/overrides. (#8047)
    An explicit overrides entry still takes precedence over the schema, per field: any of
    type/unit/enum_values it leaves unset falls through to the schema, then to default
    (e.g. unit, which most OpenConfig models omit). type becomes optional in default/overrides
    once yang_modules is set.
  • (Splunk) processor/rolling_span_latency: Replace the temporary local rolling_span_latency processor with the now-upstreamed processor. (#8126)
    No configuration or behavior changes; the processor's rolling_span_latency type, config schema, and telemetry
    are unchanged. The local distribution's copy of the processor has been removed.
  • (Splunk) collector: Build Windows FIPS artifacts with the certified Go Cryptographic Module v1.0.0. (#8138)
  • (Splunk) collector: Build Linux FIPS artifacts with the certified Go Cryptographic Module v1.0.0. (#8119)
  • (Splunk) exporter/splunk_outputs: Rename the built-in HEC output stanza from [httpout] to [hecout] to avoid conflicting with the Universal Forwarder's native [httpout] stanza, which is s2s over HTTP rather than HEC. (#8117)
  • (Splunk) packaging: Update Splunk OpenTelemetry .NET agent to v1.16.0 (#8133)
  • (Splunk) packaging: Update Splunk OpenTelemetry Java agent to v2.31.2 (#8186)
  • (Splunk) packaging: Update Splunk OpenTelemetry Java agent to v2.31.3 (#8194)
  • (Splunk) packaging: Update Splunk OpenTelemetry Node.js agent to v4.12.0 (#8196)
  • (Splunk) installer: Run OTel collector on dedicated service user instead of LocalSystem (#8048)
    Use a dedicated Windows virtual service account, NT SERVICE\splunk-otel-collector, for fresh Collector MSI installations.
    Upgrades preserve the existing account by default and warn with the explicit migration command when remaining on LocalSystem.
    Provision only receiver-required access for the virtual account: performance counters, Windows event logs including Security,
    default file-log sources, and file-storage checkpoints.
  • (Core) extension/memory_limiter: Add otelcol_memorylimiter_refused_requests metric to record network request refusals in extension mode. (#15561)
  • (Core) pkg/confighttp: Enable keepalive configuration by default. (#16026)
    Introduces the feature gate pkg.confighttp.PrioritizeNewKeepalive. When disabled, this flag
    restores the old behaviour of removing the keepalive configuration in favour
    of the deprecated fields IdleConnTimeout, MaxIdleConns, MaxIdleConnsPerHost,
    DisableKeepAlives when the flag is disabled.
  • (Core) pkg/exporterhelper: Make the partition idle timeout configurable via batch::partition::idle_timeout and raise the default to 90s. (#15894)
  • (Core) pkg/exporterhelper: Make the multi-batcher partition LRU cache size configurable and export cache size metrics. (#14526)
    Adds sending_queue::batch::partition::cache_size (default 10000) to cap the
    number of active partition batchers. The value
    must be positive. Current size and configured capacity are exported as
    otelcol_exporter_queue_batch_partition_cache_size
    and otelcol_exporter_queue_batch_partition_cache_capacity.
  • (Core) pkg/pprofile: Speed up profiles dictionary merging during exporter-queue batching by replacing the linear-scan dedup in switchDictionary with an indexed lookup, reducing per-merge cost from O(N*L^2) to O(N+L). (#15544)
    No behavior change: merged dictionary contents and remapped indices are identical to before.
  • (Core) pkg/receiverhelper: Stop allocating a span link that is always discarded when a long-lived-context receiver starts an operation without a parent span context. (#15998)
    Receivers created with LongLivedCtx: true no longer build a trace.Link when the
    long-lived context carries no valid span context. The SDK already discarded such a link,
    so behaviour is unchanged. This removes 3 of 7 allocations per receive operation.
  • (Core) pkg/xpdata: Reduce the time xhash.MapHash takes for maps with many entries. (#15990)
  • (Contrib) cmd/opampsupervisor: Enable keepalive by default (#51159)
  • (Contrib) 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)
  • (Contrib) extension/health_check: Enable keepalive by default (#51175)
  • (Contrib) extension/http_forwarder: Enable keepalive by default (#51182)
  • (Contrib) pkg/ottl: Promote the ottl.set.allowNil feature gate to stable. (#49741)
  • (Contrib) processor/lookup: Promote lookup processor to alpha stage (#51199)
  • (Contrib) processor/resource_detection: Add Azure Functions resource detector (#50633)
  • (Contrib) processor/rolling_span_latency: Implement EWMA-based rolling latency baseline tracking and slow/very_slow span labeling. (#50260)
  • (Contrib) processor/transform: Add extract_avg_metric OTTL function to transform processor (#49238)
  • (Contrib) 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.
  • (Contrib) receiver/awscontainerinsightreceiver: Enable keepalive by default (#49316)
  • (Contrib) receiver/awsecscontainermetrics: Enable keepalive by default (#49316)
  • (Contrib) receiver/azure_monitor: Add support for filtering Azure resources by tags. (#50959)
    Filter resources by tag name and optionally by tag value.
  • (Contrib) 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.
  • (Contrib) receiver/collectd: Enable keepalive by default (#49316)
  • (Contrib) receiver/file_stats: move all attributes and metrics to beta (#51260)
  • (Contrib) receiver/haproxy: Enable keepalive by default (#49316)
  • (Contrib) receiver/haproxy: Move all metrics and attributes to beta (#51261)
    Also, change all units to singular form per #45270
  • (Contrib) receiver/http_check: Enable keepalive by default (#49316)
  • (Contrib) receiver/influxdb: Enable keepalive by default (#49316)
  • (Contrib) receiver/jaeger: Enable keepalive by default (#49316)
  • (Contrib) 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 section of the receiver README for details on what convert_to_semantic_conventions does.
  • (Contrib) receiver/kafka: Link the receive span to the trace context in Kafka record headers, using the propagators configured in service::telemetry::traces::propagators. (#51077)
  • (Contrib) receiver/mongodb: Add replica set topology and oplog metrics (#50654)
    Seven opt-in metrics, disabled by default, emitted only by replica set members.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) receiver/ntp: Move ntp receiver metric to beta (#51380)
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) receiver/oracledb: Add the db.system.name attribute to the db.server.query_plan and db.server.session.wait_sample events. (#51065)
  • (Contrib) receiver/postgresql: Add postgresql.backend.connection.start attribute to db.server.query_sample (#50769)
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) receiver/prometheus: Enable keepalive by default (#49316)
  • (Contrib) receiver/prometheus: Use value types and pre-allocate slices when processing scraped samples and building OTLP metrics. (#51133)
  • (Contrib) receiver/prometheus_remote_write: Enable keepalive by default (#49316)
  • (Contrib) receiver/rabbitmq: Add the disabled-by-default rabbitmq.cluster.name resource attribute. (#50168)
  • (Contrib) receiver/receiver_creator: Add a joinHostPort function for receiver template expressions. (#50969)
  • (Contrib) receiver/signalfx: Enable keepalive by default (#49316)
  • (Contrib) receiver/splunk_hec: Enable keepalive by default (#49316)
  • (Contrib) receiver/sqlserver: Add db.system.version resource attribute. (#51194)
    Only available in direct connection mode. Disabled by default.
  • (Contrib) receiver/sqlserver: Add db.namespace and db.system.name to the db.server.query_plan event, so all four log events carry them. (#50629)
  • (Contrib) receiver/tcp_check: move metric to alpha stability (#51381)
  • (Contrib) 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/<name> receivers in one collector can now each reach
    their vCenter through a different proxy.
  • (Contrib) receiver/zipkin: Enable keepalive connections by default (#51139)

🧰 Bug fixes 🧰

  • (Core) exporter/debug: Support known sync error handling on AIX (#15924)
    Enable the debug exporter to handle known synchronous errors on AIX.
  • (Core) pkg/exporterhelper: Drop only the oversized item when splitting a batch, instead of discarding every item queued behind it (#15936)
    Applied to logs only for now
  • (Core) pkg/exporterhelper: Add exporter and data_type attributes to exporter/enqueue spans. (#16022)
  • (Core) receiver/otlp: Error handler preserves the HTTP status code when the request Content-Type is not one a Status can be encoded in (#15995)
    Extends the fix in #13414, which handled a missing Content-Type. A Content-Type that was
    present but unsupported, or malformed, still fell through to
    500 {"code": 13, "message": "failed to marshal error message"}, reporting client errors
    such as 401 from a server auth extension or 400 from an unsupported Content-Encoding as
    server faults.
  • (Contrib) all: Exclude datadogconnector, datadogexporter, and datadogextension on solaris (#51329)
  • (Contrib) 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.
  • (Contrib) 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).
  • (Contrib) 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)
  • (Contrib) 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.
  • (Contrib) extension/google_cloud_logentry_encoding: Fix decoding of log messages larger than 64KiB, which previously failed with "bufio.Scanner: token too long". (#51014)
  • (Contrib) extension/k8s_observer: Format IPv6 Kubernetes port endpoints correctly. (#50969)
  • (Contrib) pkg/ottl: Reject lambda expressions at parse time when they are not passed to a function argument that accepts them. (#51560)
  • (Contrib) 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.
  • (Contrib) processor/cumulative_to_delta: Fix histogram and exponential histogram reset recovery by updating prevPoint on reset detection (#50828)
  • (Contrib) processor/delta_to_cumulative: Fix exponential histogram downscaling exceeding the bucket limit due to incorrect index rounding. (#50923)
  • (Contrib) processor/k8s_attributes: Reject an invalid exclude.pods[].name regex at config load instead of panicking at startup (#50957)
  • (Contrib) processor/k8s_attributes: Emit the semantic convention deprecation warnings that were unreachable because they were evaluated before the extraction rules were populated (#51188)
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) processor/rolling_span_latency: move units to singular form (#45270)
  • (Contrib) processor/tail_sampling: Reuse the original decision's threshold when rewriting tracestate for late-arriving spans of an already-sampled trace. (#50623)
  • (Contrib) processor/transform: Ensure each batch of data receives a fresh cache when shared_cache is enabled (#51087)
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) receiver/fluent_forward: Cap decoded msgpack array entries at 1,000,000 and map options at 1,000 to avoid excessive memory allocation. (#49223)
  • (Contrib) 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.
  • (Contrib) receiver/k8s_events: move units to singular form (#51262)
  • (Contrib) 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)
  • (Contrib) 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)
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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).
  • (Contrib) receiver/kafka_metrics: Set the kafka.cluster.alias resource attribute to enabled when cluster_alias is defined. (#47573)
  • (Contrib) 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.
  • (Contrib) 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)
  • (Contrib) 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.
  • (Contrib) receiver/oracledb: Fix top_query and top_procedure collection running before the configured collection interval has elapsed (#50888)
  • (Contrib) receiver/oracledb: move units to singular form (#45270)
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) 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.
  • (Contrib) receiver/ssh_check: Fix the configured timeout never being applied to the underlying SSH connection. (#50912)
  • (Contrib) receiver/systemd: move units to singular form (#45270)
  • (Contrib) receiver/tcp_check: move units to singular form (#45270)

Docker Image Manifests:

  • Linux (amd64, arm64, ppc64le) and Windows (2019 amd64, 2022 amd64):
    • quay.io/signalfx/splunk-otel-collector:0.162.0
    • digest: sha256:3b69941b3aef72b1142fb2d63d850297cbac4e9c79fc06a2feb4710092ccca60

Don't miss a new splunk-otel-collector release

NewReleases is sending notifications on new releases.