Skip to content

Latest commit

 

History

History
354 lines (271 loc) · 30.9 KB

CHANGELOG.md

File metadata and controls

354 lines (271 loc) · 30.9 KB

Changelog

All notable changes to OpenTelemetry Go Automatic Instrumentation are documented in this file.

The format is based on Keep a Changelog.

OpenTelemetry Go Automatic Instrumentation adheres to Semantic Versioning.

Added

  • kafka-go instrumentation (#709)
  • Support go.opentelemetry.io/otel@v1.26.0. (#796)
  • Support HTTP server path template added in Go version 1.22.
  • The http.route attribute is included and the span name updated to use this information. (#740)
  • Support golang.org/x/net v0.25.0. (#821)
  • Support Go v1.21.10. (#824)
  • Support Go v1.22.3. (#824)
  • Support google.golang.org/grpc 1.65.0-dev. (#827)
  • Support google.golang.org/grpc 1.64.0. (#843)
  • WithLoadedIndicator InstrumentationOption to configure an Instrumentation to notify the caller once all the eBPF probes are loaded. (#848)
  • Add env var equivalent to the WithGlobal InstrumentationOption. (#849)
  • Support go.opentelemetry.io/otel@v1.27.0. (#850)

Fixed

  • Change HTTP client span name to {http.request.method} (#775)
  • Don't set empty URL path in HTTP client probe. (#810)
  • Don't fail HTTP client probe attribute resolution on empty URL path. (#810)
  • Extract process.runtime.version and process.runtime.name from instrumented process. (#811)
  • Support Go versions from apps defining GOEXPERIMENT. (#813)
  • Update net/http instrumentation to comply with semantic conventions v1.25.0. (#790)

v0.12.0-alpha - 2024-04-10

Added

  • Support golang.org/x/net/http2@v0.23.0. (#744)
  • Support google.golang.org/grpc@v1.61.2. (#744)
  • Support google.golang.org/grpc@v1.62.2. (#744)
  • Support google.golang.org/grpc@v1.63.0. (#744)
  • Support google.golang.org/grpc@v1.63.1. (#761)
  • Support google.golang.org/grpc@v1.63.2. (#761)
  • Support Go v1.21.9. (#744)
  • Support Go v1.22.2. (#744)
  • Support golang.org/x/net/http2@v0.24.0. (#746)
  • Support go.opentelemetry.io/otel@v1.25.0. (#748)
  • Update project Go version used to build to 1.21 (#747)

Fixed

  • Handle Ctrl-C signal while searching for the target PID (#731)
  • Pass PID to UprobeOptions (#742)
  • Remove Gin duplicate probe (#780)

v0.11.0-alpha - 2024-03-26

Added

  • Test build using Go 1.22. (#672)
  • Base Dockerfile and build caching (#683)
  • Add server.address, server.port and network.protocol.version to HTTP client spans (#696)
  • Update http server attributes to latest semantic conventions (#708)
  • Don't use external memory for http client header injection (#705)

Fixed

  • Don't call manager.Close() when Analyze() fails. (#638)
  • Close proc file when done discovering PID. (#649)
  • Use debug packages to parse Go and modules' versions. (#653)
  • Clean up warn in otelglobal SetStatus() when grabbing the status code. (#675)
  • Reset proc offset after a failed iteration. (#681)
  • Avoid using runtime.NumCPU to get the number of CPUs on the system before remote mmap (#680)
  • Cleanup eBPF maps only when we stop using the memory (#682)
  • Fix start offset calculation in mmaped memory area (#738)

v0.10.1-alpha - 2024-01-10

Added

  • Support version v0.20.0 of golang.org/x/net. (#587)
  • Support version v1.20.13 and v1.21.6 of Go. (#589)
  • Add support for manual instrumentation with Span SetName. (#590)
  • Add support for manual instrumentation with Span SetStatus (#591])

Fixed

  • Log any failures to close running probes. (#586)
  • Log explanatory error message on Linux kernel lockdown (#290)
  • (otelglobal) Fixed case where multiple span.SetAttributes() calls would overwrite existing attributes (#634)

v0.10.0-alpha - 2024-01-03

Added

  • Add net.host.name, net.protocol.name, net.peer.name, and net.peer.port attributes to HTTP server spans. (#470
  • Support version v1.60.1 of google.golang.org/grpc. (#568)

Fixed

  • Correct the target probe argument positions for the v1.60.0 and greater versions of the google.golang.org/grpc server instrumentation. (#574, #576)
  • Do not instrument the OpenTelemetry default global implementation if the user has already set a delegate. (#569)

v0.9.0-alpha - 2023-12-14

Added

  • The CLI flag global-impl is added. This flag, when used, enables the instrumentation of the OpenTelemetry default global implementation (https://pkg.go.dev/go.opentelemetry.io/otel). This means that all trace telemetry from this implementation that would normally be dropped will instead be recorded with the auto-instrumentation pipeline. ([#523]#523)
  • Add WithResourceAttributes InstrumentationOption to configure Instrumentation to add additional resource attributes. (#522)
  • Support versions v0.18.0 and v0.19.0 of golang.org/x/net. (#524)
  • Add the status code to HTTP client instrumentation. (#527)
  • Support versions v1.20.12, v1.21.4, and v1.21.5 of Go standard library. (#535)
  • Support version v1.60.0 of google.golang.org/grpc. (#555)

Changed

  • The instrumentation scope name for the database/sql instrumentation is now go.opentelemtry.io/auto/database/sql. (#507)
  • The instrumentation scope name for the gin instrumentation is now go.opentelemtry.io/auto/github.com/gin-gonic/gin. (#507)
  • The instrumentation scope name for the google.golang.org/grpc/client instrumentation is now go.opentelemtry.io/auto/google.golang.org/grpc. (#507)
  • The instrumentation scope name for the google.golang.org/grpc/server instrumentation is now go.opentelemtry.io/auto/google.golang.org/grpc. (#507)
  • The instrumentation scope name for the net/http/client instrumentation is now go.opentelemtry.io/auto/net/http. (#507)
  • The instrumentation scope name for the net/http/server instrumentation is now go.opentelemtry.io/auto/net/http. (#507)
  • The instrumentation for client.Do was changed to instrumentation for Transport.roundTrip. (#529)

Fixed

  • Support commit hash version for dependencies. If a dependency falls within a known version range used by instrumentation, and its offset structure has not changed, instrumentation will default to the known offset value instead of failing to run. (#503)

v0.8.0-alpha - 2023-11-14

Added

  • Add the WithEnv InstrumentationOption to configure Instrumentation to parse the environment. The Instrumentation will no longer by default parse the environment. This option needs to be used to enable environment parsing, and the order it is passed influences the environment precedence. All options passed before this one will be overridden if there are conflicts, and those passed after will override the environment. (#417)
  • Add the WithTraceExporter InstrumentationOption to configure the trace SpanExporter used by an Instrumentation. (#426)
  • Add HTTP status code attribute to net/http server instrumentation. (#428)
  • The instrumentation scope now includes the version of the auto-instrumentation project. (#442)
  • Add a new WithSampler method allowing end-users to provide their own implementation of OpenTelemetry sampler directly through the package API. (#468).
  • Add uprobes to execDC in order to instrument SQL DML. (#475)

Changed

  • Documentation no longer says that SYS_PTRACE capability is needed. (#388)
  • The NewInstrumentation no longer parses environment variables by default. Use the new WithEnv option to enable environment parsing. (#417)
  • NewInstrumentation now requires a context.Context as its first argument. This context is used in the instantiation of exporters. (#426)
  • Instrumentation now uses an OTLP over HTTP/protobuf exporter (changed from gRPC/protobuf). (#426)

Fixed

  • Parse Go versions that contain GOEXPERIMENT suffixes. (#389)
  • Include the schema URL for the semantic convention used in the exported resource. (#426)
  • Support Go module replace directives for the golang.org/x/net within the google.golang.org/grpc server instrumentation. (#450)

Removed

  • The deprecated go.opentelemetry.io/auto/examples/rolldice module is removed. (#423)

v0.7.0-alpha - 2023-10-15

Added

  • Add WithServiceName config option for instrumentation. (#353)
  • Add WithPID config option for instrumentation. (#355)

Changed

  • Fix bug in the net/http server instrumentation which always created a new span context. (#266)
  • Fix runtime panic if OTEL_GO_AUTO_TARGET_EXE is not set. (#339)
  • Improve eBPF context propagation stability (#368)

Deprecated

  • The go.opentelemetry.io/auto/examples/rolldice module is deprecated. It will be moved into the go.opentelemetry.io/auto/examples module in the following release. (#304)

Removed

  • The deprecated go.opentelemetry.io/auto/offsets-tracker module is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpf/github.com/gorilla/mux package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/test/e2e/gorillamux module is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/inject package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/errors package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/process package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/process/ptrace package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/opentelemetry package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpf/net/http/client package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpf/net/http/server package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpf/github.com/gin-gonic/gin package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpf/github.com/gorilla/mux package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpf/google/golang/org/grpc package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpf/google/golang/org/grpc/server package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/utils package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/context package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/allocator package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/bpffs package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/instrumentors/events package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/pkg/log package is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/test/e2e/gin module is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/test/e2e/gorillamux module is removed. (#302)
  • The deprecated go.opentelemetry.io/auto/test/e2e/nethttp module is removed. (#302)
  • The deprecated instrumentation support for github.com/gorilla/mux is removed. (#303)

v0.3.0-alpha - 2023-09-12

Added

  • Add database/sql instrumentation (#240)
  • Support Go 1.21. (#264)
  • Add Instrumentation to go.opentelemetry.io/auto to manage and run the auto-instrumentation provided by the project. (#284)
    • Use the NewInstrumentation to create a Instrumentation with the desired configuration by passing zero or more InstrumentationOptions.
    • Use WithTarget when creating an Instrumentation to specify its target binary.

Changed

  • The function signature of "go.opentelemetry.io/auto/offsets-tracker/downloader".DownloadBinary has changed. It now has an additional flag indicating whether it'll build a dummy app for Go stdlib packages or not. ([#256]#256)
  • The function signature of "go.opentelemetry.io/auto/offsets-tracker/target".New has changed. It now accepts a flag to determine if the returned Data is from the Go stdlib or not. ([#256]#256)
  • Use UPROBE_RETURN to declare the common uprobe return logic (finding the corresponding context, setting up end time, and sending the event via perf buffer) ([#257]#257)
  • BASE_SPAN_PROPERTIES as common fields (start time, end time, SpanContext and ParentSpanContext) for all instrumentations events (consistent between C and Go structs). ([#257]#257)
  • Header guards in eBPF code. ([#257]#257)

Fixed

  • Fix context propagation across different goroutines. (#118)
  • The offset tracker can once again build binaries for the Go stdlib. ([#256]#256)

Deprecated

  • The go.opentelemetry.io/auto/offsets-tracker module is deprecated. It will be removed in the following release. (#281)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpf/github.com/gorilla/mux package is deprecated. It will be removed in the following release. (#262)
  • The go.opentelemetry.io/auto/test/e2e/gorillamux module is deprecated. It will be removed in the following release. (#262)
  • The go.opentelemetry.io/auto/pkg/inject package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/errors package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/process package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/process/ptrace package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/opentelemetry package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpf/net/http/client package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpf/net/http/server package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpf/github.com/gin-gonic/gin package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpf/github.com/gorilla/mux package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpf/google/golang/org/grpc package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpf/google/golang/org/grpc/server package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/utils package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/context package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/allocator package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/bpffs package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/instrumentors/events package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/pkg/log package is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/test/e2e/gin module is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/test/e2e/gorillamux module is deprecated. It will be removed in the following release. (#282)
  • The go.opentelemetry.io/auto/test/e2e/nethttp module is deprecated. It will be removed in the following release. (#282)

v0.2.2-alpha - 2023-07-12

Added

  • The net/http client instrumentor. (#91)
  • Context propagation to the net/http server instrumentation. (#92)
  • Simplified example of an HTTP service in go.opentelemtry.io/auto/examples/rolldice. (#195)

Changed

  • Upgrade OpenTelemetry semantic conventions to v1.18.0. (#162)
  • Remove the HTTP path from span names in net/http, gin-gonic/gin, and gorilla/mux instrumentations. (#161)
  • Update generated offsets. (#186)
  • Reduce Docker image size by using different base image. (#182)
  • Support for multiple processes in BPF FS. (#211)

v0.2.1-alpha - 2023-05-15

Fixed

  • Fix gRPC instrumentation memory access issue on newer kernels. (#150)

Changed

  • Only pull docker image if not present for the emojivoto example. (#149)
  • Update HTTP span names to include method and route to match semantic conventions. (#143)
  • Fix missing spans in gorillamux instrumentation. (#86)

Changed

  • Update HTTP span names to include method and route to match semantic conventions. (#143)
  • Add DockerHub to release destinations. (#152)

v0.2.0-alpha - 2023-05-03

Added

  • Add gin-gonic/gin instrumentation. (#100)
  • Add ARM64 support. (#82)
  • Add OTEL_GO_AUTO_SHOW_VERIFIER_LOG environment variable to control whether the verifier log is shown. (#128)

Changed

  • Use verion spans in offsets_results.json instead of storing each version. (#45)
  • Change OTEL_TARGET_EXE environment variable to OTEL_GO_AUTO_TARGET_EXE. (#97)

v0.1.0-alpha - 2023-04-17

This is the first release of OpenTelemetry Go Automatic Instrumentation.