java agent代码

Trask Stalnaker f1beb2397f Intellij cleanup of markdown and yaml (#3284) 3 years ago
.githooks 4a943c8411 Use Spotless for formatting (DataDog/dd-trace-java#1619) 4 years ago
.github f1beb2397f Intellij cleanup of markdown and yaml (#3284) 3 years ago
benchmark 3b09d46950 Introduce IgnoredTypesConfigurer SPI to enable defining per-module ignores (#3219) 3 years ago
benchmark-e2e 2436499a09 Update to Errorprone 2.7 (#3181) 3 years ago
benchmark-integration f9dcd03b4b Rename unused try-with-resources scope variables (#3201) 3 years ago
bom-alpha c358a35414 Use dependency management pattern for dependency versions (#3113) 3 years ago
buildSrc dc316609ee Remove unnecessary final on params and local vars (#3283) 3 years ago
dependencyManagement 5f49dc0e4a Extract agent shadow configuration to conventions script. (#3256) 3 years ago
docs f1beb2397f Intellij cleanup of markdown and yaml (#3284) 3 years ago
examples f1beb2397f Intellij cleanup of markdown and yaml (#3284) 3 years ago
gradle ceaa92ad36 Disable default resource providers in tests. (#3288) 3 years ago
instrumentation f1beb2397f Intellij cleanup of markdown and yaml (#3284) 3 years ago
instrumentation-api 1cc893b009 Spring Integration library instrumentation (#3120) 3 years ago
instrumentation-api-caching c3dedbb64e Enable all errorprone checks (#3155) 3 years ago
javaagent b8cddc0dd8 Only include exporters in -all jar. (#3286) 3 years ago
javaagent-api 24aa31ebc3 Fix context leak in akka-http instrumentation (DataDog/dd-trace-java#2320) (#3264) 3 years ago
javaagent-bootstrap 2436499a09 Update to Errorprone 2.7 (#3181) 3 years ago
javaagent-bootstrap-tests c358a35414 Use dependency management pattern for dependency versions (#3113) 3 years ago
javaagent-exporters b8cddc0dd8 Only include exporters in -all jar. (#3286) 3 years ago
javaagent-extension-api ceaa92ad36 Disable default resource providers in tests. (#3288) 3 years ago
javaagent-tooling 8be100637a Fix ForkJoinPool sometimes not instrumented (#3293) 3 years ago
licenses 79d7e88e53 Use Caffeine for weak maps (#2601) 4 years ago
opentelemetry-api-shaded-for-instrumenting c358a35414 Use dependency management pattern for dependency versions (#3113) 3 years ago
opentelemetry-ext-annotations-shaded-for-instrumenting c358a35414 Use dependency management pattern for dependency versions (#3113) 3 years ago
smoke-tests c92fbcf624 Update to OTel SDK 1.3.0 (#3253) 3 years ago
testing 5f49dc0e4a Extract agent shadow configuration to conventions script. (#3256) 3 years ago
testing-common b25ac0f1ad Clean up old operation name terminology (#3282) 3 years ago
.editorconfig 5c1a432c54 Update old name (#2440) 4 years ago
.gitattributes 1d4c150111 Add task to generate license report into licenses folder. (#2239) 4 years ago
.gitignore a6e0e27ad4 Remove usage of Contexts from grpc instrumentation. (#1426) 4 years ago
CHANGELOG.md c24949eea9 Fix change log (#3000) 3 years ago
CONTRIBUTING.md 9ea6fcd7b8 Update CONTRIBUTING.md (#2426) 4 years ago
LICENSE f2f89a5e22 Update to standard LICENSE file for OpenTelemetry (#19) 5 years ago
README.md f1beb2397f Intellij cleanup of markdown and yaml (#3284) 3 years ago
RELEASING.md b86748fcda Update links to workflows in RELEASING.md (#2340) 4 years ago
VERSIONING.md 3a206db032 Add VERSIONING doc (#2490) 4 years ago
build.gradle 5f49dc0e4a Extract agent shadow configuration to conventions script. (#3256) 3 years ago
code-of-conduct.md 5d8c6c3e67 Add code-of-conduct file. (#2341) 4 years ago
gradle.properties 2d683d4289 No more gradle warnings (#2103) 4 years ago
gradlew 9cd2d627ca Upgrade to Gradle 6.6 (#1073) 4 years ago
gradlew.bat 9cd2d627ca Upgrade to Gradle 6.6 (#1073) 4 years ago
settings.gradle b8cddc0dd8 Only include exporters in -all jar. (#3286) 3 years ago

README.md


Getting Started   •   Getting Involved   •   Getting In Touch

Build Status GitHub release (latest by date including pre-releases) Beta

Contributing   •   Scope   •   Roadmap


OpenTelemetry Icon OpenTelemetry Instrumentation for Java

About

This project provides a Java agent JAR that can be attached to any Java 8+ application and dynamically injects bytecode to capture telemetry from a number of popular libraries and frameworks. You can export the telemetry data in a variety of formats. You can also configure the agent and exporter via command line arguments or environment variables. The net result is the ability to gather telemetry data from a Java application without code changes.

This repository also publishes standalone instrumentation for several libraries (and growing) that can be used if you prefer that over using the Java agent. Please see standalone library instrumentation if you are looking for documentation on using those.

Getting Started

Download the latest version.

This package includes the instrumentation agent as well as instrumentations for all supported libraries and all available data exporters. The package provides a completely automatic, out-of-the-box experience.

Enable the instrumentation agent using the -javaagent flag to the JVM.

java -javaagent:path/to/opentelemetry-javaagent-all.jar \
     -jar myapp.jar

By default, the OpenTelemetry Java agent uses OTLP exporter configured to send data to OpenTelemetry collector at http://localhost:4317.

Configuration parameters are passed as Java system properties (-D flags) or as environment variables. See the configuration documentation for the full list of configuration items. For example:

java -javaagent:path/to/opentelemetry-javaagent-all.jar \
     -Dotel.resource.attributes=service.name=your-service-name \
     -Dotel.traces.exporter=zipkin \
     -jar myapp.jar

Configuring the Agent

The agent is highly configurable! Many aspects of the agent's behavior can be configured for your needs, such as exporter choice, exporter config (like where data is sent), trace context propagation headers, and much more.

Click here to see the detailed list of configuration environment variables and system properties.

Note: Config parameter names are very likely to change over time, so please check back here when trying out a new version! Please report any bugs or unexpected behavior you find.

Supported libraries, frameworks, and application servers

We support an impressively huge number of libraries and frameworks and a majority of the most popular application servers...right out of the box! Click here to see the full list and to learn more about disabled instrumentation and how to suppress unwanted instrumentation.

Manually instrumenting

For most users, the out-of-the-box instrumentation is completely sufficient and nothing more has to be done. Sometimes, however, users wish to add attributes to the otherwise automatic spans, or they might want to manually create spans for their own custom code.

See here for detailed instructions.

Logger MDC (Mapped Diagnostic Context) auto-instrumentation

It is possible to inject trace information like trace id and span id into your custom application logs.

See Logger MDC auto-instrumentation

Troubleshooting

To turn on the agent's internal debug logging:

-Dotel.javaagent.debug=true

Note: These logs are extremely verbose. Enable debug logging only when needed. Debug logging negatively impacts the performance of your application.

Roadmap to 1.0 (GA)

See GA Requirements

Contributing

See CONTRIBUTING.md.

Triagers (@open-telemetry/java-instrumentation-triagers):

Approvers (@open-telemetry/java-instrumentation-approvers):

Maintainers (@open-telemetry/java-instrumentation-maintainers):

Learn more about roles in the community repository.

Thanks to all the people who already contributed!