Support customize collector sync period (#13140)

This commit is contained in:
Albumen Kevin 2023-09-28 11:09:06 +08:00 committed by GitHub
parent 0d88f62830
commit 34c5bbf713
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 2 deletions

View File

@ -51,6 +51,8 @@ public interface MetricsConstants {
String ENABLE_COLLECTOR_SYNC_KEY = "enable.collector.sync";
String COLLECTOR_SYNC_PERIOD_KEY = "collector.sync.period";
String AGGREGATION_COLLECTOR_KEY = "aggregation";
String AGGREGATION_ENABLED_KEY = "aggregation.enabled";

View File

@ -71,6 +71,11 @@ public class MetricsConfig extends AbstractConfig {
*/
private Boolean enableCollectorSync;
/**
* Collector sync period.
*/
private Integer collectorSyncPeriod;
/**
* @deprecated After metrics config is refactored.
* This parameter should no longer use and will be deleted in the future.
@ -248,6 +253,14 @@ public class MetricsConfig extends AbstractConfig {
this.enableCollectorSync = enableCollectorSync;
}
public Integer getCollectorSyncPeriod() {
return collectorSyncPeriod;
}
public void setCollectorSyncPeriod(Integer collectorSyncPeriod) {
this.collectorSyncPeriod = collectorSyncPeriod;
}
public Boolean getUseGlobalRegistry() {
return useGlobalRegistry;
}

View File

@ -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.COLLECTOR_SYNC_PERIOD_KEY;
import static org.apache.dubbo.common.constants.MetricsConstants.ENABLE_COLLECTOR_SYNC_KEY;
import static org.apache.dubbo.common.constants.MetricsConstants.ENABLE_JVM_METRICS_KEY;
@ -77,7 +78,7 @@ public abstract class AbstractMetricsReporter implements MetricsReporter {
private ScheduledExecutorService collectorSyncJobExecutor = null;
private static final int DEFAULT_SCHEDULE_INITIAL_DELAY = 5;
private static final int DEFAULT_SCHEDULE_PERIOD = 3;
private static final int DEFAULT_SCHEDULE_PERIOD = 60;
protected AbstractMetricsReporter(URL url, ApplicationModel applicationModel) {
this.url = url;
@ -143,9 +144,11 @@ public abstract class AbstractMetricsReporter implements MetricsReporter {
private void scheduleMetricsCollectorSyncJob() {
boolean enableCollectorSync = url.getParameter(ENABLE_COLLECTOR_SYNC_KEY, true);
if (enableCollectorSync) {
int collectSyncPeriod = url.getParameter(COLLECTOR_SYNC_PERIOD_KEY, DEFAULT_SCHEDULE_PERIOD);
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);
collectorSyncJobExecutor.scheduleWithFixedDelay(this::refreshData, DEFAULT_SCHEDULE_INITIAL_DELAY, collectSyncPeriod, TimeUnit.SECONDS);
}
}