Go (Golang) observability with
OpenTelemetry (OTel)
Troubleshooting Go-based microservices can be tough if you don’t have proper observability. One rather simple way to gain observability is by implementing OpenTelemetry (OTel). OTel has become an essential tool for Go developers, enabling them to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) in cloud-native microservices-based architectures. However, instrumenting OTel in Go is hardly a straightforward process.
OTel auto-instrumentation in Go
No risk
We don’t put its host application at risk of memory corruption, segmentation fault, or similar issues. Worst case scenario - the compilation process fails. Nothing is harmed and fixing it is straightforward.
Easy to install
Takes 5-10 minutes on average. Install the SDK, install OpenTelemetry dependencies, configure a trace provider, and run the helios-instrumentor executable.
Easy to Maintain
Easily written and maintained without deep knowledge of the Go internals.
No magic tricks
The library's source code is open to all. Easily understand what’s happening, and debug if necessary.
The value of Helios for Golang (Go) developers
Investigate issues, reproduce scenarios, and generate tests faster with actionable data across your microservices, messaging systems, data pipelines, and databases.
FAQs
Detailed instructions can be found in our docs.
Completely. The instrumentor adapts your code to support the OpenTelemetry instrumentation before or during compilation. You can run it without building to inspect the changes.
Since the changes are done before compilation, the impact of wrong compilation will usually be a compilation error, in which case you can simply revert the change.
No. Helios is free to use.
Helios automates the process of making code changes to instrument Go libraries using OpenTelemetry. On top of that, our instrumentation is configured to collect all the data you may need to troubleshoot your application and to make sure that context is propagated properly across different services.
We support the same versions that are supported by OpenTelemetry, namely 1.18 and 1.19.
We provide several methods of making sure your sensitive data remains confidential. You may collect metadata only (with no payloads at all) or obfuscate your payloads. If you need any more capabilities, feel free to reach out.
The proxy libraries are auto-generated using an internal tool that we’ve developed in-house. It basically extracts the interface of the original library (e.g., Go’s net/http) and generates a thin wrapper around it. We then take this wrapper and perform the instrumentation itself.
We use the same mechanism of interface extraction that we use to generate the proxy libraries, and compare it to the interface of the proxy library, which should be identical.
Different module versions are managed by different git tags of the proxy library.
Helios’ approach to OTel Instrumentation in Go
A mechanism that involves creating proxy libraries and leveraging the AST manipulation approach to replace the imports during or before compilation. We explain why we took this approach in this blog post.
Trusted by
More Resources on Distributed Tracing with Helios:
Increase your dev velocity
with actionable telemetry data