opentelemetry-go-instrumentation
by
odigos-io

Description: OpenTelemetry auto-instrumentation for Go applications

View on GitHub ↗

Summary Information

Updated 2 hours ago
Added to GitGenius on January 22nd, 2023
Created on February 13th, 2022
Open Issues & Pull Requests: 22 (+0)
Number of forks: 44
Total Stargazers: 297 (+0)
Total Subscribers: 10 (+0)

Issue Activity (beta)

Open issues: 0
New in 7 days: 0
Closed in 7 days: 0
Avg open age: N/A days
Stale 30+ days: 0
Stale 90+ days: 0

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

The OpenTelemetry Go Instrumentation project provides automatic instrumentation capabilities for Go applications without requiring source code modifications. Built primarily in C, the project leverages eBPF uprobes technology to inject OpenTelemetry tracing and observability into Go binaries at runtime. This approach enables developers to gain distributed tracing and performance monitoring insights into their Go applications with zero code changes, addressing a significant gap in the Go ecosystem where automatic instrumentation has historically lagged behind languages like Java and Python.

The project supports a broad range of Go versions starting from 1.12 and notably functions even on stripped binaries, which is particularly valuable in containerized and production environments where binary optimization is common. The instrumentation framework is designed to work seamlessly in Kubernetes environments, with dedicated getting started documentation for users deploying Go applications on Kubernetes clusters. This focus on Kubernetes integration reflects the project's alignment with modern cloud-native deployment patterns.

Current instrumentation coverage includes several widely-used Go libraries and frameworks. The project instruments net/http servers, gRPC clients and servers, and Gorilla Mux routing framework. These represent foundational components in many Go microservices architectures, allowing developers to automatically capture request tracing, latency metrics, and error information across these critical communication layers without manual instrumentation code.

The technical foundation relies on eBPF uprobes, a Linux kernel technology that enables dynamic instrumentation of user-space applications. This approach avoids the overhead and complexity of code injection or compilation-time modifications, instead hooking into function entry and exit points at runtime. The project provides detailed documentation on how this mechanism works, enabling users and contributors to understand the instrumentation process.

GitGenius activity data indicates this is an actively maintained project with ongoing development and community engagement. The repository has been classified across multiple observability and instrumentation domains, reflecting its broad applicability to performance monitoring, distributed tracing, metrics collection, and API instrumentation scenarios. The project explicitly welcomes contributions, issues, and questions from the community, with a dedicated contributing guide available for potential contributors.

The project is maintained by keyval and operates under the Apache 2.0 open source license, ensuring it remains freely available for both commercial and non-commercial use. The team acknowledges the project is in its initial days while actively seeking community feedback and contributions to expand instrumentation coverage and improve the overall implementation. This combination of active maintenance, clear contribution pathways, and permissive licensing positions the project as an accessible tool for organizations seeking to add observability to their Go applications without the operational burden of code-level instrumentation changes.

opentelemetry-go-instrumentation
by
odigos-ioodigos-io/opentelemetry-go-instrumentation

Repository Details

Fetching additional details & charts...