This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 9c4416d69c8ba8db146806ca1ced3876b3a0c411 Author: Yang, Bo <[email protected]> AuthorDate: Mon Jan 8 18:16:01 2018 +0800 SCB-172 support both zipkin v1/v2 http API Add an option "apiVersion" under tracing.collector to allow user to specify the version of the zipkin http API. Possible values are "v1" and "v2". The default is "v2". Default value will be used if the user set option is invalid. --- .../common/base/ServiceCombConstants.java | 8 +++++++- .../tracing/zipkin/TracingConfiguration.java | 22 +++++++++++++++++++++- .../servicecomb/tests/tracing/TracingTestBase.java | 6 ++---- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java index 00c2cbd..372da96 100644 --- a/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java +++ b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java @@ -39,9 +39,15 @@ public interface ServiceCombConstants { String CONFIG_TRACING_COLLECTOR_ADDRESS = "servicecomb.tracing.collector.address"; + String CONFIG_TRACING_COLLECTOR_API_V1 = "v1"; + + String CONFIG_TRACING_COLLECTOR_API_V2 = "v2"; + + String CONFIG_TRACING_COLLECTOR_API_VERSION = "servicecomb.tracing.collector.apiVersion"; + String CONFIG_TRACING_ENABLED_KEY = "servicecomb.tracing.enabled"; - String CONFIG_TRACING_COLLECTOR_PATH = "/api/v2/spans"; + String CONFIG_TRACING_COLLECTOR_PATH = "/api/{0}/spans"; String DEFAULT_TRACING_COLLECTOR_ADDRESS = "http://127.0.0.1:9411"; diff --git a/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java b/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java index 000d5aa..57ed67d 100644 --- a/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java +++ b/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java @@ -19,19 +19,26 @@ package io.servicecomb.tracing.zipkin; import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_QUALIFIED_MICROSERVICE_NAME_KEY; import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_ADDRESS; +import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_API_VERSION; import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_PATH; +import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_API_V1; +import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_API_V2; import static io.servicecomb.foundation.common.base.ServiceCombConstants.DEFAULT_MICROSERVICE_NAME; import static io.servicecomb.foundation.common.base.ServiceCombConstants.DEFAULT_TRACING_COLLECTOR_ADDRESS; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.text.MessageFormat; + import brave.Tracing; import brave.context.log4j12.MDCCurrentTraceContext; import brave.http.HttpTracing; import brave.propagation.CurrentTraceContext; import io.servicecomb.config.DynamicProperties; + import zipkin2.Span; +import zipkin2.codec.SpanBytesEncoder; import zipkin2.reporter.AsyncReporter; import zipkin2.reporter.Reporter; import zipkin2.reporter.Sender; @@ -39,20 +46,33 @@ import zipkin2.reporter.okhttp3.OkHttpSender; @Configuration class TracingConfiguration { + private String apiVersion = CONFIG_TRACING_COLLECTOR_API_V2; @Bean Sender sender(DynamicProperties dynamicProperties) { + apiVersion = dynamicProperties.getStringProperty(CONFIG_TRACING_COLLECTOR_API_VERSION, + CONFIG_TRACING_COLLECTOR_API_V2).toLowerCase(); + // use default value if the user set value is invalid + if (apiVersion.compareTo(CONFIG_TRACING_COLLECTOR_API_V1) != 0){ + apiVersion = CONFIG_TRACING_COLLECTOR_API_V2; + } + + String path = MessageFormat.format(CONFIG_TRACING_COLLECTOR_PATH, apiVersion); return OkHttpSender.create( dynamicProperties.getStringProperty( CONFIG_TRACING_COLLECTOR_ADDRESS, DEFAULT_TRACING_COLLECTOR_ADDRESS) .trim() .replaceAll("/+$", "") - .concat(CONFIG_TRACING_COLLECTOR_PATH)); + .concat(path)); } @Bean Reporter<Span> zipkinReporter(Sender sender) { + if (apiVersion.compareTo(CONFIG_TRACING_COLLECTOR_API_V1) == 0){ + return AsyncReporter.builder(sender).build(SpanBytesEncoder.JSON_V1); + } + return AsyncReporter.builder(sender).build(); } diff --git a/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java b/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java index a5350cd..7a29363 100644 --- a/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java +++ b/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java @@ -96,10 +96,8 @@ public class TracingTestBase { .filter(span -> span.tags() != null) .map(span -> span.tags().entrySet()) .flatMap(Collection::stream) - .filter(span -> "call.path".equals(span.getKey()) || "http.path".equals(span.getKey()) || "http.status_code" - .equals - (span - .getKey())) + .filter(span -> "call.path".equals(span.getKey()) || "http.path".equals(span.getKey()) + || "http.status_code".equals(span.getKey())) .filter(span -> span.getValue() != null) .map(annotation -> new String(annotation.getValue())) .distinct() -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
