opentelemetry-go-auto-instrumentation
OpenTelemetry Compile-Time Instrumentation for Golang
About opentelemetry-go-auto-instrumentation
Loongsuite Go Agent provides an automatic solution for Golang applications that want to
leverage OpenTelemetry to enable effective observability. No code changes are
required in the target application, the instrumentation is done at compile
time. Simply adding otel prefix to go build to get started :rocket:
Installation
[!IMPORTANT] Requires Go 1.25+ for both the tool and the instrumented application. See compatibility.
Prebuilt Binaries
Install via Bash
For Linux and macOS, the following script installs otel to /usr/local/bin/otel by default:
$ curl -fsSL https://cdn.jsdelivr.net/gh/alibaba/loongsuite-go@main/install.sh | sudo bash
Build from Source
$ make # build only
$ make install # build and install
Getting Started
Make sure the tool is installed:
$ # You may use "otel-linux-amd64" instead of "otel"
$ otel version
Just adding otel prefix to go build to build your project:
$ otel go build
$ otel go build -o app cmd/app
$ otel go build -gcflags="-m" cmd/app
That's the whole process! The tool will automatically instrument your code with OpenTelemetry, and you can start to observe your application. :telescope:
The detailed usage of otel tool can be found in Usage.
[!NOTE] If you find any compilation failures while
go buildworks, it's likely a bug. Please feel free to file a bug at GitHub Issues to help us enhance this project.
Examples
- demo - End-to-end example with OpenTelemetry tracing and metrics
- zap logging - Auto-instrumentation for
go.uber.org/zaplogging - benchmark - Performance testing and overhead measurement
- sql injection - Custom code injection for SQL injection detection
- nethttp - HTTP monitoring with request/response instrumentation
- kratos-demo - Integration with the Kratos framework
- kafka-demo - Kafka consumer message monitoring
Supported Libraries
We are progressively open-sourcing the libraries we have supported, and your contributions are Very Welcome
[!IMPORTANT] The framework you expected is not in the list? Don't worry, you can easily inject your code into any frameworks/libraries that are not officially supported.
Please refer to this document to get started.
Community
This project has been contributed upstream to the OpenTelemetry community and successfully incubated the official opentelemetry-go-compile-instrumentation project.
Join our DingTalk group or scan the QR codes below.
| LoongCollector SIG | LoongSuite Python SIG | LoongSuite Go SIG | LoongSuite Java SIG |
|---|---|---|---|
Star History
Frequently Asked Questions
What is opentelemetry-go-auto-instrumentation?
opentelemetry-go-auto-instrumentation is a Distributed Systems library for the Go programming language. OpenTelemetry Compile-Time Instrumentation for Golang
How do I install opentelemetry-go-auto-instrumentation?
Install opentelemetry-go-auto-instrumentation with the Go module system using `go get alibaba/opentelemetry-go-auto-instrumentation`. Check the repository for the current installation instructions.
What category does opentelemetry-go-auto-instrumentation belong to?
opentelemetry-go-auto-instrumentation is listed under Distributed Systems, specifically Distributed Systems.