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 3ed292d4f8f2b810e0a6c75c5c24dae8c9388d83 Author: zhengyangyong <[email protected]> AuthorDate: Fri Jan 12 14:43:23 2018 +0800 SCB-150 minor refactor and fix test case Signed-off-by: zhengyangyong <[email protected]> --- .../demo/springmvc/client/SpringmvcClient.java | 3 +- .../demo/perf/PerfMetricsFilePublisher.java | 14 +++- .../metrics/common}/MetricsDimension.java | 2 +- .../servicecomb/metrics/common/CallMetric.java | 10 ++- .../event/InvocationFinishedEventListener.java | 2 +- .../core/event/InvocationStartedEventListener.java | 2 +- .../metrics/core/monitor/CallMonitor.java | 2 +- .../core/monitor/ConsumerInvocationMonitor.java | 2 +- .../core/monitor/ProducerInvocationMonitor.java | 2 +- .../metrics/core/TestEventAndRunner.java | 31 ++++---- .../metrics/prometheus/MetricsCollector.java | 88 +++++++++++++++++----- .../servicecomb/samples/mwf/TestWriteFile.java | 55 ++++++++------ 12 files changed, 139 insertions(+), 74 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 3e93104..7ee9c14 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 @@ -125,7 +125,8 @@ public class SpringmvcClient { .check(true, metric.getInstanceMetric().getSystemMetric().getHeapUsed() != 0); TestMgr.check(true, metric.getProducerMetrics().size() > 0); TestMgr.check(true, - metric.getProducerMetrics().get("springmvc.codeFirst.saySomething").getProducerCall().getTotal() > 0); + metric.getProducerMetrics().get("springmvc.codeFirst.saySomething").getProducerCall() + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue() > 0); } catch (Exception e) { TestMgr.check("true", "false"); } 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 e2ac65a..8a490a0 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 @@ -54,8 +54,11 @@ public class PerfMetricsFilePublisher { String opName = entry.getKey(); sb.append(String .format(" %-16d%-16d%-16.3f%s\n", - entry.getValue().getConsumerCall().getTotal(), - (long) entry.getValue().getConsumerCall().getTps(), + entry.getValue().getConsumerCall() + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), + entry.getValue().getConsumerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue() + .longValue(), entry.getValue().getConsumerLatency().getAverage(), opName)); } @@ -66,8 +69,11 @@ public class PerfMetricsFilePublisher { String opName = entry.getKey(); sb.append( String.format(" %-16d%-16d%-16.3f%-16.3f%-16.3f%s\n", - entry.getValue().getProducerCall().getTotal(), - (long) entry.getValue().getProducerCall().getTps(), + entry.getValue().getProducerCall() + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), + entry.getValue().getProducerCall() + .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue() + .longValue(), entry.getValue().getProducerLatency().getAverage(), entry.getValue().getLifeTimeInQueue().getAverage(), entry.getValue().getExecutionTime().getAverage(), diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/MetricsDimension.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricsDimension.java similarity index 97% rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/MetricsDimension.java rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricsDimension.java index bf9170f..d8f661f 100644 --- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/MetricsDimension.java +++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricsDimension.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package io.servicecomb.metrics.core; +package io.servicecomb.metrics.common; import io.servicecomb.foundation.common.exceptions.ServiceCombException; diff --git a/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java b/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java index f3e82d5..d313acf 100644 --- a/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java +++ b/metrics/metrics-common/src/main/java/org/apache/servicecomb/metrics/common/CallMetric.java @@ -31,11 +31,15 @@ public class CallMetric { private final List<DoubleMetricValue> tpsValues; - public List<LongMetricValue> getTotalValues() { + public String getPrefix() { + return prefix; + } + + public List<LongMetricValue> getTotalValue() { return totalValues; } - public LongMetricValue getTotalValues(String dimensionKey, String dimensionValue) { + public LongMetricValue getTotalValue(String dimensionKey, String dimensionValue) { for (LongMetricValue value : totalValues) { if (value.containDimension(dimensionKey, dimensionValue)) { return value; @@ -71,7 +75,7 @@ public class CallMetric { public CallMetric merge(CallMetric metric) { return new CallMetric(this.prefix, - LongMetricValue.merge(metric.getTotalValues(), this.getTotalValues()), + LongMetricValue.merge(metric.getTotalValue(), this.getTotalValue()), DoubleMetricValue.merge(metric.getTpsValues(), this.getTpsValues())); } diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationFinishedEventListener.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationFinishedEventListener.java index 9e2d687..a802a49 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationFinishedEventListener.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationFinishedEventListener.java @@ -20,7 +20,7 @@ package io.servicecomb.metrics.core.event; import io.servicecomb.core.metrics.InvocationFinishedEvent; import io.servicecomb.foundation.common.event.Event; import io.servicecomb.foundation.common.event.EventListener; -import io.servicecomb.metrics.core.MetricsDimension; +import io.servicecomb.metrics.common.MetricsDimension; import io.servicecomb.metrics.core.monitor.ConsumerInvocationMonitor; import io.servicecomb.metrics.core.monitor.ProducerInvocationMonitor; import io.servicecomb.metrics.core.monitor.RegistryMonitor; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationStartedEventListener.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationStartedEventListener.java index f7516bb..2ea0fee 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationStartedEventListener.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/event/InvocationStartedEventListener.java @@ -20,7 +20,7 @@ package io.servicecomb.metrics.core.event; import io.servicecomb.core.metrics.InvocationStartedEvent; import io.servicecomb.foundation.common.event.Event; import io.servicecomb.foundation.common.event.EventListener; -import io.servicecomb.metrics.core.MetricsDimension; +import io.servicecomb.metrics.common.MetricsDimension; import io.servicecomb.metrics.core.monitor.ConsumerInvocationMonitor; import io.servicecomb.metrics.core.monitor.ProducerInvocationMonitor; import io.servicecomb.metrics.core.monitor.RegistryMonitor; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java index bd2829f..986592d 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/CallMonitor.java @@ -29,7 +29,7 @@ import com.netflix.servo.monitor.StepCounter; import io.servicecomb.metrics.common.CallMetric; import io.servicecomb.metrics.common.DoubleMetricValue; import io.servicecomb.metrics.common.LongMetricValue; -import io.servicecomb.metrics.core.MetricsDimension; +import io.servicecomb.metrics.common.MetricsDimension; import io.servicecomb.metrics.core.utils.MonitorUtils; public class CallMonitor { diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java index 4f8f7df..076ecd1 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java @@ -20,7 +20,7 @@ package io.servicecomb.metrics.core.monitor; import io.servicecomb.metrics.common.ConsumerInvocationMetric; import io.servicecomb.metrics.common.MetricsConst; -import io.servicecomb.metrics.core.MetricsDimension; +import io.servicecomb.metrics.common.MetricsDimension; public class ConsumerInvocationMonitor extends InvocationMonitor { private final TimerMonitor consumerLatency; diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java index a5cb7c4..82d426f 100644 --- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java +++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java @@ -21,8 +21,8 @@ import com.netflix.servo.monitor.BasicCounter; import com.netflix.servo.monitor.MonitorConfig; import io.servicecomb.metrics.common.MetricsConst; +import io.servicecomb.metrics.common.MetricsDimension; import io.servicecomb.metrics.common.ProducerInvocationMetric; -import io.servicecomb.metrics.core.MetricsDimension; public class ProducerInvocationMonitor extends InvocationMonitor { private final BasicCounter waitInQueue; 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 fc797cb..c897bf1 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 @@ -37,6 +37,7 @@ import io.servicecomb.core.metrics.InvocationFinishedEvent; import io.servicecomb.core.metrics.InvocationStartProcessingEvent; import io.servicecomb.core.metrics.InvocationStartedEvent; import io.servicecomb.foundation.common.utils.EventUtils; +import io.servicecomb.metrics.common.MetricsDimension; import io.servicecomb.metrics.common.RegistryMetric; import io.servicecomb.metrics.core.event.DefaultEventListenerManager; import io.servicecomb.metrics.core.monitor.DefaultSystemMonitor; @@ -164,11 +165,11 @@ public class TestEventAndRunner { .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Assert.assertEquals(4, model.getInstanceMetric().getProducerMetric().getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); Assert.assertEquals(1, model.getInstanceMetric().getProducerMetric().getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); Assert.assertEquals(1, model.getInstanceMetric().getProducerMetric().getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getCount()); Assert.assertEquals(300, model.getInstanceMetric().getConsumerMetric().getConsumerLatency().getTotal(), @@ -188,11 +189,11 @@ public class TestEventAndRunner { .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); Assert.assertEquals(1, model.getInstanceMetric().getConsumerMetric().getConsumerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); Assert.assertEquals(0, model.getInstanceMetric().getConsumerMetric().getConsumerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); //check ProducerMetrics Assert.assertEquals(0, model.getProducerMetrics().get("fun1").getWaitInQueue()); @@ -222,11 +223,11 @@ public class TestEventAndRunner { .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Assert.assertEquals(2, model.getProducerMetrics().get("fun1").getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); Assert.assertEquals(1, model.getProducerMetrics().get("fun1").getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); Assert.assertEquals(1, model.getProducerMetrics().get("fun1").getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); //fun3 Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getWaitInQueue()); @@ -256,11 +257,11 @@ public class TestEventAndRunner { .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Assert.assertEquals(1, model.getProducerMetrics().get("fun3").getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); Assert.assertEquals(0, model.getProducerMetrics().get("fun3").getProducerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); //check ConsumerMetrics //no need @@ -278,11 +279,11 @@ public class TestEventAndRunner { .getTpsValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Assert.assertEquals(1, model.getConsumerMetrics().get("fun2").getConsumerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_ALL).getValue(), 0); Assert.assertEquals(1, model.getConsumerMetrics().get("fun2").getConsumerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_SUCCESS).getValue(), 0); Assert.assertEquals(0, model.getConsumerMetrics().get("fun2").getConsumerCall() - .getTotalValues(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); + .getTotalValue(MetricsDimension.DIMENSION_STATUS, MetricsDimension.DIMENSION_STATUS_FAILED).getValue(), 0); Map<String, Number> metrics = model.toMap(); Assert.assertEquals(120, 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 a17310b..bad097b 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 @@ -15,23 +15,25 @@ * limitations under the License. */ -package org.apache.servicecomb.metrics.prometheus; +package io.servicecomb.metrics.prometheus; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.stream.Collectors; -import org.apache.servicecomb.metrics.common.ConsumerInvocationMetric; -import org.apache.servicecomb.metrics.common.ProducerInvocationMetric; -import org.apache.servicecomb.metrics.common.RegistryMetric; -import org.apache.servicecomb.metrics.core.publish.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import io.prometheus.client.Collector; import io.prometheus.client.Collector.MetricFamilySamples.Sample; +import io.servicecomb.metrics.common.CallMetric; +import io.servicecomb.metrics.common.ConsumerInvocationMetric; +import io.servicecomb.metrics.common.DoubleMetricValue; +import io.servicecomb.metrics.common.LongMetricValue; +import io.servicecomb.metrics.common.ProducerInvocationMetric; +import io.servicecomb.metrics.common.RegistryMetric; +import io.servicecomb.metrics.core.publish.DataSource; @Component public class MetricsCollector extends Collector implements Collector.Describable { @@ -56,24 +58,70 @@ public class MetricsCollector extends Collector implements Collector.Describable private List<MetricFamilySamples> load() { RegistryMetric registryMetric = dataSource.getRegistryMetric(); List<MetricFamilySamples> familySamples = new ArrayList<>(); - familySamples.add(getFamilySamples("Instance Level", registryMetric.getInstanceMetric().toMap())); - for (Entry<String, ConsumerInvocationMetric> consumerMetric : registryMetric.getConsumerMetrics().entrySet()) { - familySamples - .add(getFamilySamples(consumerMetric.getKey() + " Consumer Side", consumerMetric.getValue().toMap())); + + List<Sample> samples = new ArrayList<>(); + samples.addAll(convertMetricValues(registryMetric.getInstanceMetric().getSystemMetric().toMap())); + samples.addAll(convertConsumerMetric(registryMetric.getInstanceMetric().getConsumerMetric())); + samples.addAll(convertCallMetric(registryMetric.getInstanceMetric().getConsumerMetric().getConsumerCall())); + samples.addAll(convertProducerMetric(registryMetric.getInstanceMetric().getProducerMetric())); + samples.addAll(convertCallMetric(registryMetric.getInstanceMetric().getProducerMetric().getProducerCall())); + familySamples.add(new MetricFamilySamples("Instance Level", Type.UNTYPED, "Instance Level Metrics", samples)); + + if (registryMetric.getConsumerMetrics().size() != 0) { + samples = new ArrayList<>(); + for (ConsumerInvocationMetric metric : registryMetric.getConsumerMetrics().values()) { + samples.addAll(convertConsumerMetric(metric)); + samples.addAll(convertCallMetric(metric.getConsumerCall())); + } + familySamples.add(new MetricFamilySamples("Consumer Side", Type.UNTYPED, "Consumer Side Metrics", samples)); } - for (Entry<String, ProducerInvocationMetric> producerMetric : registryMetric.getProducerMetrics().entrySet()) { - familySamples - .add(getFamilySamples(producerMetric.getKey() + " Producer Side", producerMetric.getValue().toMap())); + + if (registryMetric.getProducerMetrics().size() != 0) { + samples = new ArrayList<>(); + for (ProducerInvocationMetric metric : registryMetric.getProducerMetrics().values()) { + samples.addAll(convertProducerMetric(metric)); + samples.addAll(convertCallMetric(metric.getProducerCall())); + } + familySamples.add(new MetricFamilySamples("Producer Side", Type.UNTYPED, "Producer Side Metrics", samples)); } + return familySamples; } - private MetricFamilySamples getFamilySamples(String name, Map<String, Number> metrics) { - List<Sample> samples = metrics.entrySet() - .stream() - .map((entry) -> new Sample(entry.getKey().replace(".", "_"), - new ArrayList<>(), new ArrayList<>(), entry.getValue().doubleValue())) - .collect(Collectors.toList()); - return new MetricFamilySamples(name, Type.UNTYPED, name + " Metrics", samples); + private List<Sample> convertConsumerMetric(ConsumerInvocationMetric metric) { + return convertMetricValues(metric.getConsumerLatency().toMap()); + } + + private List<Sample> convertProducerMetric(ProducerInvocationMetric metric) { + List<Sample> samples = new ArrayList<>(); + samples.addAll(convertMetricValues(metric.getExecutionTime().toMap())); + samples.addAll(convertMetricValues(metric.getLifeTimeInQueue().toMap())); + samples.addAll(convertMetricValues(metric.getProducerLatency().toMap())); + samples.add(new Sample(metric.getPrefix() + ".waitInQueue.count", new ArrayList<>(), new ArrayList<>(), + (double) metric.getWaitInQueue())); + return samples; + } + + private List<Sample> convertMetricValues(Map<String, Number> metrics) { + return metrics.entrySet().stream().map((entry) -> + new Sample(entry.getKey().replace(".", "_"), + new ArrayList<>(), new ArrayList<>(), entry.getValue().doubleValue())).collect(Collectors.toList()); + } + + private List<Sample> convertCallMetric(CallMetric metric) { + List<Sample> samples = new ArrayList<>(); + String totalName = (metric.getPrefix() + ".total").replace(".", "_"); + for (LongMetricValue value : metric.getTotalValue()) { + samples.add(new Sample(totalName, + new ArrayList<>(value.getDimensions().keySet()), new ArrayList<>(value.getDimensions().values()), + (double) value.getValue())); + } + String tpsName = (metric.getPrefix() + ".tps").replace(".", "_"); + for (DoubleMetricValue value : metric.getTpsValues()) { + samples.add(new Sample(tpsName, + new ArrayList<>(value.getDimensions().keySet()), new ArrayList<>(value.getDimensions().values()), + value.getValue())); + } + return samples; } } diff --git a/samples/metrics-write-file-sample/metrics-write-file/src/test/java/org/apache/servicecomb/samples/mwf/TestWriteFile.java b/samples/metrics-write-file-sample/metrics-write-file/src/test/java/org/apache/servicecomb/samples/mwf/TestWriteFile.java index 6cf6ab2..d73d30d 100644 --- a/samples/metrics-write-file-sample/metrics-write-file/src/test/java/org/apache/servicecomb/samples/mwf/TestWriteFile.java +++ b/samples/metrics-write-file-sample/metrics-write-file/src/test/java/org/apache/servicecomb/samples/mwf/TestWriteFile.java @@ -15,32 +15,35 @@ * limitations under the License. */ -package org.apache.servicecomb.samples.mwf; +package io.servicecomb.samples.mwf; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import org.apache.servicecomb.metrics.common.CallMetric; -import org.apache.servicecomb.metrics.common.ConsumerInvocationMetric; -import org.apache.servicecomb.metrics.common.RegistryMetric; -import org.apache.servicecomb.metrics.common.SystemMetric; -import org.apache.servicecomb.metrics.common.TimerMetric; -import org.apache.servicecomb.metrics.core.publish.DataSource; -import org.apache.servicecomb.serviceregistry.Features; -import org.apache.servicecomb.serviceregistry.RegistryUtils; -import org.apache.servicecomb.serviceregistry.ServiceRegistry; -import org.apache.servicecomb.serviceregistry.api.registry.Microservice; -import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance; -import org.apache.servicecomb.serviceregistry.cache.InstanceCacheManager; -import org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient; -import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances; -import org.apache.servicecomb.serviceregistry.consumer.AppManager; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; +import io.servicecomb.metrics.common.CallMetric; +import io.servicecomb.metrics.common.ConsumerInvocationMetric; +import io.servicecomb.metrics.common.DoubleMetricValue; +import io.servicecomb.metrics.common.LongMetricValue; +import io.servicecomb.metrics.common.RegistryMetric; +import io.servicecomb.metrics.common.SystemMetric; +import io.servicecomb.metrics.common.TimerMetric; +import io.servicecomb.metrics.core.publish.DataSource; +import io.servicecomb.serviceregistry.Features; +import io.servicecomb.serviceregistry.RegistryUtils; +import io.servicecomb.serviceregistry.ServiceRegistry; +import io.servicecomb.serviceregistry.api.registry.Microservice; +import io.servicecomb.serviceregistry.api.registry.MicroserviceInstance; +import io.servicecomb.serviceregistry.cache.InstanceCacheManager; +import io.servicecomb.serviceregistry.client.ServiceRegistryClient; +import io.servicecomb.serviceregistry.client.http.MicroserviceInstances; +import io.servicecomb.serviceregistry.consumer.AppManager; import mockit.Expectations; public class TestWriteFile { @@ -134,20 +137,22 @@ public class TestWriteFile { StringBuilder builder = new StringBuilder(); - MetricsFileWriter writer = - (loggerName, filePrefix, content) -> builder.append(loggerName).append(filePrefix).append(content); + MetricsFileWriter writer = (loggerName, filePrefix, content) -> + builder.append(loggerName).append(filePrefix).append(content); SystemMetric systemMetric = new SystemMetric(50, 10, 1, 2, 3, 4, 5, 6, 7, 8); Map<String, ConsumerInvocationMetric> consumerInvocationMetricMap = new HashMap<>(); - consumerInvocationMetricMap.put("A", - new ConsumerInvocationMetric("A", "A", - new TimerMetric("A1", 1, 2, 3, 4), new CallMetric("A2", 100, 999.44444))); - - consumerInvocationMetricMap.put("B", - new ConsumerInvocationMetric("B", "B", - new TimerMetric("B1", 1, 2, 3, 4), new CallMetric("B2", 100, 888.66666))); + consumerInvocationMetricMap.put("A", new ConsumerInvocationMetric("A", "A", + new TimerMetric("A1", 1, 2, 3, 4), + new CallMetric("A2", Arrays.asList(new LongMetricValue("A2", 100L, new HashMap<>())), + Arrays.asList(new DoubleMetricValue("A2", 999.44444, new HashMap<>()))))); + + consumerInvocationMetricMap.put("B", new ConsumerInvocationMetric("B", "B", + new TimerMetric("B1", 1, 2, 3, 4), + new CallMetric("B2", Arrays.asList(new LongMetricValue("B2", 100L, new HashMap<>())), + Arrays.asList(new DoubleMetricValue("B2", 888.66666, new HashMap<>()))))); RegistryMetric metric = new RegistryMetric(systemMetric, consumerInvocationMetricMap, new HashMap<>()); -- To stop receiving notification emails like this one, please contact [email protected].
