diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml index 9179bd6ff6..024baf4152 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml @@ -101,6 +101,12 @@ org.springframework.boot spring-boot-starter + + + org.springframework.boot + spring-boot-starter-logging + + diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/application.yml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/application.yml index 10d0ec74e7..20bee1f724 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/application.yml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/application.yml @@ -32,7 +32,4 @@ dubbo: metadata-report: address: zookeeper://127.0.0.1:2181 -logging: - pattern: - level: '%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]' diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/log4j2.xml index 69e1321d22..87c6dd5b19 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/log4j2.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/src/main/resources/log4j2.xml @@ -18,7 +18,7 @@ - + diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml index a14a0199b8..2c0d523449 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml @@ -101,6 +101,12 @@ org.springframework.boot spring-boot-starter + + + org.springframework.boot + spring-boot-starter-logging + + diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml index d06fdfb28c..b1789be60f 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml @@ -41,7 +41,3 @@ dubbo: exporter: enabled: true enable-metadata: true -logging: - pattern: - level: '%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]' - diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/log4j2.xml index 69e1321d22..87c6dd5b19 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/log4j2.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/log4j2.xml @@ -18,7 +18,7 @@ - + diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-metrics/dubbo-metrics-default/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter index b9b03c571e..3d5a3f4937 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter +++ b/dubbo-metrics/dubbo-metrics-default/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter @@ -1,3 +1,2 @@ -observationsender=org.apache.dubbo.rpc.cluster.filter.support.ObservationSenderFilter metricsClusterFilter=org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter monitor=org.apache.dubbo.monitor.support.MonitorClusterFilter diff --git a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/DubboObservationRegistry.java b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/DubboObservationRegistry.java index 5ace0906b0..5e9b7b35b3 100644 --- a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/DubboObservationRegistry.java +++ b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/DubboObservationRegistry.java @@ -23,6 +23,8 @@ import org.apache.dubbo.config.TracingConfig; import org.apache.dubbo.metrics.MetricsGlobalRegistry; import org.apache.dubbo.metrics.utils.MetricsSupportUtil; import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.tracing.handler.DubboClientTracingObservationHandler; +import org.apache.dubbo.tracing.handler.DubboServerTracingObservationHandler; import org.apache.dubbo.tracing.tracer.PropagatorProvider; import org.apache.dubbo.tracing.tracer.PropagatorProviderFactory; import org.apache.dubbo.tracing.tracer.TracerProvider; @@ -87,7 +89,11 @@ public class DubboObservationRegistry { tracer, propagator), new io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler<>( tracer, propagator), - new io.micrometer.tracing.handler.DefaultTracingObservationHandler(tracer))); + new io.micrometer.tracing.handler.DefaultTracingObservationHandler(tracer))) + .observationHandler( + new io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler( + new DubboClientTracingObservationHandler<>(tracer), + new DubboServerTracingObservationHandler<>(tracer))); if (MetricsSupportUtil.isSupportMetrics()) { io.micrometer.core.instrument.MeterRegistry meterRegistry = diff --git a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboClientContext.java b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboClientContext.java index 3491585f40..ca91ea1c81 100644 --- a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboClientContext.java +++ b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboClientContext.java @@ -21,6 +21,7 @@ import org.apache.dubbo.rpc.Invoker; import java.util.Objects; +import io.micrometer.observation.transport.Kind; import io.micrometer.observation.transport.SenderContext; /** @@ -33,7 +34,7 @@ public class DubboClientContext extends SenderContext { private final Invocation invocation; public DubboClientContext(Invoker invoker, Invocation invocation) { - super((map, key, value) -> Objects.requireNonNull(map).setAttachment(key, value)); + super((carrier, key, value) -> Objects.requireNonNull(carrier).setAttachment(key, value), Kind.CLIENT); this.invoker = invoker; this.invocation = invocation; setCarrier(invocation); diff --git a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboServerContext.java b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboServerContext.java index 85de37203c..6ffe5e27e2 100644 --- a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboServerContext.java +++ b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/context/DubboServerContext.java @@ -19,6 +19,7 @@ package org.apache.dubbo.tracing.context; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; +import io.micrometer.observation.transport.Kind; import io.micrometer.observation.transport.ReceiverContext; /** @@ -31,7 +32,7 @@ public class DubboServerContext extends ReceiverContext { private final Invocation invocation; public DubboServerContext(Invoker invoker, Invocation invocation) { - super((stringObjectMap, s) -> String.valueOf(stringObjectMap.getAttachment(s))); + super((carrier, s) -> String.valueOf(carrier.getAttachment(s)), Kind.SERVER); this.invoker = invoker; this.invocation = invocation; setCarrier(invocation); diff --git a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationReceiverFilter.java b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationReceiverFilter.java index 75d70d26f7..f19ada47a2 100644 --- a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationReceiverFilter.java +++ b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationReceiverFilter.java @@ -44,9 +44,9 @@ import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER; onClass = "io.micrometer.observation.NoopObservationRegistry") public class ObservationReceiverFilter implements Filter, BaseFilter.Listener, ScopeModelAware { - private ObservationRegistry observationRegistry; + private final ObservationRegistry observationRegistry; - private DubboServerObservationConvention serverObservationConvention; + private final DubboServerObservationConvention serverObservationConvention; public ObservationReceiverFilter(ApplicationModel applicationModel) { observationRegistry = applicationModel.getBeanFactory().getBean(ObservationRegistry.class); diff --git a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationSenderFilter.java b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationSenderFilter.java index 3d0cd0ab20..ce93e7ff7a 100644 --- a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationSenderFilter.java +++ b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/filter/ObservationSenderFilter.java @@ -45,9 +45,9 @@ import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER; onClass = "io.micrometer.observation.NoopObservationRegistry") public class ObservationSenderFilter implements ClusterFilter, BaseFilter.Listener, ScopeModelAware { - private ObservationRegistry observationRegistry; + private final ObservationRegistry observationRegistry; - private DubboClientObservationConvention clientObservationConvention; + private final DubboClientObservationConvention clientObservationConvention; public ObservationSenderFilter(ApplicationModel applicationModel) { observationRegistry = applicationModel.getBeanFactory().getBean(ObservationRegistry.class); diff --git a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/handler/DubboClientTracingObservationHandler.java b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/handler/DubboClientTracingObservationHandler.java new file mode 100644 index 0000000000..1f6542ba4f --- /dev/null +++ b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/handler/DubboClientTracingObservationHandler.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dubbo.tracing.handler; + +import org.apache.dubbo.tracing.context.DubboClientContext; + +import io.micrometer.observation.Observation; +import io.micrometer.observation.ObservationHandler; +import io.micrometer.observation.transport.SenderContext; +import io.micrometer.tracing.Tracer; + +public class DubboClientTracingObservationHandler implements ObservationHandler { + private final Tracer tracer; + + public DubboClientTracingObservationHandler(Tracer tracer) { + this.tracer = tracer; + } + + @Override + public void onScopeOpened(T context) {} + + @Override + public boolean supportsContext(Observation.Context context) { + return context instanceof SenderContext; + } +} diff --git a/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/handler/DubboServerTracingObservationHandler.java b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/handler/DubboServerTracingObservationHandler.java new file mode 100644 index 0000000000..e117b3ab68 --- /dev/null +++ b/dubbo-metrics/dubbo-tracing/src/main/java/org/apache/dubbo/tracing/handler/DubboServerTracingObservationHandler.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 org.apache.dubbo.tracing.handler; + +import org.apache.dubbo.rpc.RpcContext; +import org.apache.dubbo.tracing.context.DubboServerContext; + +import io.micrometer.observation.Observation; +import io.micrometer.observation.ObservationHandler; +import io.micrometer.observation.transport.ReceiverContext; +import io.micrometer.tracing.TraceContext; +import io.micrometer.tracing.Tracer; + +public class DubboServerTracingObservationHandler implements ObservationHandler { + + private static final String DEFAULT_TRACE_ID_KEY = "traceId"; + + private final Tracer tracer; + + public DubboServerTracingObservationHandler(Tracer tracer) { + this.tracer = tracer; + } + + @Override + public void onScopeOpened(T context) { + TraceContext traceContext = tracer.currentTraceContext().context(); + if (traceContext == null) { + return; + } + RpcContext.getServerContext().setAttachment(DEFAULT_TRACE_ID_KEY, traceContext.traceId()); + } + + @Override + public boolean supportsContext(Observation.Context context) { + return context instanceof ReceiverContext; + } +} diff --git a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/DubboMicrometerTracingAutoConfiguration.java b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/DubboMicrometerTracingAutoConfiguration.java index 691dea9d9d..8ec987dabf 100644 --- a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/DubboMicrometerTracingAutoConfiguration.java +++ b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/DubboMicrometerTracingAutoConfiguration.java @@ -16,7 +16,10 @@ */ package org.apache.dubbo.spring.boot.observability.autoconfigure; +import org.apache.dubbo.spring.boot.autoconfigure.DubboAutoConfiguration; import org.apache.dubbo.spring.boot.observability.autoconfigure.annotation.ConditionalOnDubboTracingEnable; +import org.apache.dubbo.tracing.handler.DubboClientTracingObservationHandler; +import org.apache.dubbo.tracing.handler.DubboServerTracingObservationHandler; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -40,7 +43,9 @@ import static org.apache.dubbo.spring.boot.util.DubboUtils.DUBBO_PREFIX; "io.micrometer.tracing.Tracer", "io.micrometer.tracing.propagation.Propagator" }) -@AutoConfigureAfter(name = "org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration") +@AutoConfigureAfter( + name = "org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration", + value = DubboAutoConfiguration.class) public class DubboMicrometerTracingAutoConfiguration { /** @@ -82,4 +87,22 @@ public class DubboMicrometerTracingAutoConfiguration { io.micrometer.tracing.Tracer tracer, io.micrometer.tracing.propagation.Propagator propagator) { return new io.micrometer.tracing.handler.PropagatingReceiverTracingObservationHandler<>(tracer, propagator); } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnBean({io.micrometer.tracing.Tracer.class}) + @Order(SENDER_TRACING_OBSERVATION_HANDLER_ORDER) + public DubboClientTracingObservationHandler dubboClientTracingObservationHandler( + io.micrometer.tracing.Tracer tracer) { + return new DubboClientTracingObservationHandler<>(tracer); + } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnBean({io.micrometer.tracing.Tracer.class}) + @Order(RECEIVER_TRACING_OBSERVATION_HANDLER_ORDER) + public DubboServerTracingObservationHandler dubboServerTracingObservationHandler( + io.micrometer.tracing.Tracer tracer) { + return new DubboServerTracingObservationHandler<>(tracer); + } } diff --git a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/ObservationHandlerGrouping.java b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/ObservationHandlerGrouping.java index d2d1820352..4d848dbea8 100644 --- a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/ObservationHandlerGrouping.java +++ b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/ObservationHandlerGrouping.java @@ -16,6 +16,7 @@ */ package org.apache.dubbo.spring.boot.observability.autoconfigure; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -47,12 +48,13 @@ class ObservationHandlerGrouping { void apply(List> handlers, ObservationRegistry.ObservationConfig config) { MultiValueMap, ObservationHandler> groupings = new LinkedMultiValueMap<>(); + List> handlersWithoutCategory = new ArrayList<>(); for (ObservationHandler handler : handlers) { Class category = findCategory(handler); if (category != null) { groupings.add(category, handler); } else { - config.observationHandler(handler); + handlersWithoutCategory.add(handler); } } for (Class category : this.categories) { @@ -62,6 +64,9 @@ class ObservationHandlerGrouping { new ObservationHandler.FirstMatchingCompositeObservationHandler(handlerGroup)); } } + for (ObservationHandler observationHandler : handlersWithoutCategory) { + config.observationHandler(observationHandler); + } } private Class findCategory(ObservationHandler handler) { diff --git a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/brave/BraveAutoConfiguration.java b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/brave/BraveAutoConfiguration.java index 99ffc78136..03bcee9ed8 100644 --- a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/brave/BraveAutoConfiguration.java +++ b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/brave/BraveAutoConfiguration.java @@ -36,6 +36,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; +import org.springframework.core.env.Environment; import static org.apache.dubbo.spring.boot.util.DubboUtils.DUBBO_PREFIX; @@ -63,7 +64,7 @@ public class BraveAutoConfiguration { /** * Default value for application name if {@code spring.application.name} is not set. */ - private static final String DEFAULT_APPLICATION_NAME = "dubbo-application"; + private static final String DEFAULT_APPLICATION_NAME = "unknown_dubbo_service"; private final DubboConfigurationProperties dubboConfigProperties; @@ -87,14 +88,15 @@ public class BraveAutoConfiguration { @Bean @ConditionalOnMissingBean public brave.Tracing braveTracing( + Environment environment, List spanHandlers, List tracingCustomizers, brave.propagation.CurrentTraceContext currentTraceContext, brave.propagation.Propagation.Factory propagationFactory, brave.sampler.Sampler sampler) { String applicationName = dubboConfigProperties.getApplication().getName(); - if (StringUtils.isEmpty(applicationName)) { - applicationName = DEFAULT_APPLICATION_NAME; + if (StringUtils.isBlank(applicationName)) { + applicationName = environment.getProperty("spring.application.name", DEFAULT_APPLICATION_NAME); } brave.Tracing.Builder builder = brave.Tracing.newBuilder() .currentTraceContext(currentTraceContext) diff --git a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java index 4eba4950dc..678b2e48e0 100644 --- a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java +++ b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java @@ -18,8 +18,7 @@ package org.apache.dubbo.spring.boot.observability.autoconfigure.otel; import org.apache.dubbo.common.Version; import org.apache.dubbo.common.utils.ClassUtils; -import org.apache.dubbo.config.ApplicationConfig; -import org.apache.dubbo.rpc.model.ModuleModel; +import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.spring.boot.autoconfigure.DubboConfigurationProperties; import org.apache.dubbo.spring.boot.observability.autoconfigure.DubboMicrometerTracingAutoConfiguration; import org.apache.dubbo.spring.boot.observability.autoconfigure.ObservabilityUtils; @@ -38,6 +37,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; import static org.apache.dubbo.spring.boot.util.DubboUtils.DUBBO_PREFIX; @@ -62,15 +62,12 @@ public class OpenTelemetryAutoConfiguration { /** * Default value for application name if {@code spring.application.name} is not set. */ - private static final String DEFAULT_APPLICATION_NAME = "application"; + private static final String DEFAULT_APPLICATION_NAME = "unknown_dubbo_service"; private final DubboConfigurationProperties dubboConfigProperties; - private final ModuleModel moduleModel; - - OpenTelemetryAutoConfiguration(DubboConfigurationProperties dubboConfigProperties, ModuleModel moduleModel) { + OpenTelemetryAutoConfiguration(DubboConfigurationProperties dubboConfigProperties) { this.dubboConfigProperties = dubboConfigProperties; - this.moduleModel = moduleModel; } @Bean @@ -87,14 +84,14 @@ public class OpenTelemetryAutoConfiguration { @Bean @ConditionalOnMissingBean io.opentelemetry.sdk.trace.SdkTracerProvider otelSdkTracerProvider( + Environment environment, ObjectProvider spanProcessors, io.opentelemetry.sdk.trace.samplers.Sampler sampler) { - String applicationName = moduleModel - .getApplicationModel() - .getApplicationConfigManager() - .getApplication() - .map(ApplicationConfig::getName) - .orElse(DEFAULT_APPLICATION_NAME); + String applicationName = dubboConfigProperties.getApplication().getName(); + if (StringUtils.isBlank(applicationName)) { + applicationName = environment.getProperty("spring.application.name", DEFAULT_APPLICATION_NAME); + } + // Due to https://github.com/micrometer-metrics/tracing/issues/343 String RESOURCE_ATTRIBUTES_CLASS_NAME = "io.opentelemetry.semconv.ResourceAttributes"; boolean isLowVersion = !ClassUtils.isPresent(