You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/02/26 13:33:44 UTC
[incubator-servicecomb-java-chassis] 03/07: SCB-327 remove spring
dependency and use SPI mechanism
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 <ya...@huawei.com>
AuthorDate: Mon Feb 12 11:26:13 2018 +0800
SCB-327 remove spring dependency and use SPI mechanism
Signed-off-by: zhengyangyong <ya...@huawei.com>
---
.../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
ningjiang@apache.org.