Add exporter factory for JaegerThriftSpanExporter (#1868)
* add exporter factory for JaegerThriftSpanExporter * add smoke test
This commit is contained in:
parent
16bd639d31
commit
4c8b8a77fb
|
@ -46,6 +46,7 @@ ext {
|
|||
opentelemetryTraceProps : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-extension-trace-propagators', version: versions.opentelemetry),
|
||||
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetryAnother),
|
||||
opentelemetryJaeger : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporter-jaeger', version: versions.opentelemetryOther),
|
||||
opentelemetryJaegerThrift : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporter-jaeger-thrift', version: versions.opentelemetryOther),
|
||||
opentelemetryOtlp : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporter-otlp', version: versions.opentelemetryOther),
|
||||
opentelemetryZipkin : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporter-zipkin', version: versions.opentelemetryOther),
|
||||
opentelemetryPrometheus : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporter-prometheus', version: versions.opentelemetryOther),
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
plugins {
|
||||
id "com.github.johnrengelman.shadow"
|
||||
}
|
||||
|
||||
apply from: "$rootDir/gradle/java.gradle"
|
||||
apply from: "$rootDir/gradle/publish.gradle"
|
||||
|
||||
archivesBaseName = 'javaagent-exporter-jaeger-thrift'
|
||||
|
||||
dependencies {
|
||||
compileOnly(project(":javaagent-spi"))
|
||||
compileOnly deps.opentelemetrySdk
|
||||
|
||||
annotationProcessor deps.autoservice
|
||||
compileOnly deps.autoservice
|
||||
|
||||
implementation(deps.opentelemetryJaegerThrift) {
|
||||
exclude group: 'io.opentelemetry', module: 'opentelemetry-sdk'
|
||||
exclude group: 'io.opentelemetry', module: 'opentelemetry-api'
|
||||
}
|
||||
}
|
||||
|
||||
jar.enabled = false
|
||||
shadowJar {
|
||||
archiveClassifier = ''
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.exporters.jaeger;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import io.opentelemetry.exporter.jaeger.thrift.JaegerThriftSpanExporter;
|
||||
import io.opentelemetry.javaagent.spi.exporter.SpanExporterFactory;
|
||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||
import java.util.Collections;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
|
||||
@AutoService(SpanExporterFactory.class)
|
||||
public class JaegerThriftExporterFactory implements SpanExporterFactory {
|
||||
|
||||
@Override
|
||||
public SpanExporter fromConfig(Properties config) {
|
||||
return JaegerThriftSpanExporter.builder().readProperties(config).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getNames() {
|
||||
return Collections.singleton("jaeger-thrift");
|
||||
}
|
||||
}
|
|
@ -14,6 +14,7 @@ dependencies {
|
|||
|
||||
testImplementation project(':javaagent-exporters:otlp')
|
||||
testImplementation project(':javaagent-exporters:jaeger')
|
||||
testImplementation project(':javaagent-exporters:jaeger-thrift')
|
||||
testImplementation project(':javaagent-exporters:logging')
|
||||
testImplementation project(':javaagent-exporters:zipkin')
|
||||
testImplementation project(':javaagent-exporters:prometheus')
|
||||
|
@ -22,6 +23,7 @@ dependencies {
|
|||
tasks.withType(Test).configureEach() {
|
||||
dependsOn ':javaagent-exporters:otlp:shadowJar'
|
||||
dependsOn ':javaagent-exporters:jaeger:shadowJar'
|
||||
dependsOn ':javaagent-exporters:jaeger-thrift:shadowJar'
|
||||
dependsOn ':javaagent-exporters:logging:shadowJar'
|
||||
dependsOn ':javaagent-exporters:zipkin:shadowJar'
|
||||
dependsOn ':javaagent-exporters:prometheus:shadowJar'
|
||||
|
@ -30,6 +32,7 @@ tasks.withType(Test).configureEach() {
|
|||
systemProperty 'adapterRoot', "$rootDir/javaagent-exporters"
|
||||
systemProperty 'otlpExporterJar', project(':javaagent-exporters:otlp').tasks.shadowJar.archivePath
|
||||
systemProperty 'jaegerExporterJar', project(':javaagent-exporters:jaeger').tasks.shadowJar.archivePath
|
||||
systemProperty 'jaegerThriftExporterJar', project(':javaagent-exporters:jaeger-thrift').tasks.shadowJar.archivePath
|
||||
systemProperty 'loggingExporterJar', project(':javaagent-exporters:logging').tasks.shadowJar.archivePath
|
||||
systemProperty 'zipkinExporterJar', project(':javaagent-exporters:zipkin').tasks.shadowJar.archivePath
|
||||
systemProperty 'prometheusExporterJar', project(':javaagent-exporters:prometheus').tasks.shadowJar.archivePath
|
||||
|
@ -44,6 +47,7 @@ dependencies {
|
|||
shadowInclude project(path: ':javaagent-exporters:logging', configuration: 'shadow')
|
||||
shadowInclude project(path: ':javaagent-exporters:otlp', configuration: 'shadow')
|
||||
shadowInclude project(path: ':javaagent-exporters:jaeger', configuration: 'shadow')
|
||||
shadowInclude project(path: ':javaagent-exporters:jaeger-thrift', configuration: 'shadow')
|
||||
shadowInclude project(path: ':javaagent-exporters:zipkin', configuration: 'shadow')
|
||||
shadowInclude project(path: ':javaagent-exporters:prometheus', configuration: 'shadow')
|
||||
}
|
||||
|
|
|
@ -16,6 +16,9 @@ class ExporterAdaptersTest extends Specification {
|
|||
@Shared
|
||||
def jaegerExporterJar = System.getProperty("jaegerExporterJar")
|
||||
|
||||
@Shared
|
||||
def jaegerThriftExporterJar = System.getProperty("jaegerThriftExporterJar")
|
||||
|
||||
@Shared
|
||||
def loggingExporterJar = System.getProperty("loggingExporterJar")
|
||||
|
||||
|
@ -30,7 +33,7 @@ class ExporterAdaptersTest extends Specification {
|
|||
file != null
|
||||
|
||||
where:
|
||||
exporter << [otlpExporterJar, jaegerExporterJar, loggingExporterJar, zipkinExporterJar]
|
||||
exporter << [otlpExporterJar, jaegerExporterJar, jaegerThriftExporterJar, loggingExporterJar, zipkinExporterJar]
|
||||
}
|
||||
|
||||
def "test exporter load"() {
|
||||
|
@ -51,10 +54,11 @@ class ExporterAdaptersTest extends Specification {
|
|||
f.getClass().getName() == classname
|
||||
|
||||
where:
|
||||
exporter | classname
|
||||
otlpExporterJar | 'io.opentelemetry.javaagent.exporters.otlp.OtlpSpanExporterFactory'
|
||||
jaegerExporterJar | 'io.opentelemetry.javaagent.exporters.jaeger.JaegerExporterFactory'
|
||||
loggingExporterJar | 'io.opentelemetry.javaagent.exporters.logging.LoggingExporterFactory'
|
||||
zipkinExporterJar | 'io.opentelemetry.javaagent.exporters.zipkin.ZipkinExporterFactory'
|
||||
exporter | classname
|
||||
otlpExporterJar | 'io.opentelemetry.javaagent.exporters.otlp.OtlpSpanExporterFactory'
|
||||
jaegerExporterJar | 'io.opentelemetry.javaagent.exporters.jaeger.JaegerExporterFactory'
|
||||
jaegerThriftExporterJar | 'io.opentelemetry.javaagent.exporters.jaeger.JaegerThriftExporterFactory'
|
||||
loggingExporterJar | 'io.opentelemetry.javaagent.exporters.logging.LoggingExporterFactory'
|
||||
zipkinExporterJar | 'io.opentelemetry.javaagent.exporters.zipkin.ZipkinExporterFactory'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -202,6 +202,7 @@ include ':instrumentation-core:servlet-2.2'
|
|||
// exporter adapters
|
||||
include ":javaagent-exporters"
|
||||
include ":javaagent-exporters:jaeger"
|
||||
include ":javaagent-exporters:jaeger-thrift"
|
||||
include ":javaagent-exporters:logging"
|
||||
include ":javaagent-exporters:otlp"
|
||||
include ":javaagent-exporters:zipkin"
|
||||
|
|
|
@ -26,7 +26,7 @@ class JaegerExporterSmokeTest extends SmokeTest {
|
|||
]
|
||||
}
|
||||
|
||||
def "spring boot smoke test with Zipkin"() {
|
||||
def "spring boot smoke test with jaeger grpc"() {
|
||||
setup:
|
||||
startTarget(11)
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.smoketest
|
||||
|
||||
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest
|
||||
import okhttp3.Request
|
||||
|
||||
import java.util.jar.Attributes
|
||||
import java.util.jar.JarFile
|
||||
|
||||
import static java.util.stream.Collectors.toSet
|
||||
|
||||
class JaegerThriftExporterSmokeTest extends SmokeTest {
|
||||
|
||||
protected String getTargetImage(int jdk, String serverVersion) {
|
||||
"ghcr.io/open-telemetry/java-test-containers:smoke-springboot-jdk$jdk-20201204.400701583"
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, String> getExtraEnv() {
|
||||
return [
|
||||
"OTEL_EXPORTER" : "jaeger-thrift",
|
||||
"OTEL_EXPORTER_JAEGER_ENDPOINT": "http://collector:14268/api/traces"
|
||||
]
|
||||
}
|
||||
|
||||
def "spring boot smoke test with jaeger thrift"() {
|
||||
setup:
|
||||
startTarget(11)
|
||||
|
||||
String url = "http://localhost:${target.getMappedPort(8080)}/greeting"
|
||||
def request = new Request.Builder().url(url).get().build()
|
||||
|
||||
def currentAgentVersion = new JarFile(agentPath).getManifest().getMainAttributes().get(Attributes.Name.IMPLEMENTATION_VERSION)
|
||||
|
||||
when:
|
||||
def response = CLIENT.newCall(request).execute()
|
||||
Collection<ExportTraceServiceRequest> traces = waitForTraces()
|
||||
|
||||
then:
|
||||
response.body().string() == "Hi!"
|
||||
countSpansByName(traces, '/greeting') == 1
|
||||
countSpansByName(traces, 'WebController.greeting') == 1
|
||||
countSpansByName(traces, 'WebController.withSpan') == 1
|
||||
|
||||
[currentAgentVersion] as Set == findResourceAttribute(traces, "telemetry.auto.version")
|
||||
.map { it.stringValue }
|
||||
.collect(toSet())
|
||||
|
||||
cleanup:
|
||||
stopTarget()
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -12,6 +12,8 @@ receivers:
|
|||
zipkin:
|
||||
jaeger:
|
||||
protocols:
|
||||
thrift_http:
|
||||
endpoint: 0.0.0.0:14268
|
||||
grpc:
|
||||
|
||||
processors:
|
||||
|
|
Loading…
Reference in New Issue