Go (Golang) observability with
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
Investigate issues, reproduce scenarios, and generate tests faster with actionable data across your microservices, messaging systems, data pipelines, and databases.
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.
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.
More Resources on Distributed Tracing with Helios:
Increase your dev velocity
with actionable telemetry data