configProperties = new HashMap<>();
- configProperties.put(OTEL_EXPORTER, "zipkin");
+ configProperties.put(OTEL_TRACE_EXPORTER, "zipkin");
configProperties.put(
OTEL_EXPORTER_ZIPKIN_SERVICE_NAME, agentConfig.getServiceName().getValue());
configProperties.put(
OTEL_EXPORTER_ZIPKIN_ENDPOINT, agentConfig.getReporting().getEndpoint().getValue());
configProperties.put(
OTEL_PROPAGATORS, toOtelPropagators(agentConfig.getPropagationFormatsList()));
-
+ // metrics are not reported
+ configProperties.put(OTEL_METRICS_EXPORTER, "none");
return configProperties;
}
diff --git a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java
index 0dc458282..2ed6e2627 100644
--- a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java
+++ b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/HypertraceResourceProvider.java
@@ -21,19 +21,23 @@
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.resources.ResourceAttributes;
import io.opentelemetry.sdk.resources.ResourceProvider;
+import org.hypertrace.agent.config.Config.AgentConfig;
+import org.hypertrace.agent.core.config.HypertraceConfig;
@AutoService(ResourceProvider.class)
public class HypertraceResourceProvider extends ResourceProvider {
private final CgroupsReader cgroupsReader = new CgroupsReader();
+ private final AgentConfig agentConfig = HypertraceConfig.get();
@Override
protected Attributes getAttributes() {
AttributesBuilder builder = Attributes.builder();
String containerId = this.cgroupsReader.readContainerId();
if (containerId != null && !containerId.isEmpty()) {
- builder.put(ResourceAttributes.CONTAINER_ID.getKey(), containerId);
+ builder.put(ResourceAttributes.CONTAINER_ID, containerId);
}
+ builder.put(ResourceAttributes.SERVICE_NAME, agentConfig.getServiceName().getValue());
return builder.build();
}
}
diff --git a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java
index d86bedcf6..eabc659fa 100644
--- a/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java
+++ b/otel-extensions/src/main/java/org/hypertrace/agent/otel/extensions/processor/HypertraceTracerCustomizer.java
@@ -17,8 +17,8 @@
package org.hypertrace.agent.otel.extensions.processor;
import com.google.auto.service.AutoService;
-import io.opentelemetry.javaagent.spi.TracerCustomizer;
-import io.opentelemetry.sdk.trace.SdkTracerManagement;
+import io.opentelemetry.sdk.autoconfigure.spi.SdkTracerProviderConfigurer;
+import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
/**
* This is a workaround to add container ID tags to spans when Zipkin exporter is used. Zipkin
@@ -28,11 +28,11 @@
* Remove this once we migrate to OTEL exporter
* https://github.com/hypertrace/javaagent/issues/132
*/
-@AutoService(TracerCustomizer.class)
-public class HypertraceTracerCustomizer implements TracerCustomizer {
+@AutoService(SdkTracerProviderConfigurer.class)
+public class HypertraceTracerCustomizer implements SdkTracerProviderConfigurer {
@Override
- public void configure(SdkTracerManagement tracerManagement) {
- tracerManagement.addSpanProcessor(new AddTagsSpanProcessor());
+ public void configure(SdkTracerProviderBuilder tracerProvider) {
+ tracerProvider.addSpanProcessor(new AddTagsSpanProcessor());
}
}
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java
index 60d8a9fc9..470204f00 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/AbstractSmokeTest.java
@@ -49,7 +49,7 @@ public abstract class AbstractSmokeTest {
private static final Logger log = LoggerFactory.getLogger(OpenTelemetryStorage.class);
private static final String OTEL_COLLECTOR_IMAGE = "otel/opentelemetry-collector:latest";
private static final String MOCK_BACKEND_IMAGE =
- "open-telemetry-docker-dev.bintray.io/java/smoke-fake-backend:latest";
+ "ghcr.io/open-telemetry/java-test-containers:smoke-fake-backend-20201128.1734635";
private static final String NETWORK_ALIAS_OTEL_COLLECTOR = "collector";
private static final String NETWORK_ALIAS_OTEL_MOCK_STORAGE = "storage";
private static final String OTEL_EXPORTER_ENDPOINT =
@@ -132,7 +132,7 @@ GenericContainer createAppUnderTest(int jdk) {
MountableFile.forClasspathResource("/ht-config.yaml"), "/etc/ht-config.yaml")
.withEnv("JAVA_TOOL_OPTIONS", "-javaagent:/javaagent.jar")
.withEnv("HT_CONFIG_FILE", "/etc/ht-config.yaml")
- .withEnv("OTEL_BSP_MAX_EXPORT_BATCH", "1")
+ .withEnv("OTEL_BSP_MAX_EXPORT_BATCH_SIZE", "1")
.withEnv("OTEL_BSP_SCHEDULE_DELAY", "10")
.withEnv("HT_REPORTING_ENDPOINT", OTEL_EXPORTER_ENDPOINT);
}
diff --git a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
index 4944e1404..d2ec97101 100644
--- a/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
+++ b/smoke-tests/src/test/java/org/hypertrace/agent/smoketest/SpringBootSmokeTest.java
@@ -40,7 +40,9 @@ public class SpringBootSmokeTest extends AbstractSmokeTest {
@Override
protected String getTargetImage(int jdk) {
- return "open-telemetry-docker-dev.bintray.io/java/smoke-springboot-jdk" + jdk + ":latest";
+ return "ghcr.io/open-telemetry/java-test-containers:smoke-springboot-jdk"
+ + jdk
+ + "-20210209.550405798";
}
private static GenericContainer app;
@@ -62,11 +64,13 @@ static synchronized void afterEach() {
}
@Test
- public void get() throws IOException {
+ public void get() throws IOException, InterruptedException {
String url = String.format("http://localhost:%d/greeting", app.getMappedPort(8080));
Request request = new Request.Builder().url(url).get().build();
- Response response = client.newCall(request).execute();
+ try (Response response = client.newCall(request).execute()) {
+ Assertions.assertEquals(response.body().string(), "Hi!");
+ }
ArrayList traces = new ArrayList<>(waitForTraces());
Object currentAgentVersion =
@@ -93,7 +97,6 @@ public void get() throws IOException {
.getValue()
.getStringValue());
- Assertions.assertEquals(response.body().string(), "Hi!");
Assertions.assertEquals(1, countSpansByName(traces, "/greeting"));
Assertions.assertEquals(1, countSpansByName(traces, "webcontroller.greeting"));
Assertions.assertTrue(
diff --git a/testing-common/build.gradle.kts b/testing-common/build.gradle.kts
index 9ee829f06..8a9d89d51 100644
--- a/testing-common/build.gradle.kts
+++ b/testing-common/build.gradle.kts
@@ -14,6 +14,7 @@ dependencies {
api("io.opentelemetry:opentelemetry-api:${versions["opentelemetry"]}")
api("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
+ compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions["opentelemetry"]}-alpha")
api("com.squareup.okhttp3:okhttp:4.9.0")
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:${versions["opentelemetry_java_agent"]}")
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions["opentelemetry_java_agent"]}")
diff --git a/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java b/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java
index 262e86cc7..9731504a7 100644
--- a/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java
+++ b/testing-common/src/main/java/org/hypertrace/agent/testing/AbstractInstrumenterTest.java
@@ -22,8 +22,6 @@
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.javaagent.spi.ComponentInstaller;
import io.opentelemetry.javaagent.tooling.AgentInstaller;
-import io.opentelemetry.javaagent.tooling.config.ConfigInitializer;
-import io.opentelemetry.sdk.OpenTelemetrySdk;
import java.io.IOException;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.Instrumentation;
@@ -57,11 +55,10 @@ public abstract class AbstractInstrumenterTest {
*/
public static final InMemoryExporter TEST_WRITER = new InMemoryExporter();;
- protected static final Tracer TEST_TRACER;
+ protected static Tracer TEST_TRACER;
private static final Instrumentation INSTRUMENTATION;
static {
- ConfigInitializer.initialize();
// always run with the thread propagation debugger to help track down sporadic test failures
System.setProperty("otel.threadPropagationDebugger", "true");
System.setProperty("otel.internal.failOnContextLeak", "true");
@@ -74,8 +71,6 @@ public abstract class AbstractInstrumenterTest {
((Logger) LoggerFactory.getLogger("io.opentelemetry")).setLevel(Level.DEBUG);
COMPONENT_INSTALLER = new TestOpenTelemetryInstaller(TEST_WRITER);
- OpenTelemetrySdk.getGlobalTracerManagement().addSpanProcessor(TEST_WRITER);
- TEST_TRACER = GlobalOpenTelemetry.getTracer("io.opentelemetry.auto");
}
private static ClassFileTransformer classFileTransformer;
@@ -95,6 +90,9 @@ public static void beforeAll() {
AgentInstaller.installBytebuddyAgent(
INSTRUMENTATION, Collections.singleton(COMPONENT_INSTALLER));
}
+ if (TEST_TRACER == null) {
+ TEST_TRACER = GlobalOpenTelemetry.getTracer("io.opentelemetry.auto");
+ }
}
@BeforeEach
diff --git a/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java b/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java
index cad52aa97..34d1d5a2e 100644
--- a/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java
+++ b/testing-common/src/main/java/org/hypertrace/agent/testing/TestOpenTelemetryInstaller.java
@@ -32,10 +32,13 @@ public TestOpenTelemetryInstaller(SpanProcessor spanProcessor) {
}
@Override
- public void afterByteBuddyAgent() {
+ public void beforeByteBuddyAgent() {
OpenTelemetrySdk.builder()
.setTracerProvider(SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build())
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();
}
+
+ @Override
+ public void afterByteBuddyAgent() {}
}