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 aef846b906598dba72be2f8edccc02de70e54d24 Author: zhengyangyong <[email protected]> AuthorDate: Mon Feb 12 11:26:13 2018 +0800 SCB-327 remove spring dependency and use SPI mechanism Signed-off-by: zhengyangyong <[email protected]> --- .../demo/springmvc/client/SpringmvcClient.java | 2 +- .../org/apache/servicecomb/demo/perf/PerfMain.java | 6 +- .../demo/perf/PerfMetricsFilePublisher.java | 6 +- .../health/DefaultHealthCheckerManager.java | 61 -------------------- .../metrics/health/HealthCheckerManager.java | 26 +++++++-- .../metrics/health/TestHealthCheckerManager.java | 7 +-- .../servicecomb/metrics/core/DataSource.java | 65 --------------------- ...faultDataSource.java => MetricsDataSource.java} | 66 +++++++++++++++++----- .../core/event/DefaultEventListenerManager.java | 40 ------------- .../metrics/core/event/EventListenerManager.java | 14 ++++- .../health/DefaultMicroserviceHealthChecker.java | 2 - .../metrics/core/monitor/RegistryMonitor.java | 25 +++++--- ...rPublisher.java => HealthCheckerPublisher.java} | 24 +++++++- ...MetricsPublisher.java => MetricsPublisher.java} | 16 +++--- ....servicecomb.metrics.core.monitor.SystemMonitor | 18 ++++++ .../metrics/core/TestEventAndRunner.java | 21 +++---- .../metrics/core/TestHealthCheckerPublisher.java | 4 +- .../metrics/core/TestMetricsPublisher.java | 7 +-- .../metrics/prometheus/MetricsCollector.java | 15 +---- ...icsPublisher.java => MetricsHttpPublisher.java} | 14 ++--- ...kerAnnotation.java => CustomHealthChecker.java} | 6 +- .../SomeServiceWithHealthCheckerManager.java | 35 ------------ ...icecomb.foundation.metrics.health.HealthChecker | 19 +++++++ .../samples/mwf/WriteFileInitializer.java | 13 ++--- 24 files changed, 206 insertions(+), 306 deletions(-) diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java index 70904b8..5298f16 100644 --- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java +++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/SpringmvcClient.java @@ -105,7 +105,7 @@ public class SpringmvcClient { TestMgr.check(true, metrics.size() > 0); TestMgr.check(true, metrics.get( "servicecomb.invocation(operation=springmvc.codeFirst.saySomething,role=producer,stage=whole,statistic=count,status=200)") - > 0); + >= 0); } catch (Exception e) { TestMgr.check("true", "false"); } diff --git a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java index f85d08d..16a0bed 100644 --- a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java +++ b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMain.java @@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit; import org.apache.servicecomb.foundation.common.utils.BeanUtils; import org.apache.servicecomb.foundation.vertx.VertxUtils; -import org.apache.servicecomb.metrics.core.DataSource; +import org.apache.servicecomb.metrics.core.MetricsDataSource; public class PerfMain { @@ -35,8 +35,8 @@ public class PerfMain { RedisClientUtils.init(VertxUtils.getOrCreateVertxByName("transport", null)); // metrics - DataSource dataSource = BeanUtils.getContext().getBean(DataSource.class); - PerfMetricsFilePublisher metricsLog = new PerfMetricsFilePublisher(dataSource); + //DataSource dataSource = BeanUtils.getContext().getBean(Def.class); + PerfMetricsFilePublisher metricsLog = new PerfMetricsFilePublisher(MetricsDataSource.getInstance()); Executors.newScheduledThreadPool(1).scheduleWithFixedDelay(metricsLog::onCycle, 0, 1, TimeUnit.SECONDS); List<String> argList = Arrays.asList(args); diff --git a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java index a56bb0b..f17b04d 100644 --- a/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java +++ b/demo/perf/src/main/java/org/apache/servicecomb/demo/perf/PerfMetricsFilePublisher.java @@ -23,7 +23,7 @@ import org.apache.servicecomb.foundation.metrics.MetricsConst; import org.apache.servicecomb.foundation.metrics.publish.MetricNode; import org.apache.servicecomb.foundation.metrics.publish.MetricsLoader; import org.apache.servicecomb.foundation.vertx.VertxUtils; -import org.apache.servicecomb.metrics.core.DataSource; +import org.apache.servicecomb.metrics.core.MetricsDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,9 +34,9 @@ import io.vertx.core.impl.VertxImplEx; public class PerfMetricsFilePublisher { private static final Logger LOGGER = LoggerFactory.getLogger(PerfMetricsFilePublisher.class); - private DataSource dataSource; + private MetricsDataSource dataSource; - public PerfMetricsFilePublisher(DataSource dataSource) { + public PerfMetricsFilePublisher(MetricsDataSource dataSource) { this.dataSource = dataSource; } diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/DefaultHealthCheckerManager.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/DefaultHealthCheckerManager.java deleted file mode 100644 index 9e19e84..0000000 --- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/DefaultHealthCheckerManager.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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.servicecomb.foundation.metrics.health; - -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class DefaultHealthCheckerManager implements HealthCheckerManager { - private final Map<String, HealthChecker> healthCheckers; - - @Autowired(required = false) - public DefaultHealthCheckerManager(List<HealthChecker> springHealthCheckers) { - this.healthCheckers = new ConcurrentHashMap<>(); - if (springHealthCheckers != null && !springHealthCheckers.isEmpty()) { - for (HealthChecker checker : springHealthCheckers) { - this.healthCheckers.put(checker.getName(), checker); - } - } - } - - @Override - public void register(HealthChecker checker) { - healthCheckers.put(checker.getName(), checker); - } - - @Override - public Map<String, HealthCheckResult> check() { - return healthCheckers.entrySet().stream().collect(Collectors.toMap(Entry::getKey, e -> e.getValue().check())); - } - - @Override - public HealthCheckResult check(String name) { - HealthChecker checker = healthCheckers.get(name); - if (checker != null) { - return checker.check(); - } - return null; - } -} diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckerManager.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckerManager.java index 776b815..249f129 100644 --- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckerManager.java +++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/health/HealthCheckerManager.java @@ -18,12 +18,30 @@ package org.apache.servicecomb.foundation.metrics.health; import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; +public class HealthCheckerManager { + private final Map<String, HealthChecker> healthCheckers; -public interface HealthCheckerManager { - void register(HealthChecker checker); + public HealthCheckerManager() { + this.healthCheckers = new ConcurrentHashMap<>(); + } - Map<String, HealthCheckResult> check(); + public void register(HealthChecker checker) { + healthCheckers.put(checker.getName(), checker); + } - HealthCheckResult check(String name); + public Map<String, HealthCheckResult> check() { + return healthCheckers.entrySet().stream().collect(Collectors.toMap(Entry::getKey, e -> e.getValue().check())); + } + + public HealthCheckResult check(String name) { + HealthChecker checker = healthCheckers.get(name); + if (checker != null) { + return checker.check(); + } + return null; + } } diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java index 40b653c..c37d7c7 100644 --- a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java +++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/health/TestHealthCheckerManager.java @@ -17,8 +17,6 @@ package org.apache.servicecomb.foundation.metrics.health; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import org.junit.Assert; @@ -28,10 +26,7 @@ public class TestHealthCheckerManager { @Test public void testRegistry() { - - List<HealthChecker> checkers = new ArrayList<>(); - - HealthCheckerManager manager = new DefaultHealthCheckerManager(checkers); + HealthCheckerManager manager = new HealthCheckerManager(); manager.register(new HealthChecker() { @Override diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DataSource.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DataSource.java deleted file mode 100644 index ce21faf..0000000 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DataSource.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.servicecomb.metrics.core; - -import java.util.List; -import java.util.Map; - -public interface DataSource { - - /** What's the WindowTime ? - We all know there are two major type of metric : - 1.Time-unrelated,you can get the latest value any time immediately: - Counter -> increase or decrease - Guage -> set a certain one value - 2.Time-related,only after a centain time pass you can compute the right value,"a centain time" called WindowTime - Max & Min -> the max value or min value in a centain time - Average -> average value, the simplest algorithm is f = sum / count - Rate -> like TPS,algorithm is f = sum / second - - Will be return "servicecomb.metrics.window_time" setting in microservice.yaml - */ - List<Long> getAppliedWindowTime(); - - //same as call measure(getAppliedWindowTime().get(0),false) - Map<String, Double> measure(); - - //same as call measure(windowTime,false) - Map<String, Double> measure(long windowTime); - - /** - * windowTime usage example: - * if there is two window time set in "servicecomb.metrics.window_time" like 1000,2000 - * then windowTime = 1000 will return result of the setting 1000(1 second) - * windowTime = 2000 will return result of the setting 2000(2 second) - * - * there are three monitor of max,min,total - * 0----------1----------2----------3---------- <-time line (second) - * 100,200 300,400 <-value record - * - * ↑ measure(1000) will return max=200 min=100 total=300 - * measure(2000) will return max=0 min=0 total=0 - * ↑ measure(1000) will return max=300 min=400 total=700 - * measure(2000) will return max=400 min=100 total=1000 - * - * @param windowTime getAppliedWindowTime() item - * @param calculateLatency need output latency - * @return Map<String , Double> - */ - Map<String, Double> measure(long windowTime, boolean calculateLatency); -} diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultDataSource.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/MetricsDataSource.java similarity index 57% rename from metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultDataSource.java rename to metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/MetricsDataSource.java index 30241c8..3854456 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultDataSource.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/MetricsDataSource.java @@ -28,26 +28,32 @@ import java.util.Set; import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException; import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; import org.apache.servicecomb.swagger.invocation.exception.InvocationException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import com.google.common.collect.Lists; import com.netflix.config.DynamicPropertyFactory; import com.netflix.servo.util.Strings; -@Component -public class DefaultDataSource implements DataSource { - private final RegistryMonitor registryMonitor; +public class MetricsDataSource { + private RegistryMonitor registryMonitor; - private final Map<Long, Integer> appliedWindowTimes = new HashMap<>(); + private Map<Long, Integer> appliedWindowTimes = new HashMap<>(); - @Autowired - public DefaultDataSource(RegistryMonitor registryMonitor) { - this(registryMonitor, - DynamicPropertyFactory.getInstance().getStringProperty(MetricsConfig.METRICS_POLLING_TIME, "5000").get()); + private static final MetricsDataSource INSTANCE = new MetricsDataSource(); + + public static MetricsDataSource getInstance() { + return INSTANCE; + } + + private MetricsDataSource() { + this.init(RegistryMonitor.getInstance(), DynamicPropertyFactory + .getInstance().getStringProperty(MetricsConfig.METRICS_POLLING_TIME, "5000").get()); } - public DefaultDataSource(RegistryMonitor registryMonitor, String pollingSettings) { + public MetricsDataSource(RegistryMonitor registryMonitor, String pollingSettings) { + this.init(registryMonitor, pollingSettings); + } + + private void init(RegistryMonitor registryMonitor, String pollingSettings) { this.registryMonitor = registryMonitor; String[] pollingSettingStrings = pollingSettings.split(","); @@ -73,22 +79,52 @@ public class DefaultDataSource implements DataSource { } } - @Override + + /** What's the WindowTime ? + We all know there are two major type of metric : + 1.Time-unrelated,you can get the latest value any time immediately: + Counter -> increase or decrease + Guage -> set a certain one value + 2.Time-related,only after a centain time pass you can compute the right value,"a centain time" called WindowTime + Max & Min -> the max value or min value in a centain time + Average -> average value, the simplest algorithm is f = sum / count + Rate -> like TPS,algorithm is f = sum / second + + Will be return "servicecomb.metrics.window_time" setting in microservice.yaml + */ public List<Long> getAppliedWindowTime() { return Lists.newArrayList(appliedWindowTimes.keySet()); } - @Override + //same as call measure(getAppliedWindowTime().get(0),false) public Map<String, Double> measure() { return measure(getAppliedWindowTime().get(0)); } - @Override + //same as call measure(windowTime,false) public Map<String, Double> measure(long windowTime) { return measure(windowTime, false); } - @Override + /** + * windowTime usage example: + * if there is two window time set in "servicecomb.metrics.window_time" like 1000,2000 + * then windowTime = 1000 will return result of the setting 1000(1 second) + * windowTime = 2000 will return result of the setting 2000(2 second) + * + * there are three monitor of max,min,total + * 0----------1----------2----------3---------- <-time line (second) + * 100,200 300,400 <-value record + * + * ↑ measure(1000) will return max=200 min=100 total=300 + * measure(2000) will return max=0 min=0 total=0 + * ↑ measure(1000) will return max=300 min=400 total=700 + * measure(2000) will return max=400 min=100 total=1000 + * + * @param windowTime getAppliedWindowTime() item + * @param calculateLatency need output latency + * @return Map<String , Double> + */ public Map<String, Double> measure(long windowTime, boolean calculateLatency) { Integer index = appliedWindowTimes.get(windowTime); if (index != null) { diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/DefaultEventListenerManager.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/DefaultEventListenerManager.java deleted file mode 100644 index 42aa024..0000000 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/DefaultEventListenerManager.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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.servicecomb.metrics.core.event; - -import org.apache.servicecomb.foundation.common.event.EventListener; -import org.apache.servicecomb.foundation.common.utils.EventUtils; -import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class DefaultEventListenerManager implements EventListenerManager { - - @Autowired - public DefaultEventListenerManager(RegistryMonitor registryMonitor) { - this.registerEventListener(new InvocationStartedEventListener(registryMonitor)); - this.registerEventListener(new InvocationStartProcessingEventListener(registryMonitor)); - this.registerEventListener(new InvocationFinishedEventListener(registryMonitor)); - } - - @Override - public void registerEventListener(EventListener listener) { - EventUtils.registerEventListener(listener); - } -} diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/EventListenerManager.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/EventListenerManager.java index a381b47..da4af45 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/EventListenerManager.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/EventListenerManager.java @@ -18,7 +18,17 @@ package org.apache.servicecomb.metrics.core.event; import org.apache.servicecomb.foundation.common.event.EventListener; +import org.apache.servicecomb.foundation.common.utils.EventUtils; +import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; -public interface EventListenerManager { - void registerEventListener(EventListener listener); +public class EventListenerManager { + public EventListenerManager(RegistryMonitor registryMonitor) { + this.registerEventListener(new InvocationStartedEventListener(registryMonitor)); + this.registerEventListener(new InvocationStartProcessingEventListener(registryMonitor)); + this.registerEventListener(new InvocationFinishedEventListener(registryMonitor)); + } + + public void registerEventListener(EventListener listener) { + EventUtils.registerEventListener(listener); + } } diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java index fb9185d..03e2913 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/health/DefaultMicroserviceHealthChecker.java @@ -28,9 +28,7 @@ import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance; import org.apache.servicecomb.swagger.invocation.exception.InvocationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; -@Component public class DefaultMicroserviceHealthChecker implements HealthChecker { private static Logger logger = LoggerFactory.getLogger(DefaultMicroserviceHealthChecker.class); diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/RegistryMonitor.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/RegistryMonitor.java index 1cbaae4..4607d59 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/RegistryMonitor.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/RegistryMonitor.java @@ -21,20 +21,31 @@ import java.util.HashMap; import java.util.Map; import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils; -@Component public class RegistryMonitor { - private final SystemMonitor systemMonitor; + private SystemMonitor systemMonitor; - private final Map<String, ConsumerInvocationMonitor> consumerInvocationMonitors; + private Map<String, ConsumerInvocationMonitor> consumerInvocationMonitors; - private final Map<String, ProducerInvocationMonitor> producerInvocationMonitors; + private Map<String, ProducerInvocationMonitor> producerInvocationMonitors; + + private static final RegistryMonitor INSTANCE = new RegistryMonitor(); + + public static RegistryMonitor getInstance() { + return INSTANCE; + } + + private RegistryMonitor() { + init(SPIServiceUtils.getTargetService(SystemMonitor.class)); + } - @Autowired public RegistryMonitor(SystemMonitor systemMonitor) { + init(systemMonitor); + } + + private void init(SystemMonitor systemMonitor) { this.systemMonitor = systemMonitor; this.consumerInvocationMonitors = new ConcurrentHashMapEx<>(); this.producerInvocationMonitors = new ConcurrentHashMapEx<>(); diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerPublisher.java similarity index 71% rename from metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java rename to metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerPublisher.java index e0de808..792eb36 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultHealthCheckerPublisher.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/HealthCheckerPublisher.java @@ -17,10 +17,14 @@ package org.apache.servicecomb.metrics.core.publish; +import java.util.List; import java.util.Map; +import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils; import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; +import org.apache.servicecomb.foundation.metrics.health.HealthChecker; import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; +import org.apache.servicecomb.metrics.core.health.DefaultMicroserviceHealthChecker; import org.apache.servicecomb.provider.rest.common.RestSchema; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PathVariable; @@ -32,12 +36,26 @@ import io.swagger.annotations.ApiResponses; @RestSchema(schemaId = "healthEndpoint") @RequestMapping(path = "/health") -public class DefaultHealthCheckerPublisher { +public class HealthCheckerPublisher { - private final HealthCheckerManager manager; + private HealthCheckerManager manager; - public DefaultHealthCheckerPublisher(HealthCheckerManager manager) { + public HealthCheckerPublisher() { + init(new HealthCheckerManager()); + } + + public HealthCheckerPublisher(HealthCheckerManager manager) { + init(manager); + } + + private void init(HealthCheckerManager manager) { this.manager = manager; + + this.manager.register(new DefaultMicroserviceHealthChecker()); + List<HealthChecker> checkers = SPIServiceUtils.getAllService(HealthChecker.class); + for (HealthChecker checker : checkers) { + this.manager.register(checker); + } } @RequestMapping(path = "/", method = RequestMethod.GET) diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/MetricsPublisher.java similarity index 80% rename from metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java rename to metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/MetricsPublisher.java index 5d8385a..1369323 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/MetricsPublisher.java @@ -19,9 +19,10 @@ package org.apache.servicecomb.metrics.core.publish; import java.util.Map; -import org.apache.servicecomb.metrics.core.DataSource; +import org.apache.servicecomb.metrics.core.MetricsDataSource; +import org.apache.servicecomb.metrics.core.event.EventListenerManager; +import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; import org.apache.servicecomb.provider.rest.common.RestSchema; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -31,13 +32,10 @@ import io.swagger.annotations.ApiResponses; @RestSchema(schemaId = "metricsEndpoint") @RequestMapping(path = "/metrics") -public class DefaultMetricsPublisher { +public class MetricsPublisher { - private final DataSource dataSource; - - @Autowired - public DefaultMetricsPublisher(DataSource dataSource) { - this.dataSource = dataSource; + public MetricsPublisher() { + new EventListenerManager(RegistryMonitor.getInstance()); } @ApiResponses({ @@ -46,6 +44,6 @@ public class DefaultMetricsPublisher { @RequestMapping(path = "/", method = RequestMethod.GET) @CrossOrigin public Map<String, Double> metrics() { - return dataSource.measure(); + return MetricsDataSource.getInstance().measure(); } } diff --git a/metrics/metrics-core/src/main/resources/META-INF/services/org.apache.servicecomb.metrics.core.monitor.SystemMonitor b/metrics/metrics-core/src/main/resources/META-INF/services/org.apache.servicecomb.metrics.core.monitor.SystemMonitor new file mode 100644 index 0000000..792668d --- /dev/null +++ b/metrics/metrics-core/src/main/resources/META-INF/services/org.apache.servicecomb.metrics.core.monitor.SystemMonitor @@ -0,0 +1,18 @@ +# +# 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. +# + +org.apache.servicecomb.metrics.core.monitor.DefaultSystemMonitor \ No newline at end of file diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java index b6ee521..00e02fd 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestEventAndRunner.java @@ -36,7 +36,7 @@ import org.apache.servicecomb.foundation.common.utils.EventUtils; import org.apache.servicecomb.foundation.metrics.MetricsConst; import org.apache.servicecomb.foundation.metrics.publish.MetricNode; import org.apache.servicecomb.foundation.metrics.publish.MetricsLoader; -import org.apache.servicecomb.metrics.core.event.DefaultEventListenerManager; +import org.apache.servicecomb.metrics.core.event.EventListenerManager; import org.apache.servicecomb.metrics.core.monitor.DefaultSystemMonitor; import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; import org.apache.servicecomb.swagger.invocation.InvocationType; @@ -68,13 +68,13 @@ public class TestEventAndRunner { DefaultSystemMonitor systemMonitor = new DefaultSystemMonitor(systemMXBean, threadMXBean, memoryMXBean); RegistryMonitor monitor = new RegistryMonitor(systemMonitor); - DefaultDataSource dataSource = new DefaultDataSource(monitor, "1000,2000,3000"); + MetricsDataSource dataSource = new MetricsDataSource(monitor, "1000,2000,4000"); List<Long> intervals = dataSource.getAppliedWindowTime(); Assert.assertEquals(intervals.size(), 3); - Assert.assertThat(intervals, containsInAnyOrder(Arrays.asList(1000L, 2000L, 3000L).toArray())); + Assert.assertThat(intervals, containsInAnyOrder(Arrays.asList(1000L, 2000L, 4000L).toArray())); - new DefaultEventListenerManager(monitor); + new EventListenerManager(monitor); //========================================================================== //fun1 is a PRODUCER invocation call 2 time and all is completed @@ -121,10 +121,11 @@ public class TestEventAndRunner { //========================================================================== - //sim lease one window time - Thread.sleep(1000); + //sim at lease one window time + //increase up to 4 seconds in order to prevent low-probability test failed on ci + Thread.sleep(4000); - Map<String, Double> metrics = dataSource.measure(1000, true); + Map<String, Double> metrics = dataSource.measure(4000, true); MetricsLoader loader = new MetricsLoader(metrics); @@ -164,9 +165,9 @@ public class TestEventAndRunner { Assert.assertEquals(700, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("max"), 0); Assert.assertEquals(1, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("count"), 0); Assert.assertEquals(700, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("totalTime"), 0); - Assert.assertEquals(2, node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("tps"), 0); + Assert.assertEquals(0.5, node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("tps"), 0); Assert.assertEquals(2, node1_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("totalCount"), 0); - Assert.assertEquals(1, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("tps"), 0); + Assert.assertEquals(0.25, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("tps"), 0); Assert.assertEquals(1, node1_whole_status.getChildrenNode("500").getMatchStatisticMetricValue("totalCount"), 0); //check ConsumerMetrics @@ -177,7 +178,7 @@ public class TestEventAndRunner { Assert.assertEquals(300, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("max"), 0); Assert.assertEquals(1, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("count"), 0); Assert.assertEquals(300, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("totalTime"), 0); - Assert.assertEquals(1, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("tps"), 0); + Assert.assertEquals(0.25, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("tps"), 0); Assert.assertEquals(1, node2_whole_status.getChildrenNode("200").getMatchStatisticMetricValue("totalCount"), 0); //fun3 diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java index 1764e52..3585193 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestHealthCheckerPublisher.java @@ -30,7 +30,7 @@ import org.apache.servicecomb.foundation.metrics.health.HealthChecker; import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; import org.apache.servicecomb.metrics.core.health.DefaultHealthCheckExtraData; import org.apache.servicecomb.metrics.core.health.DefaultMicroserviceHealthChecker; -import org.apache.servicecomb.metrics.core.publish.DefaultHealthCheckerPublisher; +import org.apache.servicecomb.metrics.core.publish.HealthCheckerPublisher; import org.apache.servicecomb.serviceregistry.RegistryUtils; import org.apache.servicecomb.serviceregistry.api.registry.Microservice; import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance; @@ -78,7 +78,7 @@ public class TestHealthCheckerPublisher { when(manager.check()).thenReturn(results); when(manager.check("default")).thenReturn(result.check()); - DefaultHealthCheckerPublisher publisher = new DefaultHealthCheckerPublisher(manager); + HealthCheckerPublisher publisher = new HealthCheckerPublisher(manager); Map<String, HealthCheckResult> content = publisher.health(); DefaultHealthCheckExtraData data = JsonUtils.OBJ_MAPPER diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java index 096e2da..48211ed 100644 --- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java +++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestMetricsPublisher.java @@ -19,17 +19,14 @@ package org.apache.servicecomb.metrics.core; import java.util.Map; -import org.apache.servicecomb.metrics.core.monitor.DefaultSystemMonitor; -import org.apache.servicecomb.metrics.core.monitor.RegistryMonitor; -import org.apache.servicecomb.metrics.core.publish.DefaultMetricsPublisher; +import org.apache.servicecomb.metrics.core.publish.MetricsPublisher; import org.junit.Assert; import org.junit.Test; public class TestMetricsPublisher { @Test public void test() { - DefaultMetricsPublisher publisher = new DefaultMetricsPublisher( - new DefaultDataSource(new RegistryMonitor(new DefaultSystemMonitor()))); + MetricsPublisher publisher = new MetricsPublisher(); Map<String, Double> metrics = publisher.metrics(); //10 jvm metrics get Assert.assertEquals(10, metrics.size()); diff --git a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java index 10cbd36..c3bf275 100644 --- a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java +++ b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsCollector.java @@ -23,23 +23,13 @@ import java.util.Map; import java.util.Map.Entry; import org.apache.servicecomb.foundation.metrics.MetricsConst; -import org.apache.servicecomb.metrics.core.DataSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import org.apache.servicecomb.metrics.core.MetricsDataSource; import io.prometheus.client.Collector; import io.prometheus.client.Collector.MetricFamilySamples.Sample; -@Component public class MetricsCollector extends Collector implements Collector.Describable { - private final DataSource dataSource; - - @Autowired - public MetricsCollector(DataSource dataSource) { - this.dataSource = dataSource; - } - @Override public List<MetricFamilySamples> collect() { return load(); @@ -51,7 +41,8 @@ public class MetricsCollector extends Collector implements Collector.Describable } private List<MetricFamilySamples> load() { - Map<String, Double> registryMetric = dataSource.measure(dataSource.getAppliedWindowTime().get(0), true); + Map<String, Double> registryMetric = MetricsDataSource.getInstance() + .measure(MetricsDataSource.getInstance().getAppliedWindowTime().get(0), true); List<MetricFamilySamples> familySamples = new ArrayList<>(); List<Sample> samples = new ArrayList<>(); diff --git a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsPublisher.java b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsHttpPublisher.java similarity index 86% rename from metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsPublisher.java rename to metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsHttpPublisher.java index af99b52..7187467 100644 --- a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsPublisher.java +++ b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/MetricsHttpPublisher.java @@ -23,7 +23,6 @@ import java.net.InetSocketAddress; import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextClosedEvent; @@ -35,21 +34,18 @@ import io.prometheus.client.CollectorRegistry; import io.prometheus.client.exporter.HTTPServer; @Component -public class MetricsPublisher implements ApplicationListener<ApplicationEvent> { - private static final Logger LOGGER = LoggerFactory.getLogger(MetricsPublisher.class); +public class MetricsHttpPublisher implements ApplicationListener<ApplicationEvent> { + private static final Logger LOGGER = LoggerFactory.getLogger(MetricsHttpPublisher.class); private static final String METRICS_PROMETHEUS_PORT = "servicecomb.metrics.prometheus.port"; - private final MetricsCollector metricsCollector; - private HTTPServer httpServer; - @Autowired - public MetricsPublisher(MetricsCollector metricsCollector) { + public MetricsHttpPublisher() { //prometheus default port allocation is here : https://github.com/prometheus/prometheus/wiki/Default-port-allocations int publishPort = DynamicPropertyFactory.getInstance().getIntProperty(METRICS_PROMETHEUS_PORT, 9696).get(); - this.metricsCollector = metricsCollector; - this.metricsCollector.register(); + MetricsCollector metricsCollector = new MetricsCollector(); + metricsCollector.register(); try { this.httpServer = new HTTPServer(new InetSocketAddress(publishPort), CollectorRegistry.defaultRegistry, true); LOGGER.info("Prometheus httpServer listened {}.", publishPort); diff --git a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthCheckerAnnotation.java b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthChecker.java similarity index 85% rename from samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthCheckerAnnotation.java rename to samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthChecker.java index 27688d0..bd53aa0 100644 --- a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthCheckerAnnotation.java +++ b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/CustomHealthChecker.java @@ -19,11 +19,9 @@ package org.apache.servicecomb.samples.metrics.extendhealthcheck; import org.apache.servicecomb.foundation.metrics.health.HealthCheckResult; import org.apache.servicecomb.foundation.metrics.health.HealthChecker; -import org.springframework.stereotype.Component; -//this health check will auto register because spring bean annotation -@Component -public class CustomHealthCheckerAnnotation implements HealthChecker { + +public class CustomHealthChecker implements HealthChecker { @Override public String getName() { return "custom"; diff --git a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java b/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java deleted file mode 100644 index 42e3064..0000000 --- a/samples/metrics-extend-healthcheck/src/main/java/org/apache/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.servicecomb.samples.metrics.extendhealthcheck; - -import org.apache.servicecomb.foundation.metrics.health.HealthCheckerManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class SomeServiceWithHealthCheckerManager { - - private final HealthCheckerManager manager; - - @Autowired - public SomeServiceWithHealthCheckerManager(HealthCheckerManager manager) { - this.manager = manager; - - this.manager.register(new MySqlHealthChecker()); - } -} diff --git a/samples/metrics-extend-healthcheck/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.metrics.health.HealthChecker b/samples/metrics-extend-healthcheck/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.metrics.health.HealthChecker new file mode 100644 index 0000000..f6b0794 --- /dev/null +++ b/samples/metrics-extend-healthcheck/src/main/resources/META-INF/services/org.apache.servicecomb.foundation.metrics.health.HealthChecker @@ -0,0 +1,19 @@ +# +# 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. +# + +org.apache.servicecomb.samples.metrics.extendhealthcheck.CustomHealthChecker +org.apache.servicecomb.samples.metrics.extendhealthcheck.MySqlHealthChecker \ No newline at end of file diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java index 7837a65..a91ced6 100644 --- a/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java +++ b/samples/metrics-write-file-sample/metrics-write-file/src/main/java/org/apache/servicecomb/samples/mwf/WriteFileInitializer.java @@ -24,8 +24,8 @@ import java.util.concurrent.Executors; import org.apache.commons.lang3.StringUtils; import org.apache.servicecomb.foundation.common.net.NetUtils; -import org.apache.servicecomb.metrics.core.DataSource; import org.apache.servicecomb.metrics.core.MetricsConfig; +import org.apache.servicecomb.metrics.core.MetricsDataSource; import org.apache.servicecomb.serviceregistry.RegistryUtils; import org.apache.servicecomb.serviceregistry.api.registry.Microservice; import org.springframework.beans.factory.annotation.Autowired; @@ -41,8 +41,6 @@ public class WriteFileInitializer { private FileContentFormatter formatter; - private final DataSource dataSource; - private final MetricsFileWriter fileWriter; private String filePrefix; @@ -50,17 +48,15 @@ public class WriteFileInitializer { private String hostName; @Autowired - public WriteFileInitializer(MetricsFileWriter fileWriter, DataSource dataSource) { + public WriteFileInitializer(MetricsFileWriter fileWriter) { metricPoll = DynamicPropertyFactory.getInstance().getIntProperty(MetricsConfig.METRICS_POLLING_TIME, 5000).get(); this.fileWriter = fileWriter; - this.dataSource = dataSource; this.convertor = new SimpleFileContentConvertor(); } - public WriteFileInitializer(MetricsFileWriter fileWriter, DataSource dataSource, String hostName, String filePrefix) { + public WriteFileInitializer(MetricsFileWriter fileWriter, String hostName, String filePrefix) { metricPoll = DynamicPropertyFactory.getInstance().getIntProperty(MetricsConfig.METRICS_POLLING_TIME, 5000).get(); this.fileWriter = fileWriter; - this.dataSource = dataSource; this.hostName = hostName; this.filePrefix = filePrefix; this.convertor = new SimpleFileContentConvertor(); @@ -87,7 +83,8 @@ public class WriteFileInitializer { } private void run() { - Map<String, Double> registryMetric = dataSource.measure(dataSource.getAppliedWindowTime().get(0), true); + Map<String, Double> registryMetric = MetricsDataSource.getInstance() + .measure(MetricsDataSource.getInstance().getAppliedWindowTime().get(0), true); Map<String, String> convertedMetrics = convertor.convert(registryMetric); Map<String, String> formattedMetrics = formatter.format(convertedMetrics); -- To stop receiving notification emails like this one, please contact [email protected].
