Update vendor distribution customization demo with new SDK and agent configurations (#2088)
* Update vendor distribution customization demo with new SDK and agent configurations * Update doc
This commit is contained in:
parent
7122c4b2a5
commit
746898da04
|
@ -9,7 +9,7 @@ subprojects {
|
|||
ext {
|
||||
versions = [
|
||||
opentelemetry : "0.14.1",
|
||||
opentelemetryJavaagent : "0.14.0",
|
||||
opentelemetryJavaagent : "0.15.0-SNAPSHOT",
|
||||
bytebuddy : "1.10.10",
|
||||
guava : "30.1-jre"
|
||||
|
||||
|
@ -30,10 +30,7 @@ subprojects {
|
|||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url = uri("https://dl.bintray.com/open-telemetry/maven")
|
||||
}
|
||||
maven {
|
||||
url = uri("https://oss.jfrog.org/artifactory/oss-snapshot-local")
|
||||
url = uri("https://oss.sonatype.org/content/repositories/snapshots")
|
||||
}
|
||||
mavenCentral()
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@ plugins {
|
|||
|
||||
dependencies {
|
||||
compileOnly("io.opentelemetry:opentelemetry-sdk:${versions.opentelemetry}")
|
||||
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions.opentelemetry}")
|
||||
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions.opentelemetryJavaagent}")
|
||||
compileOnly("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions.opentelemetryJavaagent}")
|
||||
}
|
||||
|
||||
tasks {
|
||||
|
|
|
@ -7,7 +7,7 @@ import java.util.concurrent.atomic.AtomicLong;
|
|||
* Custom {@link IdGenerator} which provides span and trace ids.
|
||||
*
|
||||
* @see io.opentelemetry.sdk.trace.SdkTracerProvider
|
||||
* @see DemoTracerCustomizer
|
||||
* @see DemoSdkTracerProviderConfigurer
|
||||
*/
|
||||
public class DemoIdGenerator implements IdGenerator {
|
||||
private static final AtomicLong traceId = new AtomicLong(0);
|
||||
|
|
|
@ -10,7 +10,7 @@ import java.util.List;
|
|||
* See <a href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/context/api-propagators.md">
|
||||
* OpenTelemetry Specification</a> for more information about Propagators.
|
||||
*
|
||||
* @see DemoTracerCustomizer
|
||||
* @see DemoPropagatorProvider
|
||||
*/
|
||||
public class DemoPropagator implements TextMapPropagator {
|
||||
private static final String FIELD = "X-demo-field";
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package com.example.javaagent;
|
||||
|
||||
import io.opentelemetry.context.propagation.TextMapPropagator;
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider;
|
||||
|
||||
/**
|
||||
* Registers the custom propagator used by this example.
|
||||
*
|
||||
* @see ConfigurablePropagatorProvider
|
||||
* @see DemoPropagator
|
||||
*/
|
||||
public class DemoPropagatorProvider implements ConfigurablePropagatorProvider {
|
||||
@Override
|
||||
public TextMapPropagator getPropagator() {
|
||||
return new DemoPropagator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "demo";
|
||||
}
|
||||
}
|
|
@ -15,6 +15,7 @@ public class DemoPropertySource implements PropertySource {
|
|||
public Map<String, String> getProperties() {
|
||||
return Map.of(
|
||||
"otel.exporter.otlp.endpoint", "collector:55680",
|
||||
"otel.exporter.otlp.insecure", "true",
|
||||
"otel.config.max.attrs", "16"
|
||||
);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ import io.opentelemetry.api.common.Attributes;
|
|||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.trace.data.LinkData;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.sdk.trace.samplers.Sampler;
|
||||
import io.opentelemetry.sdk.trace.samplers.SamplingResult;
|
||||
import java.util.List;
|
||||
|
@ -15,7 +14,7 @@ import java.util.List;
|
|||
* See <a href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk.md#sampling">
|
||||
* OpenTelemetry Specification</a> for more information about span sampling.
|
||||
*
|
||||
* @see DemoTracerCustomizer
|
||||
* @see DemoSdkTracerProviderConfigurer
|
||||
*/
|
||||
public class DemoSampler implements Sampler {
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package com.example.javaagent;
|
||||
|
||||
import io.opentelemetry.sdk.autoconfigure.spi.SdkTracerProviderConfigurer;
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
|
||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
||||
|
||||
/**
|
||||
* This is one of the main entry points for Instrumentation Agent's customizations.
|
||||
* It allows configuring {@link SdkTracerProviderBuilder}.
|
||||
* See the {@link #configure(SdkTracerProviderBuilder)} method below.
|
||||
* <p>
|
||||
* Also see https://github.com/open-telemetry/opentelemetry-java/issues/2022
|
||||
*
|
||||
* @see SdkTracerProviderConfigurer
|
||||
* @see DemoPropagatorProvider
|
||||
*/
|
||||
public class DemoSdkTracerProviderConfigurer implements SdkTracerProviderConfigurer {
|
||||
@Override
|
||||
public void configure(SdkTracerProviderBuilder tracerProvider) {
|
||||
tracerProvider
|
||||
.setIdGenerator(new DemoIdGenerator())
|
||||
.setTraceConfig(TraceConfig.builder()
|
||||
.setSampler(new DemoSampler())
|
||||
.setMaxLengthOfAttributeValues(128)
|
||||
.build())
|
||||
.addSpanProcessor(new DemoSpanProcessor())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(new DemoSpanExporter()));
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@ import java.util.Collection;
|
|||
* See <a href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk.md#span-exporter">
|
||||
* OpenTelemetry Specification</a> for more information about {@link SpanExporter}.
|
||||
*
|
||||
* @see DemoTracerCustomizer
|
||||
* @see DemoSdkTracerProviderConfigurer
|
||||
*/
|
||||
public class DemoSpanExporter implements SpanExporter {
|
||||
@Override
|
||||
|
|
|
@ -10,7 +10,7 @@ import io.opentelemetry.sdk.trace.SpanProcessor;
|
|||
* See <a href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk.md#span-processor">
|
||||
* OpenTelemetry Specification</a> for more information about {@link SpanProcessor}.
|
||||
*
|
||||
* @see DemoTracerCustomizer
|
||||
* @see DemoSdkTracerProviderConfigurer
|
||||
*/
|
||||
public class DemoSpanProcessor implements SpanProcessor {
|
||||
@Override
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
package com.example.javaagent;
|
||||
|
||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||
import io.opentelemetry.javaagent.spi.TracerCustomizer;
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdkBuilder;
|
||||
import io.opentelemetry.sdk.trace.SdkTracerManagement;
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
||||
|
||||
/**
|
||||
* This is the main entry point for the majority of Instrumentation Agent's customizations.
|
||||
* It allows for configuring various aspects of OpenTelemetrySdk.
|
||||
* See the {@link #configure(SdkTracerManagement)} method below.
|
||||
* <p>
|
||||
* Also see https://github.com/open-telemetry/opentelemetry-java/issues/2022
|
||||
*/
|
||||
public class DemoTracerCustomizer implements TracerCustomizer {
|
||||
@Override
|
||||
public void configure(SdkTracerManagement tracerManagement) {
|
||||
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
|
||||
.setIdGenerator(new DemoIdGenerator())
|
||||
.setTraceConfig(TraceConfig.getDefault().toBuilder()
|
||||
.setSampler(new DemoSampler())
|
||||
.setMaxLengthOfAttributeValues(128)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
sdkTracerProvider.addSpanProcessor(new DemoSpanProcessor());
|
||||
sdkTracerProvider.addSpanProcessor(SimpleSpanProcessor.builder(new DemoSpanExporter()).build());
|
||||
|
||||
OpenTelemetrySdkBuilder sdkBuilder = OpenTelemetrySdk.builder()
|
||||
.setPropagators(ContextPropagators.create(new DemoPropagator()))
|
||||
.setTracerProvider(sdkTracerProvider);
|
||||
GlobalOpenTelemetry.set(sdkBuilder.build());
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
com.example.javaagent.DemoTracerCustomizer
|
|
@ -0,0 +1 @@
|
|||
com.example.javaagent.DemoPropagatorProvider
|
|
@ -0,0 +1 @@
|
|||
com.example.javaagent.DemoSdkTracerProviderConfigurer
|
|
@ -88,6 +88,7 @@ abstract class SmokeTest {
|
|||
.withEnv("JAVA_TOOL_OPTIONS", "-javaagent:/opentelemetry-javaagent.jar")
|
||||
.withEnv("OTEL_BSP_MAX_EXPORT_BATCH", "1")
|
||||
.withEnv("OTEL_BSP_SCHEDULE_DELAY", "10")
|
||||
.withEnv("OTEL_PROPAGATORS", "tracecontext,baggage,demo")
|
||||
.withEnv(getExtraEnv());
|
||||
target.start();
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ class SpringBootSmokeTest extends SmokeTest {
|
|||
Assertions.assertNotNull(response.header("X-server-id"));
|
||||
Assertions.assertEquals(1, response.headers("X-server-id").size());
|
||||
Assertions.assertTrue(TraceId.isValid(response.header("X-server-id")));
|
||||
Assertions.assertEquals(response.body().string(), "Hi!");
|
||||
Assertions.assertEquals("Hi!", response.body().string());
|
||||
Assertions.assertEquals(1, countSpansByName(traces, "/greeting"));
|
||||
Assertions.assertEquals(0, countSpansByName(traces, "WebController.greeting"));
|
||||
Assertions.assertEquals(1, countSpansByName(traces, "WebController.withSpan"));
|
||||
|
|
Loading…
Reference in New Issue