opentelemetry-java-instrume.../instrumentation/okhttp/okhttp-3.0/library
Trask Stalnaker 63a2383905
Split NetAttributesExtractor into NetClientAttributesExtractor and NetServerAttributesExtractor (#4287)
* Net Extractors

* Either request or response but not both

* Fix merge conflicts

* Separate by OnStart/OnEnd

* PeerServiceAttributes

* Fix test

* Restructure to client/server

* Fix merge conflict in main

* more

* peer.service

* Feedback

* peer.service is only for clients

* Fix merge conflict

* rename

* Armeria

* peer.service is only for clients

* rename

* WIP

* Sync Dubbo with Armeria

* More Dubbo and Armeria

* gRPC

* Revert some Dubbo changes

* more peer.service

* Fix test

* Fix merge

* Fixes
2021-10-07 15:40:15 -07:00
..
src Split NetAttributesExtractor into NetClientAttributesExtractor and NetServerAttributesExtractor (#4287) 2021-10-07 15:40:15 -07:00
README.md Implement a Call.Factory for okhttp 3.x+ library instrumentation (#3812) 2021-08-18 12:16:24 +09:00
build.gradle.kts Migrate nullaway config to plugin (#3462) 2021-07-01 18:13:16 +09:00

README.md

Manual Instrumentation for OkHttp3 version 3.0.0+

Provides OpenTelemetry instrumentation for okhttp3.

Quickstart

Add these dependencies to your project:

Replace OPENTELEMETRY_VERSION with the latest stable release. Minimum version: 1.5.0

For Maven, add to your pom.xml dependencies:


<dependencies>
  <dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-okhttp-3.0</artifactId>
    <version>OPENTELEMETRY_VERSION</version>
  </dependency>
</dependencies>

For Gradle, add to your dependencies:

implementation("io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:OPENTELEMETRY_VERSION")

Usage

The instrumentation library provides an OkHttp Call.Factory implementation that wraps an instance of the OkHttpClient to provide OpenTelemetry-based spans and context propagation.

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.okhttp.v3_0.OkHttpTracing;
import okhttp3.Call;
import okhttp3.OkHttpClient;

import java.util.concurrent.ExecutorService;

public class OkHttpConfiguration {

  //Use this Call.Factory implementation for making standard http client calls.
  public Call.Factory createTracedClient(OpenTelemetry openTelemetry) {
    return OkHttpTracing.newBuilder(openTelemetry).build().newCallFactory(createClient());
  }

  //your configuration of the OkHttpClient goes here:
  private OkHttpClient createClient() {
    return new OkHttpClient.Builder().build();
  }
}