Skip to content

Commit

Permalink
add opentelemetry (#752)
Browse files Browse the repository at this point in the history
  • Loading branch information
sadadw1 authored Nov 16, 2023
2 parents c537b0b + 8ffcd9e commit 89cf871
Show file tree
Hide file tree
Showing 3,887 changed files with 295,714 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
60 changes: 60 additions & 0 deletions opentelemetry-java-instrumentation/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Maven #
#########
target
/target
**/dependency-reduced-pom.xml

# Gradle #
#########
!**/gradle/wrapper/*
.gradle
**/build/
examples/**/build/

# Eclipse #
###########
*.launch
.settings
.project
.classpath
# Eclipse is odd in assuming in can use bin to put temp files into it
# This assumes we do not have sub-projects that actually need bin files committed
*/bin/

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db

# Intellij Idea #
#################
.idea
*.iml
*.ipr
*.iws
out/

# Visual Studio Code #
######################
.vscode

# Others #
##########
/logs/*
/bin
/out
/workspace
java-agent/benchmark-integration/perf-test-settings.rc
derby.log
.java-version
hs_err_pid*
replay_pid*

!java-agent/benchmark/releases/*.jar

251 changes: 251 additions & 0 deletions opentelemetry-java-instrumentation/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
# Changelog

## Unreleased

### 🌟 New javaagent instrumentation

- Spring Integration javaagent instrumentation (#3295)

### 🌟 New library instrumentation

- Spring Integration library instrumentation (#3120)

### 📈 Enhancements

- Support peer-service-mapping in OkHttp3 instrumentation (#3063)
- Low cardinality span names for Hibernate spans (#3106)
- Propagate context to armeria callbacks (#3108)
- Add attributes to netty connection failure span (#3115)
- Defer initialization of OpenTelemetry in spring-boot-autoconfigure (#3171)
- Support couchbase 3.1.6 (#3194)
- New experimental support for agent extensions (#2881, #3071, #3226, #3237)
- Propagate context to akka http callbacks (#3263)

### Behavioral changes

- Update agent logger prefix (#3007)
- Remove khttp instrumentation (#3087)
- Enable akka actor instrumentation by default (#3173)

### 🛠️ Bug fixes

- Remove Netty instrumented handler wrapper when original handler is removed (#3026)
- Fix memory leak when Netty handler is a lambda (#3059)
- Fix race condition on Undertow (#2992)
- Remove db.connection_string from redis instrumentation (#3094)
- Fix context propagation leak in Akka instrumentation (#3099)
- Fix webflux handler span sporadically not ending (#3150)
- End span on cancellation of subscription to reactive publishers (#3153)
- End span on cancellation of Guava future (#3175)
- Create Netty connection failure span only when first operation fails (#3228)
- Internal instrumentation should always be enabled by default (#3257)
- Fix context propagation leak in Akka HTTP instrumentation (#3264)
- Only include exporters in the `-all` jar (#3286)
- Fix ForkJoinPool sometimes not instrumented (#3293)

### 🧰 Tooling

- Migrate MuzzlePlugin to Java (#2996, #3017)
- Refactor TypeInstrumentation#transformers() method (#3019)
- Change a couple of Longs to Integers in Instrumenter API (#3043)
- Add peer.service to Instrumenter API (#3050)
- Add response type parameter to db attributes extractor (#3093)
- Add optimized Attributes implementation for Instrumenter (#3136)
- Rename ComponentInstaller to AgentListener and add #order() method (#3182)
- Update ByteBuddy (#3254)
- Introduce IgnoredTypesConfigurer SPI to enable defining per-module ignores (#3219)
- Extract agent shadow configuration to conventions script (#3256)
- Deprecate SpanExporterFactory in favor of ConfigurableSpanExporterProvider (#3299)
- Refactor span names class (#3281)
- Move http client/server testing dependencies to internal package (#3305)

## Version 1.2.0 - 2021-05-14

### 🌟 New javaagent instrumentation

- RxJava 3
([#2794](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2794))

### 🌟 New library instrumentation

- RxJava 3
([#2794](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2794))

### 📈 Enhancements

- Support sub-millisecond precision for start/end times on Java 9+
([#2600](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2600))
- `@WithSpan` async support added for methods returning async Reactor 3.x types
([#2714](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2714))
- `@WithSpan` async support added for methods returning Guava ListenableFuture
([#2811](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2811))
- Semantic attributes `code.namespace` and `code.function` captured on JAX-RS internal spans
([#2805](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2805))
- Context propagated to reactor-netty callbacks
([#2850](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2850))

### Behavioral changes

- AWS lambda flush timeout raised to 10 seconds
([#2855](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2855))
- `SERVER` span names improved for Spring MVC, Grails, Wicket, and Struts
([#2814](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2814))
- `SERVER` span names improved for Servlet filters
([#2887](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2887))
- `SERVER` span names improved for Resteasy
([#2900](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2900))
- `SERVER` span names improved for Jersey and CXF
([#2919](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2919))
- JAX-RS `@ApplicationPath` annotation captured as part of `SERVER` span name
([#2824](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2824))
- RequestDispatcher `forward()` and `include()` internal spans removed
([#2816](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2816))
- Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API
([#2948](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2948))

### 🛠️ Bug fixes

- gRPC context bridging issues
([#2564](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issue/2564),
[#2959](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issue/2959))
- URL credentials of the form `https://username:[email protected]/` no longer captured
([#2707](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2707))
- Spring MVC instrumentation can cause Spring MVC to misroute requests under some conditions
([#2815](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2815))
- RxJava2 NoSuchFieldError
([#2836](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2836))
- Duplicate http client tracing headers
([#2842](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2842))
- Netty 4.1 listeners could not be removed by application
([#2851](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2851))
- NPE caused in gRPC ProtoReflectionService
([#2876](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2876))
- Context leak when using Ratpack
([#2910](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2910))
- Context leak when using Jetty
([#2920](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2920))
- Servlet instrumentation overwrites setStatus that was set manually earlier
([#2929](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2929))
- Spans not captured on interface default methods annotated with JAX-RS annotations
([#2930](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2930))

### 🧰 Tooling

- Documented how to write InstrumentationModule line by line
([#2793](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2793))
- New instrumenter API used in JMS instrumentation
([#2803](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2803))
- Instrumenter API improvements
([#2860](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2860))
- Muzzle checks whether used fields are actually declared somewhere
([#2870](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2870))
- Extracted javaagent-extension-api from tooling & spi
([#2879](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2879))
- You no longer have to depend on the `javaagent-tooling` module to implement custom instrumentations: a new `javaagent-extension-api` module was introduced, containing all the necessary instrumentation classes and interfaces;
- `InstrumentationModule` and `TypeInstrumentation` were moved to the `io.opentelemetry.javaagent.extension.instrumentation` package;
- `AgentElementMatchers`, `ClassLoaderMatcher` and `NameMatchers` were moved to the `io.opentelemetry.javaagent.extension.matcher` package;
- A new SPI `AgentExtension` was introduced: it replaces `ByteBuddyAgentCustomizer`;
- `InstrumentationModule#getOrder()` was renamed to `order()`;
- `InstrumentationModule#additionalHelperClassNames()` has been removed; use `isHelperClass(String)` instead if you use the muzzle compile plugin. If you're not using muzzle, you can override `getMuzzleHelperClassNames()` directly instead;
- `InstrumentationModule#getAllHelperClassNames()` has been removed; you can call `getMuzzleHelperClassNames()` to retrieve all helper class names instead.

## Version 1.1.0 - 2021-04-14

### ☢️ Breaking changes

- Update servlet attribute names for log injection, from `traceId` and `spanId` to `trace_id` and
`span_id`
([#2593](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2593))
- Renamed `runtime.jvm.gc.collection` metric to `runtime.jvm.gc.time`
([#2616](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2616))

### 🌟 New javaagent instrumentation

- Elasticsearch 7
([#2514](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2514),
[#2528](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2528))
- Couchbase 3.1
([#2524](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2524))
- Grails
([#2512](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2512))
- RocketMQ
([#2263](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2263))
- Lettuce 6
([#2589](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2589))
- Servlet 5
([#2609](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2609))
- Vaadin web framework
([#2619](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2619))
- GWT
([#2652](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2652))
- Tapestry web framework
([#2690](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2690))
- `@WithSpan` support for methods returning CompletableFuture
([#2530](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2530))
- `@WithSpan` support for methods returning async RxJava 2 types
([#2530](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2530))

### 🌟 New library instrumentation

- Library instrumentation for AWS SDK v1
([#2525](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2525))
- Library instrumentation for Lettuce 5.1
([#2533](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2533))
- RocketMQ
([#2263](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2263))
- Lettuce 6
([#2589](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2589))
- Spring Boot Autoconfigure support for `@WithSpan` methods returning CompletableFuture
([#2618](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2618))
- Spring Boot Autoconfigure support for `@WithSpan` methods returning async RxJava 2 types
([#2530](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2530))

### 📈 Improvements

- Move attributes to span builder for use by samplers
([#2587](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2587))
- Apache Camel - SNS propagation
([#2562](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2562))
- Apache Camel - S3 to SQS propagation
([#2583](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2583))
- Added `runtime.jvm.gc.count` metric
([#2616](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2616))
- Support reactor netty `HttpClient.from` construction
([#2650](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2650))
- Improve akka instrumentation
([#2737](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2737))
- Record internal metric for SQL cache misses
([#2747](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2747))
- End Netty 4.1 client and server spans when the response has completed, instead of when the
response has started
([#2641](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2641))

### 🛠️ Bug fixes

- Fix RestTemplateInterceptor so that it calls endExceptionally() on exception
([#2516](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2516))
- Fix app failure under Eclipse OSGi
([#2521](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2521))
- Fix undertow span ending too early
([#2560](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2560))
- Fix context leak in AWS SDK 2.2 and RocketMQ instrumentations
([#2637](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2637))
- Fix hang when a webflux http request is made inside of another webflux http request
(e.g. auth filter)
([#2646](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2646))
- Fix `@WithSpan` instrumentation breaking Java 6 classes
([#2699](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2699))
- Fix context not propagated over JMS when explicit destination used
([#2702](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2702))
- Fix StackOverflowError if jdbc driver implementation of Connection getMetaData calls Statement
execute
([#2756](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2756))

### 🧰 Tooling

- Make muzzle reference creation package(s) configurable
([#2615](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2615))
- Instrumentations now can skip defining context store manually
([#2775](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2775))
- New Instrumenter API
([#2596](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/2596))
67 changes: 67 additions & 0 deletions opentelemetry-java-instrumentation/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
## Contributing

Pull requests for bug fixes are welcome, but before submitting new features
or changes to current functionality [open an
issue](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/new)
and discuss your ideas or propose the changes you wish to make. After a
resolution is reached a PR can be submitted for review.

In order to build and test this whole repository you need JDK 11+.
Some instrumentations and tests may put constraints on which java versions they support.
See [Running the tests](./docs/contributing/running-tests.md) for more details.

### Building

#### Snapshot builds

For developers testing code changes before a release is complete, there are
snapshot builds of the `main` branch. They are available from
the Sonatype OSS snapshots repository at https://oss.sonatype.org/content/repositories/snapshots/ ([browse](https://oss.sonatype.org/content/repositories/snapshots/io/opentelemetry/))

#### Building from source

Build using Java 11:

```bash
java -version
```

```bash
./gradlew assemble
```

and then you can find the java agent artifact at

`javaagent/build/libs/opentelemetry-javaagent-<version>-all.jar`.

### IntelliJ setup

See [IntelliJ setup](docs/contributing/intellij-setup.md)

### Style guide

See [Style guide](docs/contributing/style-guideline.md)

### Running the tests

See [Running the tests](docs/contributing/running-tests.md)

### Writing instrumentation

See [Writing instrumentation](docs/contributing/writing-instrumentation.md)

### Understanding the javaagent components

See [Understanding the javaagent components](docs/contributing/javaagent-jar-components.md)

### Understanding the javaagent instrumentation testing components

See [Understanding the javaagent instrumentation testing components](docs/contributing/javaagent-test-infra.md)

### Debugging

See [Debugging](docs/contributing/debugging.md)

### Understanding Muzzle

See [Understanding Muzzle](docs/contributing/muzzle.md)
Loading

0 comments on commit 89cf871

Please sign in to comment.