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 2017/12/27 01:26:22 UTC
[incubator-servicecomb-java-chassis] 08/12: JAV-539 & SCB-9 resolve
conflicts and change "SystemResource" -> "SystemMonitor"
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 d8203236c3b033bf275c68c21ecda3f6cda3f836
Author: zhengyangyong <ya...@huawei.com>
AuthorDate: Sat Dec 23 16:13:55 2017 +0800
JAV-539 & SCB-9 resolve conflicts and change "SystemResource" -> "SystemMonitor"
Signed-off-by: zhengyangyong <ya...@huawei.com>
---
.../metrics/core/metric/CallMetric.java | 3 --
.../metrics/core/metric/InstanceMetric.java | 16 +++++----
.../metrics/core/metric/InvocationMetric.java | 3 --
.../metrics/core/metric/RegistryMetric.java | 10 ++----
.../metrics/core/metric/TimerMetric.java | 3 --
.../DefaultSystemMonitor.java} | 17 ++++++---
.../metrics/core/monitor/RegistryMonitor.java | 9 +++--
.../SystemMonitor.java} | 8 +++--
.../metrics/core/TestEventAndRunner.java | 40 +++++++++++++++++++++-
9 files changed, 76 insertions(+), 33 deletions(-)
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
index 84a06e4..9c3b0a7 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
@@ -20,10 +20,7 @@ package io.servicecomb.metrics.core.metric;
import java.util.HashMap;
import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
public class CallMetric {
- @JsonIgnore
private final String prefix;
private final long total;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
index 7a934bd..283a664 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
@@ -20,6 +20,8 @@ package io.servicecomb.metrics.core.metric;
public class InstanceMetric {
private final long waitInQueue;
+ private final SystemMetric systemMetric;
+
private final ConsumerInvocationMetric consumerMetric;
private final ProducerInvocationMetric producerMetric;
@@ -28,6 +30,10 @@ public class InstanceMetric {
return waitInQueue;
}
+ public SystemMetric getSystemMetric() {
+ return systemMetric;
+ }
+
public ConsumerInvocationMetric getConsumerMetric() {
return consumerMetric;
}
@@ -36,15 +42,11 @@ public class InstanceMetric {
return producerMetric;
}
- public InstanceMetric() {
- waitInQueue = 0;
- consumerMetric = null;
- producerMetric = null;
- }
-
- public InstanceMetric(long waitInQueue, ConsumerInvocationMetric consumerMetric,
+ public InstanceMetric(long waitInQueue, SystemMetric systemMetric,
+ ConsumerInvocationMetric consumerMetric,
ProducerInvocationMetric producerMetric) {
this.waitInQueue = waitInQueue;
+ this.systemMetric = systemMetric;
this.consumerMetric = consumerMetric;
this.producerMetric = producerMetric;
}
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
index 03c66db..62e489d 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
@@ -17,12 +17,9 @@
package io.servicecomb.metrics.core.metric;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
public class InvocationMetric {
private final String operationName;
- @JsonIgnore
private final String prefix;
private final long waitInQueue;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
index e7e1460..ccb5706 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
@@ -42,13 +42,7 @@ public class RegistryMetric {
return producerMetrics;
}
- public RegistryMetric() {
- consumerMetrics = new HashMap<>();
- producerMetrics = new HashMap<>();
- instanceMetric = new InstanceMetric();
- }
-
- public RegistryMetric(Map<String, InvocationMetric> invocationMetrics) {
+ public RegistryMetric(SystemMetric systemMetric, Map<String, InvocationMetric> invocationMetrics) {
//sum instance level metric
consumerMetrics = new HashMap<>();
producerMetrics = new HashMap<>();
@@ -85,7 +79,7 @@ public class RegistryMetric {
}
}
- instanceMetric = new InstanceMetric(totalWaitInQueue,
+ instanceMetric = new InstanceMetric(totalWaitInQueue, systemMetric,
new ConsumerInvocationMetric("instance", MetricsConst.INSTANCE_CONSUMER_PREFIX,
producerWaitInQueue, consumerLatency, consumerCall),
new ProducerInvocationMetric("instance", MetricsConst.INSTANCE_PRODUCER_PREFIX,
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
index 7212806..45f3f57 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
@@ -20,10 +20,7 @@ package io.servicecomb.metrics.core.metric;
import java.util.HashMap;
import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
public class TimerMetric {
- @JsonIgnore
private final String prefix;
private final double total;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/DefaultSystemResource.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
similarity index 81%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/DefaultSystemResource.java
rename to metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
index c045dc6..16b475b 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/DefaultSystemResource.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package io.servicecomb.metrics.core.extra;
+package io.servicecomb.metrics.core.monitor;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
@@ -24,8 +24,10 @@ import java.lang.management.ThreadMXBean;
import org.springframework.stereotype.Component;
+import io.servicecomb.metrics.core.metric.SystemMetric;
+
@Component
-public class DefaultSystemResource implements SystemResource {
+public class DefaultSystemMonitor implements SystemMonitor {
private final OperatingSystemMXBean systemMXBean;
@@ -33,12 +35,12 @@ public class DefaultSystemResource implements SystemResource {
private final MemoryMXBean memoryMXBean;
- public DefaultSystemResource() {
+ public DefaultSystemMonitor() {
this(ManagementFactory.getOperatingSystemMXBean(), ManagementFactory.getThreadMXBean(),
ManagementFactory.getMemoryMXBean());
}
- public DefaultSystemResource(OperatingSystemMXBean systemMXBean, ThreadMXBean threadMXBean,
+ public DefaultSystemMonitor(OperatingSystemMXBean systemMXBean, ThreadMXBean threadMXBean,
MemoryMXBean memoryMXBean) {
this.systemMXBean = systemMXBean;
this.threadMXBean = threadMXBean;
@@ -94,4 +96,11 @@ public class DefaultSystemResource implements SystemResource {
public long getNonHeapUsed() {
return memoryMXBean.getNonHeapMemoryUsage().getUsed();
}
+
+ @Override
+ public SystemMetric toSystemMetric() {
+ return new SystemMetric(getCpuLoad(),
+ getCpuRunningThreads(), getHeapInit(), getHeapMax(), getHeapCommit(), getHeapUsed(),
+ getNonHeapInit(), getNonHeapMax(), getNonHeapCommit(), getNonHeapUsed());
+ }
}
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
index 0f592d2..c1060de 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import io.servicecomb.metrics.core.metric.InvocationMetric;
@@ -29,9 +30,13 @@ import io.servicecomb.metrics.core.metric.RegistryMetric;
@Component
public class RegistryMonitor extends BasicMonitor {
+ private final SystemMonitor systemMonitor;
+
private final Map<String, InvocationMonitor> invocationMonitors;
- public RegistryMonitor() {
+ @Autowired
+ public RegistryMonitor(SystemMonitor systemMonitor) {
+ this.systemMonitor = systemMonitor;
this.invocationMonitors = new ConcurrentHashMap<>();
}
@@ -44,6 +49,6 @@ public class RegistryMonitor extends BasicMonitor {
for (InvocationMonitor monitor : invocationMonitors.values()) {
invocationMetrics.put(monitor.getOperationName(), monitor.toInvocationMetric(windowTimeIndex));
}
- return new RegistryMetric(invocationMetrics);
+ return new RegistryMetric(systemMonitor.toSystemMetric(), invocationMetrics);
}
}
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/SystemResource.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
similarity index 86%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/SystemResource.java
rename to metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
index d1b72be..c35e6cc 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/extra/SystemResource.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
@@ -15,9 +15,11 @@
* limitations under the License.
*/
-package io.servicecomb.metrics.core.extra;
+package io.servicecomb.metrics.core.monitor;
-public interface SystemResource {
+import io.servicecomb.metrics.core.metric.SystemMetric;
+
+public interface SystemMonitor {
double getCpuLoad();
int getCpuRunningThreads();
@@ -37,4 +39,6 @@ public interface SystemResource {
long getNonHeapCommit();
long getNonHeapUsed();
+
+ SystemMetric toSystemMetric();
}
diff --git a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
index ae518fd..8c638d6 100644
--- a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
+++ b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
@@ -17,12 +17,19 @@
package io.servicecomb.metrics.core;
+import static org.mockito.Mockito.when;
+
+import java.lang.management.MemoryMXBean;
+import java.lang.management.MemoryUsage;
+import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.ThreadMXBean;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.junit.Test;
+import org.mockito.Mockito;
import io.servicecomb.core.metrics.InvocationFinishedEvent;
import io.servicecomb.core.metrics.InvocationStartProcessingEvent;
@@ -30,6 +37,7 @@ import io.servicecomb.core.metrics.InvocationStartedEvent;
import io.servicecomb.foundation.common.utils.EventUtils;
import io.servicecomb.metrics.core.event.DefaultEventListenerManager;
import io.servicecomb.metrics.core.metric.RegistryMetric;
+import io.servicecomb.metrics.core.monitor.DefaultSystemMonitor;
import io.servicecomb.metrics.core.monitor.RegistryMonitor;
import io.servicecomb.metrics.core.publish.DefaultDataSource;
import io.servicecomb.swagger.invocation.InvocationType;
@@ -38,7 +46,26 @@ public class TestEventAndRunner {
@Test
public void test() throws InterruptedException {
- RegistryMonitor monitor = new RegistryMonitor();
+ OperatingSystemMXBean systemMXBean = Mockito.mock(OperatingSystemMXBean.class);
+ when(systemMXBean.getSystemLoadAverage()).thenReturn(1.0);
+ ThreadMXBean threadMXBean = Mockito.mock(ThreadMXBean.class);
+ when(threadMXBean.getThreadCount()).thenReturn(2);
+ MemoryMXBean memoryMXBean = Mockito.mock(MemoryMXBean.class);
+ MemoryUsage heap = Mockito.mock(MemoryUsage.class);
+ when(memoryMXBean.getHeapMemoryUsage()).thenReturn(heap);
+ when(heap.getCommitted()).thenReturn(100L);
+ when(heap.getInit()).thenReturn(200L);
+ when(heap.getMax()).thenReturn(300L);
+ when(heap.getUsed()).thenReturn(400L);
+ MemoryUsage nonHeap = Mockito.mock(MemoryUsage.class);
+ when(memoryMXBean.getNonHeapMemoryUsage()).thenReturn(nonHeap);
+ when(nonHeap.getCommitted()).thenReturn(500L);
+ when(nonHeap.getInit()).thenReturn(600L);
+ when(nonHeap.getMax()).thenReturn(700L);
+ when(nonHeap.getUsed()).thenReturn(800L);
+
+ DefaultSystemMonitor systemMonitor = new DefaultSystemMonitor(systemMXBean, threadMXBean, memoryMXBean);
+ RegistryMonitor monitor = new RegistryMonitor(systemMonitor);
DefaultDataSource dataSource = new DefaultDataSource(monitor, "1000");
List<Long> intervals = dataSource.getAppliedWindowTime();
@@ -224,5 +251,16 @@ public class TestEventAndRunner {
Map<String, Number> metrics = model.toMap();
Assert.assertEquals(metrics.size(), 68);
+
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getCpuLoad(), 1.0, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getCpuRunningThreads(), 2, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapCommit(), 100, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapInit(), 200, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapMax(), 300, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getHeapUsed(), 400, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapCommit(), 500, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapInit(), 600, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapMax(), 700, 0);
+ Assert.assertEquals(model.getInstanceMetric().getSystemMetric().getNonHeapUsed(), 800, 0);
}
}
--
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.