diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java index 047a093c55..4220ba5fec 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java @@ -363,18 +363,33 @@ public class DefaultApplicationDeployer extends AbstractDeployer configOptional = configManager.getMetrics(); + // TODO compatible with old usage of metrics, remove protocol check after new metrics is ready for use. - if (metricsConfig != null && PROTOCOL_PROMETHEUS.equals(metricsConfig.getProtocol())) { - collector.setCollectEnabled(true); - collector.collectApplication(applicationModel); - collector.setThreadpoolCollectEnabled(Optional.ofNullable(metricsConfig.getEnableThreadpoolMetrics()).orElse(true)); - String protocol = metricsConfig.getProtocol(); - MetricsReporterFactory metricsReporterFactory = getExtensionLoader(MetricsReporterFactory.class).getAdaptiveExtension(); - MetricsReporter metricsReporter = metricsReporterFactory.createMetricsReporter(metricsConfig.toUrl()); - metricsReporter.init(); - applicationModel.getBeanFactory().registerBean(metricsReporter); + boolean importMetricsPrometheus; // Use package references instead of config checks + try { + Class.forName("io.micrometer.prometheus.PrometheusConfig"); + importMetricsPrometheus = true; + } catch (ClassNotFoundException e) { + importMetricsPrometheus = false; } + + if (!importMetricsPrometheus) { + //use old metrics + return; + } + + MetricsConfig metricsConfig = configOptional.orElse(new MetricsConfig(applicationModel)); + if (StringUtils.isBlank(metricsConfig.getProtocol())) { + metricsConfig.setProtocol(PROTOCOL_PROMETHEUS); + } + collector.setCollectEnabled(true); + collector.collectApplication(applicationModel); + collector.setThreadpoolCollectEnabled(Optional.ofNullable(metricsConfig.getEnableThreadpoolMetrics()).orElse(true)); + MetricsReporterFactory metricsReporterFactory = getExtensionLoader(MetricsReporterFactory.class).getAdaptiveExtension(); + MetricsReporter metricsReporter = metricsReporterFactory.createMetricsReporter(metricsConfig.toUrl()); + metricsReporter.init(); + applicationModel.getBeanFactory().registerBean(metricsReporter); } @@ -1122,7 +1137,7 @@ public class DefaultApplicationDeployer extends AbstractDeployer