Skip to content
Closed
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
<spring-cloud-openfeign.version>3.0.0-SNAPSHOT</spring-cloud-openfeign.version>
<brave.version>5.12.7</brave.version>
<opentracing.version>0.32.0</opentracing.version>
<opentelemetry.version>0.10.0</opentelemetry.version>
<opentelemetry.version>0.11.0</opentelemetry.version>
<!-- From maven local -->
<opentelemetry-instrumentation.version>0.10.1</opentelemetry-instrumentation.version>
<spring-security-boot-autoconfigure.version>2.3.4.RELEASE</spring-security-boot-autoconfigure.version>
Expand Down
11 changes: 0 additions & 11 deletions spring-cloud-sleuth-autoconfigure/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -351,17 +351,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-extension-auto-annotations</artifactId>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>io.opentelemetry</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-logging</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,18 @@

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.metrics.spi.MeterProviderFactory;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.api.trace.spi.TracerProviderFactory;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.sdk.trace.SpanProcessor;
import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.config.TraceConfig;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.sdk.trace.export.SpanExporter;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import io.opentelemetry.sdk.trace.spi.TracerProviderFactorySdk;
import io.opentelemetry.spi.metrics.MeterProviderFactory;
import io.opentelemetry.spi.trace.TracerProviderFactory;

import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
Expand All @@ -44,6 +45,7 @@
import org.springframework.cloud.sleuth.autoconfig.SleuthSpanFilterProperties;
import org.springframework.cloud.sleuth.autoconfig.SleuthTracerProperties;
import org.springframework.cloud.sleuth.autoconfig.TraceConfiguration;
import org.springframework.cloud.sleuth.otel.bridge.OtelOpenTelemetry;
import org.springframework.cloud.sleuth.otel.bridge.SpanExporterCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -67,6 +69,17 @@
SleuthAnnotationConfiguration.class })
public class OtelAutoConfiguration {

@Bean
@ConditionalOnMissingBean
OpenTelemetry otel(TracerProviderFactory tracerProviderFactory, MeterProviderFactory meterProviderFactory,
TracerProvider tracerProvider, MeterProvider meterProvider, ContextPropagators contextPropagators) {
OtelOpenTelemetry otelOpenTelemetry = new OtelOpenTelemetry(tracerProviderFactory, meterProviderFactory,
tracerProvider, meterProvider, contextPropagators);
OpenTelemetry.set(otelOpenTelemetry);
OpenTelemetry.setGlobalPropagators(contextPropagators);
return otelOpenTelemetry;
}

@Bean
@ConditionalOnMissingBean
TracerProviderFactory otelTracerProviderFactory() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@
import java.util.regex.Pattern;

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.metrics.spi.MeterProviderFactory;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.api.trace.spi.TracerProviderFactory;
import io.opentelemetry.context.propagation.ContextPropagators;

import org.springframework.beans.factory.ObjectProvider;
Expand Down Expand Up @@ -51,7 +47,6 @@
import org.springframework.cloud.sleuth.otel.bridge.OtelCurrentTraceContext;
import org.springframework.cloud.sleuth.otel.bridge.OtelHttpClientHandler;
import org.springframework.cloud.sleuth.otel.bridge.OtelHttpServerHandler;
import org.springframework.cloud.sleuth.otel.bridge.OtelOpenTelemetry;
import org.springframework.cloud.sleuth.otel.bridge.OtelPropagator;
import org.springframework.cloud.sleuth.otel.bridge.OtelSpanCustomizer;
import org.springframework.cloud.sleuth.otel.bridge.OtelTracer;
Expand All @@ -76,14 +71,6 @@
@Import({ OtelLogConfiguration.class, OtelExporterConfiguration.class })
class OtelBridgeConfiguation {

@Bean
@ConditionalOnMissingBean
OpenTelemetry otel(TracerProviderFactory tracerProviderFactory, MeterProviderFactory meterProviderFactory,
TracerProvider tracerProvider, MeterProvider meterProvider, ContextPropagators contextPropagators) {
return new OtelOpenTelemetry(tracerProviderFactory, meterProviderFactory, tracerProvider, meterProvider,
contextPropagators);
}

@Bean
Tracer otelTracerBridge(io.opentelemetry.api.trace.Tracer tracer, ApplicationEventPublisher publisher,
CurrentTraceContext currentTraceContext, SleuthBaggageProperties sleuthBaggageProperties) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@
package org.springframework.cloud.sleuth.autoconfig.otel;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import io.opentelemetry.api.OpenTelemetry;
import javax.annotation.Nullable;

import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.DefaultContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
Expand Down Expand Up @@ -58,12 +61,30 @@ class OtelPropagationConfiguration {
ContextPropagators otelContextPropagators(ObjectProvider<List<TextMapPropagator>> propagators) {
List<TextMapPropagator> mapPropagators = propagators.getIfAvailable(ArrayList::new);
if (mapPropagators.isEmpty()) {
return OpenTelemetry.getGlobalPropagators();
return noOpContextPropagator();
}
DefaultContextPropagators.Builder builder = DefaultContextPropagators.builder();
mapPropagators.forEach(builder::addTextMapPropagator);
OpenTelemetry.setGlobalPropagators(builder.build());
return OpenTelemetry.getGlobalPropagators();
return builder.build();
}

private ContextPropagators noOpContextPropagator() {
return () -> new TextMapPropagator() {
@Override
public List<String> fields() {
return Collections.emptyList();
}

@Override
public <C> void inject(Context context, @Nullable C carrier, Setter<C> setter) {

}

@Override
public <C> Context extract(Context context, @Nullable C carrier, Getter<C> getter) {
return context;
}
};
}

@Configuration(proxyBeanMethods = false)
Expand Down
2 changes: 1 addition & 1 deletion spring-cloud-sleuth-dependencies/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
<brave.version>5.13.1</brave.version>
<brave.opentracing.version>0.37.4</brave.opentracing.version>
<grpc.spring.boot.version>4.2.2</grpc.spring.boot.version>
<opentelemetry.version>0.10.0</opentelemetry.version>
<opentelemetry.version>0.11.0</opentelemetry.version>
</properties>
<dependencyManagement>
<dependencies>
Expand Down
11 changes: 0 additions & 11 deletions spring-cloud-sleuth-otel/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-extension-auto-annotations</artifactId>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>io.opentelemetry</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-logging</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.util.Objects;

import io.opentelemetry.api.baggage.Baggage;
import io.opentelemetry.api.baggage.BaggageBuilder;
import io.opentelemetry.api.baggage.BaggageConsumer;
import io.opentelemetry.api.baggage.EntryMetadata;
import io.opentelemetry.context.Context;
Expand Down Expand Up @@ -205,7 +206,7 @@ public String getEntryValue(String entryKey) {
}

@Override
public Builder toBuilder() {
public BaggageBuilder toBuilder() {
return Baggage.builder();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.metrics.spi.MeterProviderFactory;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.api.trace.spi.TracerProviderFactory;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.spi.metrics.MeterProviderFactory;
import io.opentelemetry.spi.trace.TracerProviderFactory;

/**
* Sleuth implementation of a {@link OpenTelemetry}.
Expand Down Expand Up @@ -68,11 +68,11 @@ public ContextPropagators getPropagators() {
}

@Override
public io.opentelemetry.api.OpenTelemetry.Builder<OtelOpenTelemetry.Builder> toBuilder() {
public io.opentelemetry.api.OpenTelemetryBuilder<OtelOpenTelemetry.Builder> toBuilder() {
return new Builder(this.meterProviderFactory, this.tracerProviderFactory);
}

static class Builder implements io.opentelemetry.api.OpenTelemetry.Builder<OtelOpenTelemetry.Builder> {
static class Builder implements io.opentelemetry.api.OpenTelemetryBuilder<OtelOpenTelemetry.Builder> {

private ContextPropagators propagators;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@

package org.springframework.cloud.sleuth.otel.bridge;

import java.time.Instant;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;

import io.opentelemetry.api.common.AttributeKey;
Expand Down Expand Up @@ -187,7 +189,12 @@ public io.opentelemetry.api.trace.Span addEvent(String name) {
}

@Override
public io.opentelemetry.api.trace.Span addEvent(String name, long timestamp) {
public io.opentelemetry.api.trace.Span addEvent(String name, long timestamp, TimeUnit unit) {
return span.addEvent(name, timestamp, unit);
}

@Override
public io.opentelemetry.api.trace.Span addEvent(String name, Instant timestamp) {
return span.addEvent(name, timestamp);
}

Expand All @@ -197,7 +204,12 @@ public io.opentelemetry.api.trace.Span addEvent(String name, Attributes attribut
}

@Override
public io.opentelemetry.api.trace.Span addEvent(String name, Attributes attributes, long timestamp) {
public io.opentelemetry.api.trace.Span addEvent(String name, Attributes attributes, long timestamp, TimeUnit unit) {
return span.addEvent(name, attributes, timestamp, unit);
}

@Override
public io.opentelemetry.api.trace.Span addEvent(String name, Attributes attributes, Instant timestamp) {
return span.addEvent(name, attributes, timestamp);
}

Expand Down Expand Up @@ -242,8 +254,13 @@ public void end() {
}

@Override
public void end(long l) {
span.end(l);
public void end(long timestamp, TimeUnit unit) {
span.end(timestamp, unit);
}

@Override
public void end(Instant timestamp) {
span.end(timestamp);
}

@Override
Expand All @@ -256,6 +273,11 @@ public boolean isRecording() {
return span.isRecording();
}

@Override
public Context storeInContext(Context context) {
return span.storeInContext(context);
}

@Override
public String toString() {
return "SpanFromSpanContext{" + "span=" + span + ", newSpanContext=" + newSpanContext + '}';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@
*/
class OtelSpanBuilder implements Span.Builder {

private final io.opentelemetry.api.trace.Span.Builder delegate;
private final io.opentelemetry.api.trace.SpanBuilder delegate;

private final List<String> annotations = new LinkedList<>();

private String name;

private Throwable error;

OtelSpanBuilder(io.opentelemetry.api.trace.Span.Builder delegate) {
OtelSpanBuilder(io.opentelemetry.api.trace.SpanBuilder delegate) {
this.delegate = delegate;
}

static Span.Builder fromOtel(io.opentelemetry.api.trace.Span.Builder builder) {
static Span.Builder fromOtel(io.opentelemetry.api.trace.SpanBuilder builder) {
return new OtelSpanBuilder(builder);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.util.stream.Collectors;

import io.opentelemetry.api.baggage.Baggage;
import io.opentelemetry.api.baggage.BaggageBuilder;
import io.opentelemetry.api.baggage.EntryMetadata;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapPropagator;
Expand Down Expand Up @@ -73,7 +74,7 @@ public <C> Context extract(Context context, C c, Getter<C> getter) {
Map<String, String> baggageEntries = this.remoteFields.stream()
.map(s -> new AbstractMap.SimpleEntry<>(s, getter.get(c, s))).filter(e -> e.getValue() != null)
.collect(Collectors.toMap((e) -> e.getKey(), (e) -> e.getValue()));
Baggage.Builder builder = Baggage.builder().setParent(context);
BaggageBuilder builder = Baggage.builder().setParent(context);
// TODO: [OTEL] magic string
baggageEntries.forEach((key, value) -> builder.put(key, value, EntryMetadata.create("propagation=unlimited")));
Baggage baggage = builder.build();
Expand Down