OpenTelemetry for Go Is Almost a Go
It took a while, but OpenTelemetry will shortly be able to fully accommodate Go and applications written in Go. This has served as a potential boon for users of Go, which is known for its relatively low learning curve, compiling capabilities and other advantages versus Python, for example. The specification for Go, which will be available soon, was revealed during a Q&A session at a KubeCon + CloudNativeCon talk, “OpenTelemetry: What’s Next? Logs, Profiles, and More.” Go’s status for logs will be “stable” as soon as this year, to complement its stable status for traces and metrics.
But what does OpenTelemetry mean for those who use their favorite observability tools but don’t exactly understand how it can help them? How might OpenTelemetry be relevant to the folks who are new to Kubernetes (the majority of KubeCon attendees during the past years) and those who are just getting started with observability?
A bridge is being built for @golang for @opentelemetry, as @splunk‘s Tyler Yahn explained during “What’s Next? Logs, Profiles, and More” #KubeCon + #CloudNative North America 2023. @thenewstack pic.twitter.com/Janafbu2JE
— BC Gain (@bcamerongain) November 8, 2023
The OpenTelemetry project contributors are “very active” in developing a bridge for Go and associated modules waiting for a final specification for the popular language, said Tyler Yahn, a senior software engineer at Splunk. Yahn was an attendee at the talk but answered questions as one of the OpenTelemetry for Go project experts. “We are actively working on Go, and it’s obviously a big project. I would imagine in just a few weeks we will have a stable version for logs. The idea is to make it as seamless as possible with the bridge with the specification with plenty of resources for users. We’re also looking at modern instrumentation for the migration path.”
Observability for All Infrastructure
The idea is to increasingly rely on OpenTelemetry to eventually provide observability capabilities to all infrastructure. As indicated in the description of the KubeCon + CloudNative talk, the session covered what’s coming next, including new signals and sources. Attendees of the beginner-level talk learned about OpenTelemetry’s new logging functionality, including its two logging paths, the benefits of each and real-world production examples. New enhancements, including profiling, and the insights that this unlocks in combination with distributed traces, and how observability is being extended to client applications, were described. The talk ended with a Q&A with over 10 of those working on the OpenTelemetry project, during which Yahn shared the status of the Go specification.
Go is seen as “incredibly important” for OpenTelemetry and its users, Morgan McLean, director of product management at Splunk, told The New Stack. “It’s one of the world’s most popular programming languages and is particularly well used within the cloud native space. Go achieving stability for metrics is a very big deal for the project, because it means that developers and operators of Go applications can capture out-of-the-box application metrics and can easily create custom metrics that can be sent to any destination,” McLean said. “These metrics share the same semantics as all other OpenTelemetry data, meaning that they can be easily analyzed at scale and correlated with other signals regardless of their source.”
Since announcing metrics spec and protocol stability last year, OpenTelemetry has released stable implementations across seven languages (including Go) and the OpenTelemetry Collector agent, McLean said. “Logs recently achieved stability across the spec, protocol, Collector, and four languages, and we anticipate that more languages will meet these milestones for metrics and logs throughout the next few months,” he said. “Personally, I’m really excited to see how people use these new capabilities, along with upcoming signals like profiles.”
OpenTelemetry extends beyond Go, of course. Here is a list of the programming languages it supports and their status: