This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 4c4bcb7a25 Support disable metrics init and sync (#13025)
4c4bcb7a25 is described below
commit 4c4bcb7a253f4f7ed9db20ae919f248a3d5397c0
Author: Albumen Kevin <[email protected]>
AuthorDate: Sun Sep 10 17:18:22 2023 +0800
Support disable metrics init and sync (#13025)
---
.../dubbo/common/constants/MetricsConstants.java | 8 ++++---
.../org/apache/dubbo/config/MetricsConfig.java | 26 ++++++++++++++++++++++
.../config/deploy/DefaultApplicationDeployer.java | 1 +
.../metrics/collector/DefaultMetricsCollector.java | 14 ++++++++++++
.../metrics/report/AbstractMetricsReporter.java | 18 +++++++++------
5 files changed, 57 insertions(+), 10 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
index e7805eaa32..4c4437d427 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
@@ -40,15 +40,17 @@ public interface MetricsConstants {
String TAG_VERSION_KEY = "version";
String TAG_APPLICATION_VERSION_KEY = "application.version";
-
+
String TAG_KEY_KEY = "key";
-
+
String TAG_CONFIG_CENTER = "config.center";
-
+
String TAG_CHANGE_TYPE = "change.type";
String ENABLE_JVM_METRICS_KEY = "enable.jvm";
+ String ENABLE_COLLECTOR_SYNC_KEY = "enable.collector.sync";
+
String AGGREGATION_COLLECTOR_KEY = "aggregation";
String AGGREGATION_ENABLED_KEY = "aggregation.enabled";
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
index 067833b2b0..129391af72 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
@@ -61,6 +61,16 @@ public class MetricsConfig extends AbstractConfig {
*/
private Boolean exportMetricsService;
+ /**
+ * Enable metrics init.
+ */
+ private Boolean enableMetricsInit;
+
+ /**
+ * Enable collector sync.
+ */
+ private Boolean enableCollectorSync;
+
/**
* @deprecated After metrics config is refactored.
* This parameter should no longer use and will be deleted in the future.
@@ -208,6 +218,22 @@ public class MetricsConfig extends AbstractConfig {
this.enableThreadpool = enableThreadpool;
}
+ public Boolean getEnableMetricsInit() {
+ return enableMetricsInit;
+ }
+
+ public void setEnableMetricsInit(Boolean enableMetricsInit) {
+ this.enableMetricsInit = enableMetricsInit;
+ }
+
+ public Boolean getEnableCollectorSync() {
+ return enableCollectorSync;
+ }
+
+ public void setEnableCollectorSync(Boolean enableCollectorSync) {
+ this.enableCollectorSync = enableCollectorSync;
+ }
+
public Boolean getUseGlobalRegistry() {
return useGlobalRegistry;
}
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 b075acaa44..55662b24b0 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
@@ -385,6 +385,7 @@ public class DefaultApplicationDeployer extends
AbstractDeployer<ApplicationMode
collector.setCollectEnabled(true);
collector.collectApplication();
collector.setThreadpoolCollectEnabled(Optional.ofNullable(metricsConfig.getEnableThreadpool()).orElse(true));
+
collector.setMetricsInitEnabled(Optional.ofNullable(metricsConfig.getEnableMetricsInit()).orElse(true));
MetricsReporterFactory metricsReporterFactory =
getExtensionLoader(MetricsReporterFactory.class).getAdaptiveExtension();
MetricsReporter metricsReporter = null;
try {
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
index ca03be45b2..9d04633260 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
@@ -60,6 +60,9 @@ public class DefaultMetricsCollector extends
CombMetricsCollector<RequestEvent>
private boolean collectEnabled = false;
private volatile boolean threadpoolCollectEnabled = false;
+
+ private volatile boolean metricsInitEnabled = true;
+
private final ThreadPoolMetricsSampler threadPoolSampler = new
ThreadPoolMetricsSampler(this);
private String applicationName;
private final ApplicationModel applicationModel;
@@ -123,6 +126,14 @@ public class DefaultMetricsCollector extends
CombMetricsCollector<RequestEvent>
this.threadpoolCollectEnabled = threadpoolCollectEnabled;
}
+ public boolean isMetricsInitEnabled() {
+ return metricsInitEnabled;
+ }
+
+ public void setMetricsInitEnabled(boolean metricsInitEnabled) {
+ this.metricsInitEnabled = metricsInitEnabled;
+ }
+
public void collectApplication() {
this.setApplicationName(applicationModel.getApplicationName());
applicationSampler.inc(applicationName,
MetricsEvent.Type.APPLICATION_INFO);
@@ -155,6 +166,9 @@ public class DefaultMetricsCollector extends
CombMetricsCollector<RequestEvent>
@Override
public void onEvent(TimeCounterEvent event) {
if(event instanceof MetricsInitEvent){
+ if (!metricsInitEnabled) {
+ return;
+ }
if(initialized.compareAndSet(false,true)) {
collectors.addAll(applicationModel.getBeanFactory().getBeansOfType(MetricsCollector.class));
}
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
index c6eb309b36..13c8cecdc4 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
@@ -17,26 +17,26 @@
package org.apache.dubbo.metrics.report;
-import io.micrometer.core.instrument.FunctionCounter;
-import io.micrometer.core.instrument.binder.MeterBinder;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
import org.apache.dubbo.common.lang.ShutdownHookCallbacks;
import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.metrics.MetricsGlobalRegistry;
import org.apache.dubbo.common.utils.NamedThreadFactory;
+import org.apache.dubbo.metrics.MetricsGlobalRegistry;
import org.apache.dubbo.metrics.collector.AggregateMetricsCollector;
-import org.apache.dubbo.metrics.collector.MetricsCollector;
import org.apache.dubbo.metrics.collector.HistogramMetricsCollector;
+import org.apache.dubbo.metrics.collector.MetricsCollector;
import org.apache.dubbo.metrics.model.sample.CounterMetricSample;
import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
import org.apache.dubbo.metrics.model.sample.MetricSample;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import io.micrometer.core.instrument.FunctionCounter;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tag;
+import io.micrometer.core.instrument.binder.MeterBinder;
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
@@ -53,6 +53,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_METRICS_COLLECTOR_EXCEPTION;
+import static
org.apache.dubbo.common.constants.MetricsConstants.ENABLE_COLLECTOR_SYNC_KEY;
import static
org.apache.dubbo.common.constants.MetricsConstants.ENABLE_JVM_METRICS_KEY;
/**
@@ -140,9 +141,12 @@ public abstract class AbstractMetricsReporter implements
MetricsReporter {
}
private void scheduleMetricsCollectorSyncJob() {
- NamedThreadFactory threadFactory = new
NamedThreadFactory("metrics-collector-sync-job", true);
- collectorSyncJobExecutor = Executors.newScheduledThreadPool(1,
threadFactory);
- collectorSyncJobExecutor.scheduleWithFixedDelay(this::refreshData,
DEFAULT_SCHEDULE_INITIAL_DELAY, DEFAULT_SCHEDULE_PERIOD, TimeUnit.SECONDS);
+ boolean enableCollectorSync =
url.getParameter(ENABLE_COLLECTOR_SYNC_KEY, true);
+ if (enableCollectorSync) {
+ NamedThreadFactory threadFactory = new
NamedThreadFactory("metrics-collector-sync-job", true);
+ collectorSyncJobExecutor = Executors.newScheduledThreadPool(1,
threadFactory);
+ collectorSyncJobExecutor.scheduleWithFixedDelay(this::refreshData,
DEFAULT_SCHEDULE_INITIAL_DELAY, DEFAULT_SCHEDULE_PERIOD, TimeUnit.SECONDS);
+ }
}
@SuppressWarnings({"unchecked", "rawtypes"})