Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update the QUICKSTART.md for 0.14.1 #2539

Merged
merged 1 commit into from
Jan 15, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 35 additions & 50 deletions QUICKSTART.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ out the [OpenTelemetry Website].
configuration must be provided by **Applications** which should also depend on the
`opentelemetry-sdk` package, or any other implementation of the OpenTelemetry API. This way,
libraries will obtain a real implementation only if the user application is configured for it. For
more details, check out the [Library Guidelines].
more details, check out the [Library Guidelines].

## Set up

Expand All @@ -38,19 +38,21 @@ The first step is to get a handle to an instance of the `OpenTelemetry` interfac
If you are an application developer, you need to configure an instance of the `OpenTelemetrySdk` as
early as possible in your application. This can be done using the `OpenTelemetrySdk.builder()` method.

If you want to enable auto-configuration, via the standard set of environment variables, system
properties or pre-build java SPI implementations, you will want to additionally have your project
depend on the `opentelemetry-sdk-extension-autoconfigure` module.

For example:

```java
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder().build();
sdkTracerProvider.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder().build()).build());

SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder().build()))
.build();

OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.build();

//optionally set this instance as the global instance:
GlobalOpenTelemetry.set(openTelemetry);
.setTracerProvider(sdkTracerProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();
```

As an aside, if you are writing library instrumentation, it is strongly recommended that you provide your users
Expand Down Expand Up @@ -358,8 +360,9 @@ For example, a basic configuration instantiates the SDK tracer provider and sets
traces to a logging stream.

```java
SdkTracerProvider tracerProvider = SdkTracerProvider.builder().build();
tracerProvider.addSpanProcessor(BatchSpanProcessor.builder(new LoggingSpanExporter()).build());
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(new LoggingSpanExporter()).build())
.build();
```

### Sampler
Expand All @@ -378,19 +381,14 @@ Additional samplers can be provided by implementing the `io.opentelemetry.sdk.tr
interface.

```java
TraceConfig alwaysOn = TraceConfig.getDefault().toBuilder().setSampler(
Sampler.alwaysOn()
).build();
TraceConfig alwaysOff = TraceConfig.getDefault().toBuilder().setSampler(
Sampler.alwaysOff()
).build();
TraceConfig half = TraceConfig.getDefault().toBuilder().setSampler(
Sampler.traceIdRatioBased(0.5)
).build();
// Configure the sampler to use
tracerProvider.updateActiveTraceConfig(
half
);
TraceConfig alwaysOn = TraceConfig.getDefault().toBuilder().setSampler(Sampler.alwaysOn()).build();
TraceConfig alwaysOff = TraceConfig.getDefault().toBuilder().setSampler(Sampler.alwaysOff()).build();
TraceConfig half = TraceConfig.getDefault().toBuilder().setSampler(Sampler.traceIdRatioBased(0.5)).build();

// You configure the sampler when building the SDK implementation:
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
.setTraceConfig(half)
.build();
```

### Span Processor
Expand All @@ -401,13 +399,13 @@ in bulk. Multiple Span processors can be configured to be active at the same tim
`MultiSpanProcessor`.

```java
SdkTracerProvider tracerProvider = SdkTracerProvider.builder().build();
tracerProvider.addSpanProcessor(
MultiSpanProcessor.create(Arrays.asList(
SimpleSpanProcessor.builder(new LoggingSpanExporter()).build(),
BatchSpanProcessor.builder(new LoggingSpanExporter()).build()
))
);
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(
MultiSpanProcessor.create(Arrays.asList(
SimpleSpanProcessor.create(new LoggingSpanExporter()),
BatchSpanProcessor.builder(new LoggingSpanExporter()).build()
)))
.build();
```

### Exporter
Expand All @@ -433,29 +431,16 @@ ManagedChannel jaegerChannel =
tracerProvider.addSpanProcessor(BatchSpanProcessor.builder(jaegerExporter).build()));
```

### TraceConfig
### Auto Configuration

The `TraceConfig` associated with a Tracer SDK can be updated via system properties,
environment variables and builder `set*` methods.
To configure the OpenTelemetry SDK based on the standard set of environment variables and system
properties, you can use the `opentelemetry-sdk-extension-autoconfigure` module.

```java
// Get TraceConfig Builder
TraceConfigBuilder builder = TraceConfig.builder();

// Read configuration options from system properties
builder.readSystemProperties();

// Read configuration options from environment variables
builder.readEnvironmentVariables()

// Set options via builder.set* methods, e.g.
builder.setMaxNumberOfLinks(10);

// Use the resulting TraceConfig instance
SdkTracerProvider tracerProvider = SdkTracerProvider.builder().setTraceConfig(traceConfig).build();
OpenTelemetrySdk sdk = OpenTelemetrySdkAutoConfiguration.initialize();
```

Supported system properties and environment variables:
Some of the supported system properties and environment variables:

| System property | Environment variable | Purpose |
|----------------------------------|----------------------------------|-----------------------------------------------------------------------------------------------------|
Expand Down