open-telemetry/opentelemetry-java-instrumentation

OpenTelemetry auto-instrumentation and instrumentation libraries for Java

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 19 minutes ago
Added to GitGenius on April 2nd, 2023
Created on September 25th, 2019
Open Issues & Pull Requests: 296 (-1)
Number of forks: 1,141
Total Stargazers: 2,612 (+0)
Total Subscribers: 53 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 12.5 hours
Mean response time: 161.2 days
90th percentile: 767.5 days
Tracked items: 1,444

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 64% of open issues come from outside the core team, a mix of external reports and the maintainers' own roadmap. Work labelled "needs repro" is answered fastest, typically in about 9 hours, while "area:tests" waits about 46 months. 45% of tracked open issues have had no activity in three months. Only 10% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 201
New in 7 days: 34
Closed in 7 days: 27
Avg open age: 344 days
Stale 30+ days: 143
Stale 90+ days: 120

Recent activity

Opened in 7 days: 22
Closed in 7 days: 17
Comments in 7 days: 14
Events in 7 days: 58

Top labels

  • enhancement (536)
  • needs triage (452)
  • bug (427)
  • stale (313)
  • contribution welcome (176)
  • needs author feedback (151)
  • new instrumentation (60)
  • needs repro (41)

Detailed Description

The OpenTelemetry Java Instrumentation repository provides a comprehensive solution for automatic telemetry collection from Java applications without requiring code modifications. The project centers on a Java agent JAR that can be attached to any Java 8 or later application, where it dynamically injects bytecode to capture telemetry data from numerous popular libraries and frameworks. This approach enables organizations to gather observability data from their Java systems with minimal operational overhead.

The repository's core offering is the opentelemetry-javaagent.jar, which includes instrumentation for all supported libraries and available data exporters, providing an out-of-the-box experience. Users enable the agent by adding the -javaagent flag to their JVM startup parameters. By default, the agent uses the OTLP exporter configured to send data to an OpenTelemetry collector at http://localhost:4318, though this is highly configurable through Java system properties and environment variables. The project also publishes standalone instrumentation libraries for several frameworks, offering flexibility for users who prefer not to use the full Java agent approach.

The repository supports an extensive list of libraries, frameworks, and application servers, with comprehensive documentation detailing which instrumentation is enabled by default and which can be suppressed or disabled. Beyond automatic instrumentation, the project provides mechanisms for manual instrumentation when developers need to add custom attributes to automatically generated spans or create spans for proprietary code. Additionally, the repository supports Logger MDC auto-instrumentation, allowing trace information such as trace IDs and span IDs to be injected into custom application logs.

The project includes extensibility features through agent extensions and custom distributions. Extensions allow users to add new capabilities like custom samplers or span exporters without forking the repository or creating separate distributions. The repository also provides guidance on creating custom agent distributions for organizations with specialized requirements.

GitGenius activity data reveals this is an actively maintained project with strong community engagement. The repository's contributor network overlaps with projects including github/gh-aw, solo-io/gloo, and microsoft/vscode, indicating cross-organizational collaboration within the observability ecosystem.

The project is classified across multiple domains including telemetry, distributed tracing, instrumentation agents, performance monitoring, metrics, and application observability, reflecting its comprehensive role in the Java observability landscape. The repository maintains detailed troubleshooting documentation and provides debug logging capabilities through the -Dotel.javaagent.debug flag, though this is noted to have significant performance implications and should only be enabled when necessary.