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

4 hours ago

Overview

v0.14.0 is a feature release that expands runtime and protocol coverage, strengthens trace-context propagation, and advances OBI's telemetry schema toward stable signals.

Highlights

  • Reduces the privileges needed for most instrumentation: OBI can attach uprobes and kprobes without CAP_SYS_ADMIN, falling back to tracefs when PMU access is blocked by Linux security policy. Features that use bpf_probe_write_user, including library-level Go context propagation, still require CAP_SYS_ADMIN. (#3490, #3606)
  • Adds GPU metrics, broader .NET runtime metrics, Node.js active-resource metrics, and runtime metrics for stripped Go and Python binaries. (#3482, #3542, #3581, #3258, #3484, #3522, #3240)
  • Adds route harvesting for Django, FastAPI, Flask, Rails, .NET, Symfony, Laravel, and Slim. (#3410, #3366, #3374, #3376, #3402)
  • Improves HTTP/2 and gRPC trace-context propagation, including legacy ownership, continuation frames, multiplexed buffers, and per-stream traceparents. (#3489, #3530, #3518, #3544, #3587)
  • Adds AWS SNS instrumentation, MCP metrics, generic Python asyncio server support, and dynamic Kubernetes workload selection. (#3415, #3351, #3540, #2826, #3472)
  • Publishes OBI's full telemetry schema, promotes stable and release-candidate signals, and records the obi.error to error.type schema transformation. (#3219, #3559)

Release-impacting changes

  • The OTLP span metrics (traces.span.metrics.*, and the traces_spanmetrics_* names the legacy feature emits over OTLP) no longer carry the host.id data point attribute. The value is unchanged on the resource, so OTLP consumers reading resource attributes lose nothing and target_info still carries host_id. A consumer flattening OTLP to Prometheus no longer gets host_id as a per-series label on the span metrics themselves. OBI's own Prometheus exporter is unaffected.
  • OBI's own OTEL_RESOURCE_ATTRIBUTES now ranks below metadata resolved for a target and merges per key rather than per variable. Target declarations still win, and resolved metadata now outranks the agent's values.
  • span.obi.http.client no longer declares the JSON-RPC attributes. They move to span.obi.jsonrpc.client, except rpc.method_original, which only a Go net/rpc server span carries. Emitted telemetry is unchanged.
  • Messaging and RPC span group IDs are now per-system. Existing links to the replaced group IDs in site/docs/spans.md no longer resolve; emitted attributes are unchanged.
  • The pinned traces_ctx_v1 map is no longer populated by default. External trace-profile correlation requires ebpf.populate_trace_context (OTEL_EBPF_BPF_POPULATE_TRACE_CONTEXT) to be set to true. OBI's log enricher and Node.js manual span bridge enable it automatically.
  • Go channel span links may be emitted less often when handoff correlation previously depended on the traces_ctx_v1 fallback. ebpf.populate_trace_context: true restores the fallback.
  • Parsed span attributes whose values cannot be determined are omitted instead of emitted as empty strings. Manual span attributes and resource attributes are unchanged; metric labels retain their existing empty-string behavior.
  • service.peer.name disappears only where OBI resolves no peer name. This mainly affects deployments that disable name resolution and embedders that omit it.
  • service.peer.name, http.request.body.size, http.response.body.size, and obi.http.response.observed are now opt-in span attributes. Select them through attributes.select.traces.include when needed. Downstream service-graph generation may need service.peer.name selected explicitly.
  • Protocol-specific GraphQL, MCP, GenAI tool, JSON-RPC, and SQL attributes moved from generic HTTP and database schema groups into their new protocol-specific groups. Emitted telemetry is otherwise unchanged.
  • HTTP server, HTTP client, and SQL database client span groups are now stable. gRPC client and server groups are release candidates, and span.metrics.skip is declared opt-in.
  • Required/conditional declarations in new protocol server groups now match group membership and actual emission. Emitted telemetry is unchanged.
  • Elastic Cloud client spans and database-operation metrics now carry db.namespace from X-Found-Handling-Cluster. Existing Elastic Cloud metric series split by cluster, and requests without an index are named with the cluster rather than host and port.
  • HTTP duration and body-size metrics now carry error.type by default on failed requests. Prometheus gives every affected series an error_type label, using an empty value for successful requests, which recreates existing series.
  • The registry removes impossible non-SQS messaging client groups and declares cloud attributes already emitted on target-info metrics. Emitted telemetry is unchanged.
  • AWS SQS spans no longer carry aws.extended_request_id; S3 spans are unaffected.

What's Changed

General

Fixed

  • fix(bpf): clamp spilled sizes again at the point of use by @pinoOgni in #3378
  • fix(bpf): write packet-end bounds checks in the form old verifiers mark exactly by @pinoOgni in #3375
  • Bound grpc-go header verification by @MrAlias in #3513
  • logenricher: keep log lines shorter than 8 bytes by @mmat11 in #3607

Documentation

  • docs: fix NATS delivered-message span kind wording by @pinoOgni in #3355
  • docs: document remaining accepted v1 limitations by @MrAlias in #3590

Dependencies

  • Update go toolchain directive to v1.27.1 by @renovate[bot] in #3331
  • Update module github.com/go-sql-driver/mysql to v1.10.1 by @renovate[bot] in #3333
  • Update module github.com/shirou/gopsutil/v4 to v4.26.8 by @renovate[bot] in #3334
  • Update module github.com/vektah/gqlparser/v2 to v2.5.37 by @renovate[bot] in #3335
  • Update module github.com/go-playground/validator/v10 to v10.30.4 by @renovate[bot] in #3332
  • Update dependency bootsnap to v1.26.0 by @renovate[bot] in #3311
  • Update otel/ebpf-instrument Docker tag to v0.13.0 by @renovate[bot] in #3347
  • Update LVH kernel images by @renovate[bot] in #3346
  • Update integration test pinned images by @renovate[bot] in #3345
  • Update Docker by @renovate[bot] in #3344
  • Update Go Auto SDK latest fixture to v1.46.0 by @renovate[bot] in #3254
  • Update module github.com/andybalholm/brotli to v1.2.3 by @renovate[bot] in #3247
  • Update open-telemetry/shared-workflows action to v0.13.0 by @renovate[bot] in #3370
  • Update module google.golang.org/grpc to v1.83.2 [SECURITY] by @renovate[bot] in #3369
  • Pin qdrant/qdrant Docker tag to 241edb9 by @renovate[bot] in #3361
  • Update qdrant/qdrant Docker tag to v1.19.1 by @renovate[bot] in #3362
  • Update grafana/otel-lgtm Docker tag to v0.33.0 by @renovate[bot] in #3393
  • build(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /internal/test/integration/components/go_grpc_server_mux by @dependabot[bot] in #3397
  • Update otel/weaver Docker tag to v0.26.1 by @renovate[bot] in #3348
  • Update victoriametrics/vmagent Docker tag to v1.152.0 by @renovate[bot] in #3411
  • Update module github.com/ohler55/ojg to v1.28.6 by @renovate[bot] in #3407
  • Update module github.com/andybalholm/brotli to v1.2.4 by @renovate[bot] in #3404
  • Update module github.com/go-delve/delve to v1.27.2 by @renovate[bot] in #3405
  • Update module github.com/onsi/ginkgo/v2 to v2.32.2 by @renovate[bot] in #3408
  • Update module go.mongodb.org/mongo-driver to v1.17.10 by @renovate[bot] in #3409
  • Update module go.opentelemetry.io/ebpf-profiler to v0.0.202636 by @renovate[bot] in #3336
  • Update otel/opentelemetry-collector-contrib Docker tag to v0.160.0 by @renovate[bot] in #3420
  • Update quay.io/prometheus/prometheus Docker tag to v3.14.0 by @renovate[bot] in #3421
  • Update LVH kernel images by @renovate[bot] in #3431
  • Update otel/opentelemetry-collector-contrib Docker tag to v0.161.0 by @renovate[bot] in #3444
  • Update Github Actions by @renovate[bot] in #3442
  • Update nginx Docker tag to v1.31.6 by @renovate[bot] in #3443
  • Update nginx:1.31.6-alpine Docker digest to d0a6faa by @renovate[bot] in #3449
  • Update dependency symfony/framework-bundle to v8 by @renovate[bot] in #3441
  • Update github.com/microsoft/go-winmd digest to 1a466c0 by @renovate[bot] in #3403
  • Update Python by @renovate[bot] in #3462
  • Update dependency @opentelemetry/sdk-trace-node to v2.11.0 by @renovate[bot] in #3461
  • Update otel/opentelemetry-collector-contrib Docker tag to v0.161.0 by @renovate[bot] in #3455
  • Update dependency symfony/framework-bundle to v8 by @renovate[bot] in #3454
  • Update dependency laravel/framework to v13.32.0 by @renovate[bot] in #3453
  • Update Java by @renovate[bot] in #3460
  • Update docker.io/nats Docker tag to v2.15.0 by @renovate[bot] in #3478
  • Update nginx:1.31.6-alpine Docker digest to 35c6bab by @renovate[bot] in #3477
  • Update httpd:2.4.68-alpine Docker digest to 3471d57 by @renovate[bot] in #3476
  • Update module go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp to v1.45.0 [SECURITY] by @renovate[bot] in #3475
  • Update nginx:1.31.6-alpine Docker digest to adad2ae by @renovate[bot] in #3480
  • Update module go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc to v1.45.0 [SECURITY] by @renovate[bot] in #3474
  • Update grafana/otel-lgtm Docker tag to v0.33.1 by @renovate[bot] in #3485
  • Update obi-testimg pinned images by @renovate[bot] in #3430
  • Update dependency api-platform/core to v5 by @renovate[bot] in #3495
  • Update dependency friendsofsymfony/rest-bundle to v3 by @renovate[bot] in #3496
  • Update dependency laravel/framework to v13 by @renovate[bot] in #3497
  • Update dependency slim/slim to v4 by @renovate[bot] in #3499
  • Update symfony packages to v8 by @renovate[bot] in #3500
  • Update httpd:2.4.68-alpine Docker digest to 4e585da by @renovate[bot] in #3501
  • Update Prometheus Go packages by @renovate[bot] in #3503
  • Update Docker Go packages by @renovate[bot] in #3504
  • Update golang.org/x packages by @renovate[bot] in #3505
  • Update module github.com/go-playground/validator/v10 to v10.30.5 by @renovate[bot] in #3502
  • Update jaegertracing/jaeger Docker tag to v2.21.0 by @renovate[bot] in #3436
  • Update LVH kernel images by @renovate[bot] in #3519
  • Update grpc-dotnet monorepo to 2.84.0 by @renovate[bot] in #3509
  • Update dependency ubuntu to v26 by @renovate[bot] in #3539
  • Update Github Actions by @renovate[bot] in #3538
  • Update postgres Docker tag to v18 by @renovate[bot] in #3533
  • Update dependency laravel/framework to v13.33.0 by @renovate[bot] in #3527
  • Update obi-testimg pinned images by @renovate[bot] in #3520
  • Update nginx:1.31.6-alpine Docker digest to d10753d by @renovate[bot] in #3543
  • Update dependency puma to v8 by @renovate[bot] in #3529
  • Update NPM by @renovate[bot] in #3553
  • Update dependency jakarta.platform:jakarta.jakartaee-bom to v11 by @renovate[bot] in #3554
  • Update dependency rails to v8 by @renovate[bot] in #3532
  • Update grafana/otel-lgtm Docker tag to v0.34.0 by @renovate[bot] in #3573
  • Update prom/prometheus Docker tag to v3.15.0 by @renovate[bot] in #3574
  • Update quay.io/prometheus/prometheus Docker tag to v3.15.0 by @renovate[bot] in #3575
  • Update integration test pinned images by @renovate[bot] in #3521
  • Update Java by @renovate[bot] in #3552
  • Update nginx:1.31.6-alpine Docker digest to df221db by @renovate[bot] in #3580
  • Update jaegertracing/jaeger Docker tag to v2.21.0 by @renovate[bot] in #3528
  • Update victoriametrics/vmagent Docker tag to v1.153.0 by @renovate[bot] in #3588
  • Update dependency laravel/framework to v13.34.0 by @renovate[bot] in #3601
  • Update grafana/tempo Docker tag to v3.1.0 by @renovate[bot] in #3604
  • Update opensearchproject/opensearch Docker tag to v3.9.0 by @renovate[bot] in #3609
  • Update LVH kernel images by @renovate[bot] in #3592
  • Update aerospike/aerospike-server Docker tag to v8.2.0.0 by @renovate[bot] in #3593
  • Update mongo Docker tag to v9 by @renovate[bot] in #3615
  • Update quay.io/prometheus/prometheus Docker tag to v3.15.0 by @renovate[bot] in #3620
  • Update jaegertracing/jaeger Docker tag to v2.21.0 by @renovate[bot] in #3618
  • Update otel/opentelemetry-collector-contrib Docker tag to v0.161.0 by @renovate[bot] in #3619
  • Update dependency maven to v3.10.0 by @renovate[bot] in #3622

New Contributors

Full Changelog: v0.13.0...v0.14.0

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

NewReleases is sending notifications on new releases.