Use sdk_contrib exporter glue (#285)
This commit is contained in:
parent
2a738506a9
commit
ff47bf04cd
|
@ -21,9 +21,8 @@ dependencies {
|
||||||
|
|
||||||
compile deps.opentelemetryApi
|
compile deps.opentelemetryApi
|
||||||
compile deps.opentelemetrySdk
|
compile deps.opentelemetrySdk
|
||||||
|
compile deps.opentelemetrySdkAutoConfig
|
||||||
|
|
||||||
// TODO: This might have to live in opentelemetry-java
|
|
||||||
compile project(':exporter-support')
|
|
||||||
|
|
||||||
compile group: 'com.blogspot.mydailyjava', name: 'weak-lock-free', version: '0.15'
|
compile group: 'com.blogspot.mydailyjava', name: 'weak-lock-free', version: '0.15'
|
||||||
compile deps.bytebuddy
|
compile deps.bytebuddy
|
||||||
|
|
|
@ -16,12 +16,11 @@
|
||||||
package io.opentelemetry.auto.tooling;
|
package io.opentelemetry.auto.tooling;
|
||||||
|
|
||||||
import io.opentelemetry.auto.config.Config;
|
import io.opentelemetry.auto.config.Config;
|
||||||
import io.opentelemetry.auto.exportersupport.ConfigProvider;
|
|
||||||
|
|
||||||
public class DefaultConfigProvider implements ConfigProvider {
|
public class DefaultExporterConfig implements io.opentelemetry.sdk.contrib.auto.config.Config {
|
||||||
private final String prefix;
|
private final String prefix;
|
||||||
|
|
||||||
public DefaultConfigProvider(final String prefix) {
|
public DefaultExporterConfig(final String prefix) {
|
||||||
this.prefix = prefix;
|
this.prefix = prefix;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class ExporterClassLoader extends URLClassLoader {
|
||||||
// A small hack to prevent other exporters from being loaded by this classloader if they
|
// A small hack to prevent other exporters from being loaded by this classloader if they
|
||||||
// should happen to appear on the classpath.
|
// should happen to appear on the classpath.
|
||||||
if (name.equals(
|
if (name.equals(
|
||||||
"META-INF/services/io.opentelemetry.auto.exportersupport.SpanExporterFactory")) {
|
"META-INF/services/io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory")) {
|
||||||
return findResources(name);
|
return findResources(name);
|
||||||
}
|
}
|
||||||
return super.getResources(name);
|
return super.getResources(name);
|
||||||
|
|
|
@ -17,8 +17,8 @@ package io.opentelemetry.auto.tooling;
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
import io.opentelemetry.auto.config.Config;
|
import io.opentelemetry.auto.config.Config;
|
||||||
import io.opentelemetry.auto.exportersupport.SpanExporterFactory;
|
|
||||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
||||||
|
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
|
||||||
import io.opentelemetry.sdk.trace.export.SimpleSpansProcessor;
|
import io.opentelemetry.sdk.trace.export.SimpleSpansProcessor;
|
||||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -74,7 +74,7 @@ public class TracerInstaller {
|
||||||
log.warn(
|
log.warn(
|
||||||
"Exporter JAR defines more than one factory. Only the first one found will be used");
|
"Exporter JAR defines more than one factory. Only the first one found will be used");
|
||||||
}
|
}
|
||||||
return f.fromConfig(new DefaultConfigProvider("exporter"));
|
return f.fromConfig(new DefaultExporterConfig("exporter"));
|
||||||
}
|
}
|
||||||
log.warn("No matching providers in jar " + exporterJar);
|
log.warn("No matching providers in jar " + exporterJar);
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -6,6 +6,6 @@ apply from: "${rootDir}/gradle/java.gradle"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile deps.opentelemetryJaeger
|
compile deps.opentelemetryJaeger
|
||||||
compile project(':exporter-support')
|
compileOnly deps.opentelemetrySdkAutoConfig
|
||||||
compile group: 'io.grpc', name: 'grpc-api', version: '1.24.0'
|
compile group: 'io.grpc', name: 'grpc-api', version: '1.24.0'
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,9 +17,9 @@ package io.opentelemetry.auto.exporters.jaeger;
|
||||||
|
|
||||||
import io.grpc.ManagedChannel;
|
import io.grpc.ManagedChannel;
|
||||||
import io.grpc.ManagedChannelBuilder;
|
import io.grpc.ManagedChannelBuilder;
|
||||||
import io.opentelemetry.auto.exportersupport.ConfigProvider;
|
|
||||||
import io.opentelemetry.auto.exportersupport.SpanExporterFactory;
|
|
||||||
import io.opentelemetry.exporters.jaeger.JaegerGrpcSpanExporter;
|
import io.opentelemetry.exporters.jaeger.JaegerGrpcSpanExporter;
|
||||||
|
import io.opentelemetry.sdk.contrib.auto.config.Config;
|
||||||
|
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
|
||||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||||
|
|
||||||
public class JaegerExporterFactory implements SpanExporterFactory {
|
public class JaegerExporterFactory implements SpanExporterFactory {
|
||||||
|
@ -34,7 +34,7 @@ public class JaegerExporterFactory implements SpanExporterFactory {
|
||||||
private static final String DEFAULT_SERVICE = "(unknown service)";
|
private static final String DEFAULT_SERVICE = "(unknown service)";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SpanExporter fromConfig(final ConfigProvider config) {
|
public SpanExporter fromConfig(final Config config) {
|
||||||
final String host = config.getString(HOST_CONFIG, null);
|
final String host = config.getString(HOST_CONFIG, null);
|
||||||
if (host == null) {
|
if (host == null) {
|
||||||
throw new IllegalArgumentException(HOST_CONFIG + " must be specified");
|
throw new IllegalArgumentException(HOST_CONFIG + " must be specified");
|
||||||
|
|
|
@ -7,6 +7,6 @@ apply from: "${rootDir}/gradle/java.gradle"
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly deps.opentelemetrySdk
|
compileOnly deps.opentelemetrySdk
|
||||||
compileOnly deps.opentelemetryApi
|
compileOnly deps.opentelemetryApi
|
||||||
compile project(":exporter-support")
|
compileOnly deps.opentelemetrySdkAutoConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,13 +15,13 @@
|
||||||
*/
|
*/
|
||||||
package io.opentelemetry.auto.exporters.loggingexporter;
|
package io.opentelemetry.auto.exporters.loggingexporter;
|
||||||
|
|
||||||
import io.opentelemetry.auto.exportersupport.ConfigProvider;
|
import io.opentelemetry.sdk.contrib.auto.config.Config;
|
||||||
import io.opentelemetry.auto.exportersupport.SpanExporterFactory;
|
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory;
|
||||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||||
|
|
||||||
public class LoggingExporterFactory implements SpanExporterFactory {
|
public class LoggingExporterFactory implements SpanExporterFactory {
|
||||||
@Override
|
@Override
|
||||||
public SpanExporter fromConfig(final ConfigProvider config) {
|
public SpanExporter fromConfig(final Config config) {
|
||||||
return new LoggingExporter(config.getString("logging.prefix", "no-prefix"));
|
return new LoggingExporter(config.getString("logging.prefix", "no-prefix"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import io.opentelemetry.auto.exportersupport.SpanExporterFactory
|
|
||||||
import io.opentelemetry.auto.tooling.ExporterClassLoader
|
import io.opentelemetry.auto.tooling.ExporterClassLoader
|
||||||
|
import io.opentelemetry.sdk.contrib.auto.config.SpanExporterFactory
|
||||||
import spock.lang.Shared
|
import spock.lang.Shared
|
||||||
import spock.lang.Specification
|
import spock.lang.Specification
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
apply from: "${rootDir}/gradle/java.gradle"
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compileOnly deps.opentelemetrySdk
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2020, OpenTelemetry Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package io.opentelemetry.auto.exportersupport;
|
|
||||||
|
|
||||||
public interface ConfigProvider {
|
|
||||||
String getString(String key, String defaultValue);
|
|
||||||
|
|
||||||
int getInt(String key, int defaultValue);
|
|
||||||
|
|
||||||
long getLong(String key, long defaultValue);
|
|
||||||
|
|
||||||
boolean getBoolean(String key, boolean defaultValue);
|
|
||||||
|
|
||||||
double getDouble(String key, double defaultValue);
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2020, OpenTelemetry Authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package io.opentelemetry.auto.exportersupport;
|
|
||||||
|
|
||||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
|
||||||
|
|
||||||
public interface SpanExporterFactory {
|
|
||||||
SpanExporter fromConfig(ConfigProvider config);
|
|
||||||
}
|
|
|
@ -20,16 +20,17 @@ ext {
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
// OpenTelemetry
|
// OpenTelemetry
|
||||||
opentelemetryApi : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-api', version: versions.opentelemetry),
|
opentelemetryApi : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-api', version: versions.opentelemetry),
|
||||||
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetry),
|
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetry),
|
||||||
opentelemetryJaeger: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-jaeger', version: versions.opentelemetry),
|
opentelemetrySdkAutoConfig: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk-contrib-auto-config', version: versions.opentelemetry),
|
||||||
|
opentelemetryJaeger : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-jaeger', version: versions.opentelemetry),
|
||||||
|
|
||||||
// General
|
// General
|
||||||
slf4j : "org.slf4j:slf4j-api:${versions.slf4j}",
|
slf4j : "org.slf4j:slf4j-api:${versions.slf4j}",
|
||||||
guava : "com.google.guava:guava:$versions.guava",
|
guava : "com.google.guava:guava:$versions.guava",
|
||||||
bytebuddy : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy', version: "${versions.bytebuddy}"),
|
bytebuddy : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy', version: "${versions.bytebuddy}"),
|
||||||
bytebuddyagent : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy-agent', version: "${versions.bytebuddy}"),
|
bytebuddyagent : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy-agent', version: "${versions.bytebuddy}"),
|
||||||
autoservice : [
|
autoservice : [
|
||||||
dependencies.create(group: 'com.google.auto.service', name: 'auto-service', version: '1.0-rc3'),
|
dependencies.create(group: 'com.google.auto.service', name: 'auto-service', version: '1.0-rc3'),
|
||||||
dependencies.create(group: 'com.google.auto', name: 'auto-common', version: '0.8'),
|
dependencies.create(group: 'com.google.auto', name: 'auto-common', version: '0.8'),
|
||||||
// These are the last versions that support guava 20.0. Upgrading has odd interactions with shadow.
|
// These are the last versions that support guava 20.0. Upgrading has odd interactions with shadow.
|
||||||
|
@ -38,23 +39,23 @@ ext {
|
||||||
|
|
||||||
// Testing
|
// Testing
|
||||||
|
|
||||||
spock : [
|
spock : [
|
||||||
dependencies.create("org.spockframework:spock-core:${versions.spock}", {
|
dependencies.create("org.spockframework:spock-core:${versions.spock}", {
|
||||||
exclude group: 'org.codehaus.groovy', module: 'groovy-all'
|
exclude group: 'org.codehaus.groovy', module: 'groovy-all'
|
||||||
}),
|
}),
|
||||||
// Used by Spock for mocking:
|
// Used by Spock for mocking:
|
||||||
dependencies.create(group: 'org.objenesis', name: 'objenesis', version: '2.6') // Last version to support Java7
|
dependencies.create(group: 'org.objenesis', name: 'objenesis', version: '2.6') // Last version to support Java7
|
||||||
],
|
],
|
||||||
groovy : "org.codehaus.groovy:groovy-all:${versions.groovy}",
|
groovy : "org.codehaus.groovy:groovy-all:${versions.groovy}",
|
||||||
testcontainers : "org.testcontainers:testcontainers:1.12.2",
|
testcontainers : "org.testcontainers:testcontainers:1.12.2",
|
||||||
testLogging : [
|
testLogging : [
|
||||||
dependencies.create(group: 'ch.qos.logback', name: 'logback-classic', version: versions.logback),
|
dependencies.create(group: 'ch.qos.logback', name: 'logback-classic', version: versions.logback),
|
||||||
dependencies.create(group: 'org.slf4j', name: 'log4j-over-slf4j', version: versions.slf4j),
|
dependencies.create(group: 'org.slf4j', name: 'log4j-over-slf4j', version: versions.slf4j),
|
||||||
dependencies.create(group: 'org.slf4j', name: 'jcl-over-slf4j', version: versions.slf4j),
|
dependencies.create(group: 'org.slf4j', name: 'jcl-over-slf4j', version: versions.slf4j),
|
||||||
dependencies.create(group: 'org.slf4j', name: 'jul-to-slf4j', version: versions.slf4j),
|
dependencies.create(group: 'org.slf4j', name: 'jul-to-slf4j', version: versions.slf4j),
|
||||||
],
|
],
|
||||||
scala : dependencies.create(group: 'org.scala-lang', name: 'scala-library', version: "${versions.scala}"),
|
scala : dependencies.create(group: 'org.scala-lang', name: 'scala-library', version: "${versions.scala}"),
|
||||||
kotlin : dependencies.create(group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: "${versions.kotlin}"),
|
kotlin : dependencies.create(group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: "${versions.kotlin}"),
|
||||||
coroutines : dependencies.create(group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: "${versions.coroutines}"),
|
coroutines : dependencies.create(group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: "${versions.coroutines}"),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,9 +27,6 @@ include ':agent-bootstrap'
|
||||||
include ':agent-tooling'
|
include ':agent-tooling'
|
||||||
include ':load-generator'
|
include ':load-generator'
|
||||||
|
|
||||||
// exporter support
|
|
||||||
include ':exporter-support'
|
|
||||||
|
|
||||||
// misc
|
// misc
|
||||||
include ':testing'
|
include ':testing'
|
||||||
include ':utils:test-utils'
|
include ':utils:test-utils'
|
||||||
|
|
Loading…
Reference in New Issue