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 <yangyong.zh...@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 <yangyong.zh...@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" <commits@servicecomb.apache.org>.