Skip to content

v0.11.0

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Aug 19:06
· 25 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.11.0
2f8603c

Overview

v0.11.0 is a minor release that activates OpenTelemetry Go Trace API auto-instrumentation, enables Configuration v2 for standalone OBI and the OBI Collector receiver, adds plain-text trace-log correlation, expands runtime and protocol coverage, and strengthens parser, lifecycle, and telemetry reliability.

Go instrumentation and runtime metrics

  • Activated automatic instrumentation for applications that use the OpenTelemetry Go Trace API without registering an SDK, including eligibility checks, optional probe orchestration, SpanContext offset discovery, and span payload export. (#2698, #2724, #2810, #2819, #2820, #2962)
  • Expanded Go runtime telemetry with CPU, memory, scheduler, GC, and histogram metrics, and distinguished reused PIDs when attributing runtime metrics. (#2665, #2694, #2740, #2781, #2915)
  • Added Go HTTP server request-body extraction and Go HTTP/2 client payload extraction, and retained raw query strings for Go HTTP spans. (#1941, #2760, #2938)

Configuration v2

  • Enabled Configuration v2 in v0.11.0 for both standalone OBI and the OBI Collector receiver, while retaining Configuration v1 compatibility. (#2681, #2682)
  • Added obi config validate and obi config migrate for standalone and receiver configurations, including fail-closed checks for unsupported or lossy migrations. (#2679, #2799, #2943)
  • Added stable declarative fields, per-rule obfuscation, unified HTTP route policies, stricter document validation, deterministic YAML export, and stronger conversion and migration parity checks. (#2629, #2647, #2680, #2700, #2811, #2815, #2816, #2817, #2944)

Important

Configuration v1 remains supported. Before migrating, follow the Config v1 to v2 migration guide and canary the generated configuration. The migrator does not automatically consume configuration supplied through environment overlays and rejects settings it cannot preserve. In receiver mode, standalone-only enrichment, correlation, daemon, and exporter settings must move to the appropriate Collector processors, service telemetry, and pipelines.

Protocol and Generative AI coverage

  • Added Aerospike client and kernel-side protocol instrumentation, together with Configuration v2 schema and protocol mappings. (#2545, #2839, #2982)
  • Added incremental Deno support while preventing Node.js agent injection into Deno processes. (#2777, #2957)
  • Added OpenAI-compatible gateway support, native Ollama chat and generation instrumentation, Gemini streaming responses, and normalized OpenAI Responses content. (#2530, #2672, #2710, #2927)
  • Improved GenAI semantic-convention coverage for token availability, embeddings, individual tool-call spans, tool arguments and results, and opt-in provider error status messages. (#2588, #2749, #2759, #2795, #2804, #2845)
  • Improved SQL span names and type detection, database collection metrics, PostgreSQL namespace caching, Redis pipelines and existing connections, and multi-topic Kafka extraction and span generation. (#2623, #2652, #2656, #2663, #2677, #2683, #2686, #2693, #2722)

Context propagation, log correlation, and telemetry

  • Added trace context to plain-text application logs with configurable field names, prefix or suffix placement, and multiline selection. JSON objects and newline-delimited JSON continue to receive structured enrichment. (#2697)
  • Improved HTTP/2 and gRPC propagation for pre-existing connections, preserved HTTP server context through response bodies, and avoided duplicate HTTP/1 traceparent injection. (#2752, #2772, #2809)
  • Reported real OTLP trace export outcomes, attached host metadata to OBI internal metrics, and expanded Weaver semantic-convention validation across integration suites. (#2716, #2721, #2723, #2785, #2946)

Runtime, tracing, and protocol fixes

  • Fixed never-ending Go transactions, restored reliable Go process instrumentation when probes cannot be resolved, and read Go HTTP/2 stream IDs correctly on arm64. (#2676, #2726, #2825)
  • Fixed buffered Go channel handoff matching and shared Puma correlation maps across BPF collections. (#2575, #2608)
  • Fixed ambiguous OTLP export detection, restored metric-provider contracts, and omitted empty HTTP methods from metrics. (#2735, #2879, #2921)
  • Improved Node.js script injection, inspector WebSocket handling, standard URLPattern route harvesting, and NestJS route expansion bounds. (#2806, #2812, #2813, #2858)

Reliability and security hardening

  • Bounded and validated malformed ELF offsets, MQTT packets, HPACK state, Mongo responses, reverse DNS messages, raw trace records, ring-buffer records, watcher events, and large-buffer integer arithmetic. (#2569, #2881, #2882, #2885, #2887, #2892, #2897, #2900, #2901)
  • Hardened tracer, PID-cache, map sizing, TC manager, and socket lifecycle behavior, including shutdown and verifier edge cases. (#2594, #2607, #2613, #2620, #2800, #2846, #2854, #2895)
  • Restricted the TCP health endpoint, stopped logging process environments and attributes, and updated security-affected gRPC and klauspost/compress dependencies. (#2621, #2625, #2841, #2907, #2908)

Behavior changes and compatibility notes

Warning

Plain-text log enrichment is enabled by default for every service selected by the log enricher. After upgrading, non-JSON writes that were previously re-emitted unchanged receive space-separated trace_id=... span_id=... fields. This can break downstream parsers for structured non-JSON formats. Set ebpf.log_enricher.plain_text.enabled: false before upgrading to preserve the previous behavior, or set extensions.obi.correlation.log_trace_annotation.plain_text.enabled: false in Configuration v2. (#2697)

  • Direct OTLP consumers now receive OpenTelemetry dot-notation metric names: target_info is now target.info, traces_target_info is now traces.target.info, traces_host_info is now traces.host.info, traces_span_metrics_calls_total is now traces.span.metrics.calls, and traces_span_metrics_duration is now traces.span.metrics.duration. Prometheus metric names are unchanged. (#2634, #2963)
  • The deprecated application_jvm feature alias was removed; use the shared application_runtime feature. (#2909)
  • Native Configuration v2 authoring uses a default-on capture policy. Omitting capture.policy.default_action, or using include, captures processes that no rule excludes; the migration command writes an explicit policy when needed to preserve Configuration v1 selection behavior. (#2945)

Build, validation, and release infrastructure

  • Updated the project to Go 1.26.5 and cilium/ebpf v0.22.0. (#2584, #2635)
  • Added BPF tests to CI, unit tests on arm64, and broader Weaver validation of OBI telemetry. (#2770, #2853, #2937, #2951)
  • Added nightly releases and SHA-based image tags for main, and tightened Cosign verification of release artifacts. (#2548, #2574, #2609)

What's Changed

General

Fixed

  • Fix empty telemetry.distro.version in published Docker images by @pinoOgni in #2554
  • Harden fastelf parsing against malformed ELF offsets by @MrAlias in #2569
  • Fix buffered channel receive handoff matching by @MrAlias in #2575
  • fix(ebpf): share puma correlation maps across BPF collections by @KarasWinds in #2608
  • fix(tpinjector): only inject HPACK traceparent into genuine HTTP/2 by @mariomac in #2734
  • Fix bpf verifier rejection of jvm runtime metrics on older arm64 kernels by @pinoOgni in #2756
  • fix(ebpf): never scale array maps in SetupMapSizes by @bourbonkk in #2800
  • Stop caching negative PID filter results by @MrAlias in #2814
  • Bound Gemini partialArgs array expansion by @MrAlias in #2840
  • Add Aerospike to v2 instrumentation schema and protocol mappings by @MrAlias in #2839
  • Limit NestJS route harvesting expansion by @MrAlias in #2813
  • Harden integration shard generation by @MrAlias in #2886
  • Harden StatsO11y ring-buffer decoding by @MrAlias in #2885
  • Distinguish reused PIDs in runtime metrics by @MrAlias in #2915
  • Restore metric provider shutdown conformance by @MrAlias in #2879
  • Harden Mongo response correlation by @MrAlias in #2897
  • Bound MQTT parsing to packet bodies by @MrAlias in #2900
  • Harden HPACK decoder conformance by @MrAlias in #2901
  • Preserve Config v2 rule semantics by @MrAlias in #2883
  • Harden flaky-run attempt validation by @MrAlias in #2896
  • Harden raw trace record dispatch by @MrAlias in #2881
  • Harden TC manager lifecycle handling by @MrAlias in #2895
  • Harden LargeBuffer integer boundary handling by @MrAlias in #2892
  • Restrict nightly release workflow to main by @MrAlias in #2956
  • Fix Go Auto SDK scope assertions for Jaeger v2 by @MrAlias in #2961
  • Harden reverse DNS message parsing by @MrAlias in #2882
  • Harden watcher event decoding and shutdown by @MrAlias in #2887
  • Route integration workflows by build inputs by @MrAlias in #2880
  • fix(genai): normalize OpenAI Responses content by @MrAlias in #2927
  • Capture Request.URL.RawQuery for Go HTTP spans by @pinoOgni in #2938
  • Fix perapp.MetricsConfig references missed by rename by @pinoOgni in #2984
  • Order container store lifecycle updates by @MrAlias in #2893

Documentation

Dependencies

New Contributors

Full Changelog: v0.10.0...v0.11.0