Skip to content

Bump OTEL to 0.15.0 #260

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

Merged
merged 6 commits into from
Feb 10, 2021
Merged
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
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ subprojects {
description = "Hypertrace OpenTelemetry Javaagent"

extra.set("versions", mapOf(
"opentelemetry" to "0.14.1",
"opentelemetry_java_agent" to "0.14.0",
"opentelemetry" to "0.15.0",
"opentelemetry_java_agent" to "0.15.1",
"byte_buddy" to "1.10.18"
))

Expand Down
2 changes: 2 additions & 0 deletions instrumentation/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,10 @@ tasks {

// relocate OpenTelemetry API
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
relocate("io.opentelemetry.spi", "io.opentelemetry.javaagent.shaded.io.opentelemetry.spi")
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
relocate ("io.opentelemetry.extension.trace.propagation", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.trace.propagation")
}
}
33 changes: 25 additions & 8 deletions instrumentation/grpc-1.5/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -55,21 +55,38 @@ protobuf {
}

val versions: Map<String, String> by extra
val grpcVersion = "1.5.0"

dependencies {
api("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-grpc-1.5:${versions["opentelemetry_java_agent"]}")
api("io.opentelemetry.instrumentation:opentelemetry-grpc-1.5:${versions["opentelemetry_java_agent"]}")

compileOnly("io.grpc:grpc-core:1.5.0")
compileOnly("io.grpc:grpc-protobuf:1.5.0")
compileOnly("io.grpc:grpc-stub:1.5.0")
compileOnly("io.grpc:grpc-netty:1.5.0")
compileOnly("io.grpc:grpc-core:${grpcVersion}")
compileOnly("io.grpc:grpc-protobuf:${grpcVersion}")
compileOnly("io.grpc:grpc-stub:${grpcVersion}")
compileOnly("io.grpc:grpc-netty:${grpcVersion}")

implementation("javax.annotation:javax.annotation-api:1.3.2")

testImplementation(project(":testing-common"))
testImplementation("io.grpc:grpc-core:1.5.0")
testImplementation("io.grpc:grpc-protobuf:1.5.0")
testImplementation("io.grpc:grpc-stub:1.5.0")
testImplementation("io.grpc:grpc-netty:1.5.0")
testImplementation("io.grpc:grpc-core:${grpcVersion}") {
version {
strictly(grpcVersion)
}
}
testImplementation("io.grpc:grpc-protobuf:${grpcVersion}") {
version {
strictly(grpcVersion)
}
}
testImplementation("io.grpc:grpc-stub:${grpcVersion}") {
version {
strictly(grpcVersion)
}
}
testImplementation("io.grpc:grpc-netty:${grpcVersion}") {
version {
strictly(grpcVersion)
}
}
}
39 changes: 38 additions & 1 deletion instrumentation/netty/netty-4.0/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,48 @@ afterEvaluate{
}

val versions: Map<String, String> by extra
// version used by async-http-client:2.0.9
val nettyVersion = "4.0.38.Final"

dependencies {
implementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4.0:${versions["opentelemetry_java_agent"]}")

implementation("io.netty:netty-codec-http:4.0.0.Final")
compileOnly("io.netty:netty-codec-http:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}

testImplementation("io.netty:netty-codec-http:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-transport:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-common:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-codec:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-handler:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-buffer:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}

testImplementation(project(":testing-common"))
testImplementation("org.asynchttpclient:async-http-client:2.0.9")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,15 @@

package io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_0;

import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
import static net.bytebuddy.matcher.ElementMatchers.not;

import com.google.auto.service.AutoService;
import io.opentelemetry.javaagent.tooling.InstrumentationModule;
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
import java.util.Arrays;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;

@AutoService(InstrumentationModule.class)
public class NettyInstrumentationModule extends InstrumentationModule {
Expand All @@ -34,6 +38,13 @@ public int getOrder() {
return -1;
}

@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
// Class added in 4.1.0 and not in 4.0.56 to avoid resolving this instrumentation completely
// when using 4.1.
return not(hasClassesNamed("io.netty.handler.codec.http.CombinedHttpHeaders"));
}

@Override
public List<TypeInstrumentation> typeInstrumentations() {
return Arrays.asList(new NettyChannelPipelineInstrumentation());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,14 @@

package io.opentelemetry.javaagent.instrumentation.hypertrace.netty.v4_1;

import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;

import com.google.auto.service.AutoService;
import io.opentelemetry.javaagent.tooling.InstrumentationModule;
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
import java.util.Arrays;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;

@AutoService(InstrumentationModule.class)
public class NettyInstrumentationModule extends InstrumentationModule {
Expand All @@ -34,6 +37,13 @@ public int getOrder() {
return -1;
}

@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
// Class added in 4.1.0 and not in 4.0.56 to avoid resolving this instrumentation completely
// when using 4.0.
return hasClassesNamed("io.netty.handler.codec.http.CombinedHttpHeaders");
}

@Override
public List<TypeInstrumentation> typeInstrumentations() {
return Arrays.asList(new NettyChannelPipelineInstrumentation());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package io.opentelemetry.javaagent.instrumentation.hypertrace.servlet.v3_0.nowrapping;

import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.AgentElementMatchers.safeHasSuperType;
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.named;
Expand Down Expand Up @@ -59,9 +60,14 @@

public class Servlet31NoWrappingInstrumentation implements TypeInstrumentation {

@Override
public ElementMatcher<ClassLoader> classLoaderOptimization() {
return hasClassesNamed("javax.servlet.Filter");
}

@Override
public ElementMatcher<? super TypeDescription> typeMatcher() {
return safeHasSuperType(namedOneOf("javax.servlet.Filter", "javax.servlet.http.HttpServlet"));
return safeHasSuperType(namedOneOf("javax.servlet.Filter", "javax.servlet.Servlet"));
}

@Override
Expand Down
34 changes: 34 additions & 0 deletions instrumentation/vertx-web-3.0/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,46 @@ afterEvaluate{
}

val versions: Map<String, String> by extra
// version used by io.vertx:vertx-web:3.0.0
val nettyVersion = "4.0.28.Final"

dependencies {
testImplementation(project(":testing-common"))
testImplementation(project(":instrumentation:netty:netty-4.0"))
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-netty-4.0:${versions["opentelemetry_java_agent"]}")
testImplementation("io.opentelemetry.javaagent.instrumentation:opentelemetry-javaagent-vertx-web-3.0:${versions["opentelemetry_java_agent"]}")
testImplementation("io.vertx:vertx-web:3.0.0")


testImplementation("io.netty:netty-codec-http:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-transport:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-common:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-codec:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-handler:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
testImplementation("io.netty:netty-buffer:${nettyVersion}") {
version {
strictly(nettyVersion)
}
}
}

2 changes: 2 additions & 0 deletions javaagent/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,10 @@ tasks {

// relocate OpenTelemetry API
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
relocate("io.opentelemetry.semconv", "io.opentelemetry.javaagent.shaded.io.opentelemetry.semconv")
relocate("io.opentelemetry.spi", "io.opentelemetry.javaagent.shaded.io.opentelemetry.spi")
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
relocate("io.opentelemetry.extension.kotlin", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.kotlin")
relocate("io.opentelemetry.extension.trace.propagation", "io.opentelemetry.javaagent.shaded.io.opentelemetry.extension.trace.propagation")

mergeServiceFiles {
Expand Down
1 change: 1 addition & 0 deletions otel-extensions/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ dependencies {
api(project(":filter-custom-opa"))

compileOnly("io.opentelemetry:opentelemetry-sdk:${versions["opentelemetry"]}")
compileOnly("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${versions["opentelemetry"]}-alpha")
implementation("io.opentelemetry.javaagent:opentelemetry-javaagent-spi:${versions["opentelemetry_java_agent"]}")

implementation("org.slf4j:slf4j-api:1.7.30")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
public class HypertraceAgentConfiguration implements PropertySource {

// https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/sdk-environment-variables.md
private static final String OTEL_EXPORTER = "otel.exporter";
private static final String OTEL_TRACE_EXPORTER = "otel.trace.exporter";
private static final String OTEL_METRICS_EXPORTER = "otel.metrics.exporter";
private static final String OTEL_PROPAGATORS = "otel.propagators";
private static final String OTEL_EXPORTER_ZIPKIN_ENDPOINT = "otel.exporter.zipkin.endpoint";
private static final String OTEL_EXPORTER_ZIPKIN_SERVICE_NAME =
Expand All @@ -45,14 +46,15 @@ public Map<String, String> getProperties() {
AgentConfig agentConfig = HypertraceConfig.get();

Map<String, String> 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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -28,11 +28,11 @@
* <p>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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand Down Expand Up @@ -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);
}
Expand Down
Loading