github open-telemetry/opentelemetry-ebpf-instrumentation v0.15.2

latest release: v1.0.0-rc.2
5 hours ago

Overview

v0.15.2 supersedes the unpublished v0.15.0 and v0.15.1 releases. The v0.15.0 release was blocked by BPF verifier failures; v0.15.1 included that correction but its artifact build failed when version discovery selected the Collector tag. This patch release is intended to ship the release-pipeline correction together with the features and upgrade notes originally prepared for v0.15.0.

Release corrections

  • Uses the selected core release tag consistently for binary archives, generated-source archives, Java SBOMs, and checksums. Core and Collector tags sharing a commit must not let git describe substitute a Collector version into release artifact paths. (#3770)
  • Restores BPF program loading after verifier loop widening by preserving socket-copy bounds, bounding packet hex writes, and separating HTTP/1 traceparent scanning from decoding. Capture limits and trace-context propagation behavior are preserved. (#3759)
  • Prepares core v0.15.2 and collector/v0.15.2, updating the receiver dependency, OATS module references, and Collector Builder example. The telemetry schema advances to 0.15.2 with the existing transformation history; no additional renames are needed. (#3775)

Highlights

  • Ships go.opentelemetry.io/obi/collector as a separate module at collector/v0.15.2, together with root v0.15.2. The receiver keeps its existing import path and an independent v0 release line. (#3748)
  • Captures manual spans through the embedded Go Auto SDK, expands .NET route harvesting and CPU/heap metrics, and adds AWS Route53 endpoint name resolution. (#3678, #3655, #3647, #3697, #3600)
  • Prevents trace-context injection into sockets misclassified as HTTP/2, fixes metric-label tuple collisions and duplicate target.info counts, and keeps the Collector receiver running after its Start context ends. (#3715, #3523, #3665, #3745)
  • Adds Config v2 metric-feature selection, ring-buffer write/failure counters, correct OTLP http/json trace encoding, and security dependency updates. (#3691, #3631, #3728, #3732, #3733, #3734, #3735)

Release-impacting changes

  • Collector upgrades: publish both v0.15.2 and collector/v0.15.2. The root module removes the receiver package; the nested module provides it at the same import path and requires root v0.15.2. RC tags alone do not support discovery through plain go get -u.
  • Config v2 protocol enabled.metrics: false now suppresses that protocol's span metrics and service graphs in both exporters. The migration CLI reports coverage it cannot preserve; Config v1 behavior is unchanged.
  • server.address on HTTP client spans and http.client.* metrics drops the Host header's port; server.port and url.full retain it. IP hosts follow unresolved-name handling, and Kubernetes Service hosts with ports resolve to the service and namespace, changing peer/service-graph names where applicable.
  • PrometheusConfig.Registry is removed. Embedders must configure a Prometheus HTTP port instead of supplying a registry.
  • GenAI client names use the emitted operation and request model, or data-source ID for retrieval. Anthropic message becomes chat on spans and metrics; gateways use names such as chat gpt-4o-mini instead of HTTP names. Missing request models/data-source IDs are omitted from names, with no response-model fallback; unknown operations use _OTHER. OTLP GenAI metrics omit missing gen_ai.request.model rather than emitting an empty value; Prometheus output is unchanged.
  • Database spans without an operation use their target or database-system name; SQL spans can use a namespace alone, and MongoDB/Couchbase spans without a collection use their namespace. SQL query summaries still take precedence. Elasticsearch/OpenSearch spans without an index or cluster use the requested/resolved host and port instead of peer IP; Couchbase SQL++ host targets use the reported server address. Native database names retain their existing host-cardinality limits, and Redis names exclude the namespace.
  • GraphQL server names drop GraphQL; AWS S3/SQS names use S3./SQS. prefixes, and S3 without an operation uses aws-api. Reply-only ONC RPC spans use onc_rpc. These name changes also affect span-metric labels.
  • ONC RPC spans carry rpc.method as {program}/{procedure} when a CALL was captured, and rpc.response.status_code when a REPLY was captured. RPC duration metrics use the same method format, omit it without a CALL, and omit response status without a REPLY instead of reporting success.
  • gRPC names and rpc.method values drop the leading slash, including RPC-duration and span-metric labels. Invalid/unread paths use span name grpc and method _OTHER; captured raw paths are available as rpc.method_original.
  • New default metric attributes split series: db.collection.name on database duration metrics, server.port on RPC client duration, and error.type on failed RPC server duration. Elasticsearch/OpenSearch index names may increase cardinality; exclude the collection attribute if needed.
  • AWS SNS spans drop rpc.system.name and rpc.method; SNS.{operation} names and cloud.region remain.
  • MQTT SUBSCRIBE spans and process metrics use messaging.destination.subscription.name for the filter instead of destination name, and span names drop the filter. Shared subscriptions also emit messaging.consumer.group.name. This conditional rename cannot be expressed by a schema-wide transformation.
  • AMQP OTLP metrics omit empty destinations. Messaging client-duration metrics add default messaging.operation.type; client/process-duration metrics add default subscription name when present. These add Prometheus labels.
  • GraphQL, MCP, and JSON-RPC server spans drop HTTP method/status/route, URL, body-size, user-agent, and OBI response-observation attributes, retaining protocol, address, network, and error attributes. Captured HTTP headers are limited to plain HTTP and GraphQL spans, affecting Go net/rpc JSON-RPC.
  • The registry moves to Weaver definition/2; span reference IDs lose their span. prefix, so old documentation anchors no longer resolve. The published telemetry schema advances to 0.15.2 and retains prior transformations.

What's Changed

General

Fixed

  • HTTP client server.address and K8s name resolution ignore the Host header port by @NimrodAvni78 in #3722
  • fix(otel): send JSON for OTLP traces when protocol is http/json by @pinoOgni in #3728

Dependencies

New Contributors

Full Changelog: v0.14.0...v0.15.2

Don't miss a new opentelemetry-ebpf-instrumentation release

NewReleases is sending notifications on new releases.