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/01/24 01:21:41 UTC
[incubator-servicecomb-java-chassis] 04/10: SCB-150 minor refactor
and fix test case
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 <ya...@huawei.com>
AuthorDate: Fri Jan 12 14:43:23 2018 +0800
SCB-150 minor refactor and fix test case
Signed-off-by: zhengyangyong <ya...@huawei.com>
---
.../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
ningjiang@apache.org.