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.
v0.18.0-alpha - 2024-11-20
- Split the functionality of
Instrumentation.Run
toInstrumentation.Load
andInstrumentation.Run
.Load
will report any errors in the loading and attaching phase of the probes. (#1245)
- Include
server.address
andserver.port
in gRPC spans (>=v1.60.0). (#1242) - Support Go standard libraries for 1.22.9 and 1.23.3. (#1250)
- Support
google.golang.org/grpc
1.68.0
. (#1251) - Support
golang.org/x/net
0.31.0
. (#1254) - Support
go.opentelemetry.io/[email protected]
. (#1302)
- Don't include
db.query.text
attribute indatabase/sql
if the query string is empty or not collected. (#1246) - Handle a
ConfigProvider
which doesn't provide a sampling config in the initial configuration by applying the default sampler. (#1292)
- The deprecated
go.opentelemetry.io/auto/sdk/telemetry
package is removed. (#1252) - The deprecated
go.opentelemetry.io/auto/sdk/telemetry/test
module is removed. (#1252) - Remove the
WithLoadedIndicator
InstrumentationOption
since theInstrumentation.Load
will indicate whether the probes are loaded in a synchronous way. (#1245)
v0.17.0-alpha - 2024-11-05
- The SDK provided in
go.opentelemtry.io/auto/sdk
now defaults to No-Op behavior for unimplemented methods of the OpenTelemetry API. This is changed from causing a compilation error for unimplemented methods. (#1230) - The
GetTracerProvider
function ingo.opentelemtry.io/auto/sdk
is renamed toTracerProvider
. (#1231)
- Sporadic shutdown deadlock. (#1220)
- Only support status codes for versions of
google.golang.org/grpc
>=1.40
. (#1235)
- The
go.opentelemetry.io/auto/sdk/telemetry
package is deprecated. This package will be removed in the next release. (#1238) - The
go.opentelemetry.io/auto/sdk/telemetry/test
module is deprecated. This module will be removed in the next release. (#1238)
v0.16.0-alpha - 2024-10-22
- Support
golang.org/x/net
v0.30.0
. (#1149) - Support
google.golang.org/grpc
1.65.1
. (#1174) - Support
go.opentelemetry.io/[email protected]
. (#1178) - Support
google.golang.org/grpc
1.69.0-dev
. (#1203) - Implement traceID ratio and parent-based samplers. (#1150)
- The
go.opentelemetry.io/auto/sdk
module. This module is used directly when you want to explicilty use auto-instrumentation to process OTel API telemetry. It is also provided so the default OTel global API will use this when auto-instrumentation is loaded (WIP). (#1210)
- The
"golang.org/x/net/http2".FrameHeader.StreamID
offset for version0.8.0
is corrected. (#1208) - The
"golang.org/x/net/http2".MetaHeadersFrame.Fields
offset for version0.8.0
is corrected. (#1208)
v0.15.0-alpha - 2024-10-01
- Support Go
v1.21.13
. (#988) - Support Go
v1.22.6
. (#988) - Support
golang.org/x/net
v0.28.0
. (#988) - Support
google.golang.org/grpc
1.67.0-dev
. (#1007) - Support Go
1.23.0
. (#1007) - Introduce
config.Provider
as an option to set the initial configuration and update it in runtime. (#1010) - Support
go.opentelemetry.io/[email protected]
. (#1032) - Support
google.golang.org/grpc
1.66.0
. (#1046) Sampler
interface that can be passed toInstrumentation
via the newWithSampler
option. This is wireframe configuration, it currently has not effect. It will be used to allows customization of what sampler is used by theInstrumentation
. Implementation, of this feature is expected in the next release. (#982)- The
OTEL_TRACES_SAMPLER
andOTEL_TRACES_SAMPLER_ARG
environment variables are now supported when theWithEnv
option is used. (#982) - Support
golang.org/x/net
v0.29.0
. (#1051) - Support Go
1.22.7
. (#1051) - Support Go
1.23.1
. (#1051) - Log version information in the CLI. (#1077)
- Support
google.golang.org/grpc
1.66.1
. (#1078) - Add gRPC status code attribute for client spans (
rpc.grpc.status_code
). (#1044) - Support
google.golang.org/grpc
1.68.0-dev
. (#1044) - Support
go.opentelemetry.io/[email protected]
. (#1044) - The
WithLogger
InstrumentationOption
is added as a replacement forWithLogLevel
. Anslog.Logger
can now be configured by the user any way they want and then passed to theInstrumentation
for its logging with this option. (#1080) - Support
google.golang.org/grpc
1.66.2
. (#1083) - Support
google.golang.org/grpc
1.67.0
. (#1116) - Support
google.golang.org/grpc
1.66.3
. (#1143) - Support
google.golang.org/grpc
1.67.1
. (#1143) - Support Go
1.22.8
. (#1143) - Support Go
1.23.2
. (#1143) - Add gRPC status code attribute for server spans (
rpc.grpc.status_code
). (#1127)
- The
WithSampler
option function now accepts the newSampler
interface instead oftrace.Sampler
. (#982)
WithLogLevel
is removed. UseWithLogger
instead. (#1080)- The unused
LogLevelDebug
constant is removed. (#1080) - The unused
LogLevelInfo
constant is removed. (#1080) - The unused
LogLevelWarn
constant is removed. (#1080) - The unused
LogLevelError
constant is removed. (#1080) - The unused
LogLevel
type is removed. (#1080) - The unused
ParseLogLevel
function is removed. (#1080) - Drop agent build support for Go 1.21. (#1115)
v0.14.0-alpha - 2024-07-15
- Add support to log level through command line flag. (#842)
- The
WithLogLevel
function andLogLevel
type are added to set the log level forInstrumentation
. (#842) - The
otelglobal
probe now collects the user provided tracer name, version and schemaURL. (#844) - Add
codespell
make target. (#863) - Initial support for
trace-flags
. (#868) - Support
google.golang.org/grpc
1.66.0-dev
. (#872) - Add telemetry distro name & version resource attributes. (#897)
- Support
google.golang.org/grpc
1.65.0
. (#904) - Support Go
v1.21.12
. (#905) - Support Go
v1.22.5
. (#905) - Support
go.opentelemetry.io/[email protected]
. (#905) - Support
google.golang.org/grpc
1.63.3
. (#916) - Support
google.golang.org/grpc
1.64.1
. (#916) - Support
golang.org/x/net
v0.27.0
. (#917)
- Upgrade semconv from
v1.24.0
tov1.26.0
ingithub.com/segmentio/kafka-go
instrumentation. (#909)- The
messaging.operation
attribute key is renamed tomessaging.operation.type
. - The
messaging.kafka.destination.partition
key is renamed tomessaging.destination.partition.id
- The
- Upgrade semconv from
v1.21.0
tov1.26.0
indatabase/sql
instrumentation. (#911)- The
db.statement
attribute key is renamed todb.query.text
.
- The
- Upgrade semconv from
v1.24.0
tov1.26.0
ingoogle.golang.org/grpc
instrumentation. (#912)- The
net.peer.name
attribute key in client instrumentation is renamed toserver.address
.
- The
- Upgrade semconv to
v1.26.0
innet/http
instrumentation. (#913) - Upgrade
go.opentelemetry.io/auto
semconv tov1.26.0
. (#914)
- The HTTP client now uses the
Host
field from the URL if theRequest.Host
is not present. (#888)
v0.13.0-alpha - 2024-06-04
github.com/segmentio/kafka-go
instrumentation. (#709)- Support
go.opentelemetry.io/[email protected]
. (#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/[email protected]
. (#850) - Support
golang.org/x/net
v0.26.0. (#871) - Support Go
v1.21.11
. (#871) - Support Go
v1.22.4
. (#871)
- 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
andprocess.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) - Update existing 3rd party licenses. (#864)
v0.12.0-alpha - 2024-04-10
- Support
golang.org/x/net/[email protected]
. (#744) - Support
google.golang.org/[email protected]
. (#744) - Support
google.golang.org/[email protected]
. (#744) - Support
google.golang.org/[email protected]
. (#744) - Support
google.golang.org/[email protected]
. (#761) - Support
google.golang.org/[email protected]
. (#761) - Support Go
v1.21.9
. (#744) - Support Go
v1.22.2
. (#744) - Support
golang.org/x/net/[email protected]
. (#746) - Support
go.opentelemetry.io/[email protected]
. (#748) - Update project Go version used to build to 1.21 (#747)
- 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
- Test build using Go 1.22. (#672)
- Base Dockerfile and build caching (#683)
- Add
server.address
,server.port
andnetwork.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)
- Don't call
manager.Close()
whenAnalyze()
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
- Support version
v0.20.0
ofgolang.org/x/net
. (#587) - Support version
v1.20.13
andv1.21.6
of Go. (#589) - Add support for manual instrumentation with Span
SetName
. (#590) - Add support for manual instrumentation with Span
SetStatus
(#591])
- 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
- Add
net.host.name
,net.protocol.name
,net.peer.name
, andnet.peer.port
attributes to HTTP server spans. (#470 - Support version
v1.60.1
ofgoogle.golang.org/grpc
. (#568)
- Correct the target probe argument positions for the
v1.60.0
and greater versions of thegoogle.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
- 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 configureInstrumentation
to add additional resource attributes. (#522) - Support versions
v0.18.0
andv0.19.0
ofgolang.org/x/net
. (#524) - Add the status code to HTTP client instrumentation. (#527)
- Support versions
v1.20.12
,v1.21.4
, andv1.21.5
of Go standard library. (#535) - Support version
v1.60.0
ofgoogle.golang.org/grpc
. (#555)
- The instrumentation scope name for the
database/sql
instrumentation is nowgo.opentelemtry.io/auto/database/sql
. (#507) - The instrumentation scope name for the
gin
instrumentation is nowgo.opentelemtry.io/auto/github.com/gin-gonic/gin
. (#507) - The instrumentation scope name for the
google.golang.org/grpc/client
instrumentation is nowgo.opentelemtry.io/auto/google.golang.org/grpc
. (#507) - The instrumentation scope name for the
google.golang.org/grpc/server
instrumentation is nowgo.opentelemtry.io/auto/google.golang.org/grpc
. (#507) - The instrumentation scope name for the
net/http/client
instrumentation is nowgo.opentelemtry.io/auto/net/http
. (#507) - The instrumentation scope name for the
net/http/server
instrumentation is nowgo.opentelemtry.io/auto/net/http
. (#507) - The instrumentation for
client.Do
was changed to instrumentation forTransport.roundTrip
. (#529)
- 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
- Add the
WithEnv
InstrumentationOption
to configureInstrumentation
to parse the environment. TheInstrumentation
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 traceSpanExporter
used by anInstrumentation
. (#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)
- Documentation no longer says that
SYS_PTRACE
capability is needed. (#388) - The
NewInstrumentation
no longer parses environment variables by default. Use the newWithEnv
option to enable environment parsing. (#417) NewInstrumentation
now requires acontext.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)
- 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 thegolang.org/x/net
within thegoogle.golang.org/grpc
server instrumentation. (#450)
- The deprecated
go.opentelemetry.io/auto/examples/rolldice
module is removed. (#423)
v0.7.0-alpha - 2023-10-15
- Add
WithServiceName
config option for instrumentation. (#353) - Add
WithPID
config option for instrumentation. (#355)
- 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)
- The
go.opentelemetry.io/auto/examples/rolldice
module is deprecated. It will be moved into thego.opentelemetry.io/auto/examples
module in the following release. (#304)
- 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
- Add database/sql instrumentation (#240)
- Support Go 1.21. (#264)
- Add
Instrumentation
togo.opentelemetry.io/auto
to manage and run the auto-instrumentation provided by the project. (#284)- Use the
NewInstrumentation
to create aInstrumentation
with the desired configuration by passing zero or moreInstrumentationOption
s. - Use
WithTarget
when creating anInstrumentation
to specify its target binary.
- Use the
- 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 returnedData
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)
- Fix context propagation across different goroutines. (#118)
- The offset tracker can once again build binaries for the Go stdlib. ([#256]#256)
- 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
- 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)
- Upgrade OpenTelemetry semantic conventions to v1.18.0. (#162)
- Remove the HTTP path from span names in
net/http
,gin-gonic/gin
, andgorilla/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
- Fix gRPC instrumentation memory access issue on newer kernels. (#150)
- 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)
- 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
- 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)
- Use verion spans in
offsets_results.json
instead of storing each version. (#45) - Change
OTEL_TARGET_EXE
environment variable toOTEL_GO_AUTO_TARGET_EXE
. (#97)
v0.1.0-alpha - 2023-04-17
This is the first release of OpenTelemetry Go Automatic Instrumentation.