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

We at Helios took the legwork out of getting OTel installed in distributed systems and microservices. This new approach for OTel auto-instrumentation in Go is easy to implement and maintain, and at the same time is non-intrusive and easy to understand.  Our approach is based on a combination of AST manipulation and proxy libraries.

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.

Golang Observability 

Visibility See your service map and API catalog easily

Interactions’ Payloads Gain visibility into the communication between various components and inspect payloads

Onboarding Allows new developers and SREs to easily understand your architecture

Troubleshooting in Golang

Root Cause Analysis Quickly pinpoint the root cause of your issues using Stack trace, error logs, and trace correlation

Replay Flows Find failed requests, generate snippets, and re-run them with the same or different parameters

Golang Testing

Pinpoint Failed Tests Efficiently pinpoint the root cause of failed tests and gain insight into tests running in CI/CD 

Trace-based Testing Eliminate the need to build testing infrastructure by creating trace-based tests from real traffic

Collaboration

Share Traces, tests and triggers with your team

Collaborate Generate, test, build and edit tests together

Visibility Give your team visibility of issues in your local environment

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:

Blog - standard
Helios is now part of Snyk!
We are thrilled to announce that Snyk has acquired Helios! It’s been quite an amazing, bumpy, yet satisfying...
Read More
Challenges of existing SCA tools
Challenges with Traditional SCA Tools
Application security testing tools are designed to ensure that applications are put through rigorous...
Read More
Banner for blog post - Scaling microservices - Challenges, best practices and tools
The Challenges of Collecting Runtime Data
Collecting data in real-time plays a crucial role in securing, monitoring, and troubleshooting applications....
Read More

Increase your dev velocity
with actionable telemetry data