You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/10/10 04:05:10 UTC
[incubator-servicecomb-java-chassis] 04/05: [SCB-950] change the
metrics details output structure
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 29fff4e905f168b3c57ff90c890983826af8154a
Author: heyile <he...@huawei.com>
AuthorDate: Mon Oct 8 16:20:29 2018 +0800
[SCB-950] change the metrics details output structure
---
.../metrics/core/publish/DefaultLogPublisher.java | 222 +++++++++++++++++----
.../statistics/MeterDetailStatisticsModel.java | 204 -------------------
.../publish/statistics/MeterStatisticsManager.java | 36 ----
.../statistics/MeterStatisticsMeterType.java | 7 -
.../core/publish/TestDefaultLogPublisher.java | 8 +-
5 files changed, 184 insertions(+), 293 deletions(-)
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
index d942b56..e9575fc 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
@@ -16,7 +16,6 @@
*/
package org.apache.servicecomb.metrics.core.publish;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -32,9 +31,6 @@ import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPer
import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerfGroup;
import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerfGroups;
import org.apache.servicecomb.metrics.core.publish.model.invocation.PerfInfo;
-import org.apache.servicecomb.metrics.core.publish.statistics.MeterDetailStatisticsModel;
-import org.apache.servicecomb.metrics.core.publish.statistics.MeterStatisticsManager;
-import org.apache.servicecomb.metrics.core.publish.statistics.MeterStatisticsMeterType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,6 +47,7 @@ public class DefaultLogPublisher implements MetricsInitializer {
public static final String ENABLED = "servicecomb.metrics.publisher.defaultLog.enabled";
+ //sample
private static final String SIMPLE_HEADER = "%s:\n simple:\n"
+ " status tps latency operation\n";
@@ -58,6 +55,21 @@ public class DefaultLogPublisher implements MetricsInitializer {
private static final String SIMPLE_FORMAT = " %-13s %-42s %s\n";
+ //details
+ private static final String PRODUCER_DETAILS_FORMAT =
+ " prepare: %-22s queue : %-22s filtersReq : %-22s handlersReq: %s\n"
+ + " execute: %-22s handlersResp: %-22s filtersResp: %-22s sendResp : %s\n";
+
+ private static final String CONSUMER_DETAILS_FORMAT =
+ " prepare : %-22s handlersReq : %-22s clientFiltersReq: %-22s sendReq : %s\n"
+ + " getConnect : %-22s writeBuf : %-22s waitResp : %-22s wakeConsumer: %s\n"
+ + " clientFiltersResp: %-22s handlersResp: %s\n";
+
+ private static final String EDGE_DETAILS_FORMAT =
+ " prepare : %-22s queue : %-22s serverFiltersReq : %-22s handlersReq : %s\n"
+ + " clientFiltersReq : %-22s sendReq : %-22s getConnect : %-22s writeBuf : %s\n"
+ + " waitResp : %-22s wakeConsumer: %-22s clientFiltersResp: %-22s handlersResp: %s\n"
+ + " serverFiltersResp: %-22s sendResp : %s\n";
@Override
public void init(CompositeRegistry globalRegistry, EventBus eventBus, MetricsBootstrapConfig config) {
@@ -125,23 +137,20 @@ public class DefaultLogPublisher implements MetricsInitializer {
return;
}
sb.append(String.format(SIMPLE_HEADER, "edge"));
- Map<String, MeterDetailStatisticsModel> statisticsModelMap = new HashMap<>();
- StringBuilder sampleBuilder = new StringBuilder();
+ StringBuilder detailsBuilder = new StringBuilder();
//print sample
for (Map<String, OperationPerfGroup> statusMap : edgePerf.getGroups().values()) {
for (OperationPerfGroup perfGroup : statusMap.values()) {
//append sample
- sampleBuilder.append(printSamplePerf(perfGroup));
- //load details
- MeterStatisticsManager
- .loadMeterDetailStatisticsModelFromPerfGroup(perfGroup, MeterStatisticsMeterType.EDGE, statisticsModelMap);
+ sb.append(printSamplePerf(perfGroup));
+ //append details
+ detailsBuilder.append(printEdgeDetailsPerf(perfGroup));
}
}
- sb.append(sampleBuilder)
- .append(" details:\n");
- statisticsModelMap.values()
- .forEach(details -> sb.append(details.getFormatDetails()));
+
+ sb.append(" details:\n")
+ .append(detailsBuilder);
}
@@ -152,24 +161,19 @@ public class DefaultLogPublisher implements MetricsInitializer {
}
sb.append(String.format(SIMPLE_HEADER, "consumer"));
- Map<String, MeterDetailStatisticsModel> statisticsModelMap = new HashMap<>();
- StringBuilder sampleBuilder = new StringBuilder();
+ StringBuilder detailsBuilder = new StringBuilder();
//print sample
for (Map<String, OperationPerfGroup> statusMap : consumerPerf.getGroups().values()) {
for (OperationPerfGroup perfGroup : statusMap.values()) {
//append sample
- sampleBuilder.append(printSamplePerf(perfGroup));
- //load details
- MeterStatisticsManager
- .loadMeterDetailStatisticsModelFromPerfGroup(perfGroup, MeterStatisticsMeterType.CONSUMER,
- statisticsModelMap);
+ sb.append(printSamplePerf(perfGroup));
+ //append details
+ detailsBuilder.append(printConsumerDetailsPerf(perfGroup));
}
}
- sb.append(sampleBuilder)
- .append(" details:\n");
- statisticsModelMap.values()
- .forEach(details -> sb.append(details.getFormatDetails()));
+ sb.append(" details:\n")
+ .append(detailsBuilder);
}
@@ -180,24 +184,20 @@ public class DefaultLogPublisher implements MetricsInitializer {
return;
}
sb.append(String.format(SIMPLE_HEADER, "producer"));
- Map<String, MeterDetailStatisticsModel> statisticsModelMap = new HashMap<>();
-
- StringBuilder sampleBuilder = new StringBuilder();
+ // use detailsBuilder, we can traverse the map only once
+ StringBuilder detailsBuilder = new StringBuilder();
//print sample
for (Map<String, OperationPerfGroup> statusMap : producerPerf.getGroups().values()) {
for (OperationPerfGroup perfGroup : statusMap.values()) {
//append sample
- sampleBuilder.append(printSamplePerf(perfGroup));
- //load details
- MeterStatisticsManager
- .loadMeterDetailStatisticsModelFromPerfGroup(perfGroup, MeterStatisticsMeterType.PRODUCER,
- statisticsModelMap);
+ sb.append(printSamplePerf(perfGroup));
+ //append details
+ detailsBuilder.append(printProducerDetailsPerf(perfGroup));
}
}
//print details
- sb.append(sampleBuilder)
- .append(" details:\n");
- statisticsModelMap.values().forEach(details -> sb.append(details.getFormatDetails()));
+ sb.append(" details:\n")
+ .append(detailsBuilder);
}
@@ -210,23 +210,153 @@ public class DefaultLogPublisher implements MetricsInitializer {
// first line
String status = perfGroup.getTransport() + "." + perfGroup.getStatus();
sb.append(String.format(FIRST_LINE_SIMPLE_FORMAT, status, stageTotal.getTps(),
- MeterStatisticsManager.getDetailsFromPerf(stageTotal),
- operationPerf.getOperation()));
+ getDetailsFromPerf(stageTotal), operationPerf.getOperation()));
} else {
sb.append(String
- .format(SIMPLE_FORMAT, stageTotal.getTps(), MeterStatisticsManager.getDetailsFromPerf(stageTotal),
- operationPerf.getOperation()));
+ .format(SIMPLE_FORMAT, stageTotal.getTps(), getDetailsFromPerf(stageTotal), operationPerf.getOperation()));
}
}
//print summary
OperationPerf summaryOperation = perfGroup.getSummary();
PerfInfo stageSummaryTotal = summaryOperation.findStage(MeterInvocationConst.STAGE_TOTAL);
sb.append(
- String.format(SIMPLE_FORMAT, stageSummaryTotal.getTps(),
- MeterStatisticsManager.getDetailsFromPerf(stageSummaryTotal), "(summary)"));
+ String.format(SIMPLE_FORMAT, stageSummaryTotal.getTps(), getDetailsFromPerf(stageSummaryTotal), "(summary)"));
+ return sb;
+ }
+
+ private StringBuilder printProducerDetailsPerf(OperationPerfGroup perfGroup) {
+ StringBuilder sb = new StringBuilder();
+ //append rest.200:
+ sb.append(" ")
+ .append(perfGroup.getTransport())
+ .append(".")
+ .append(perfGroup.getStatus())
+ .append(":\n");
+ PerfInfo prepare, queue, filtersReq, handlersReq, execute, handlersResp, filtersResp, sendResp;
+ for (OperationPerf operationPerf : perfGroup.getOperationPerfs()) {
+
+ prepare = operationPerf.findStage(MeterInvocationConst.STAGE_PREPARE);
+ queue = operationPerf.findStage(MeterInvocationConst.STAGE_EXECUTOR_QUEUE);
+ filtersReq = operationPerf.findStage(MeterInvocationConst.STAGE_SERVER_FILTERS_REQUEST);
+ handlersReq = operationPerf.findStage(MeterInvocationConst.STAGE_HANDLERS_REQUEST);
+ execute = operationPerf.findStage(MeterInvocationConst.STAGE_EXECUTION);
+ handlersResp = operationPerf.findStage(MeterInvocationConst.STAGE_HANDLERS_RESPONSE);
+ filtersResp = operationPerf.findStage(MeterInvocationConst.STAGE_SERVER_FILTERS_RESPONSE);
+ sendResp = operationPerf.findStage(MeterInvocationConst.STAGE_PRODUCER_SEND_RESPONSE);
+
+ sb.append(" ")
+ .append(operationPerf.getOperation())
+ .append(":\n")
+ .append(String.format(PRODUCER_DETAILS_FORMAT,
+ getDetailsFromPerf(prepare),
+ getDetailsFromPerf(queue),
+ getDetailsFromPerf(filtersReq),
+ getDetailsFromPerf(handlersReq),
+ getDetailsFromPerf(execute),
+ getDetailsFromPerf(handlersResp),
+ getDetailsFromPerf(filtersResp),
+ getDetailsFromPerf(sendResp)
+ ));
+ }
+
+ return sb;
+ }
+
+ private StringBuilder printConsumerDetailsPerf(OperationPerfGroup perfGroup) {
+ StringBuilder sb = new StringBuilder();
+ //append rest.200:
+ sb.append(" ")
+ .append(perfGroup.getTransport())
+ .append(".")
+ .append(perfGroup.getStatus())
+ .append(":\n");
+
+ PerfInfo prepare, handlersReq, clientFiltersReq, sendReq, getConnect, writeBuf,
+ waitResp, wakeConsumer, clientFiltersResp, handlersResp;
+ for (OperationPerf operationPerf : perfGroup.getOperationPerfs()) {
+
+ prepare = operationPerf.findStage(MeterInvocationConst.STAGE_PREPARE);
+ handlersReq = operationPerf.findStage(MeterInvocationConst.STAGE_HANDLERS_REQUEST);
+ clientFiltersReq = operationPerf.findStage(MeterInvocationConst.STAGE_CLIENT_FILTERS_REQUEST);
+ sendReq = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_SEND_REQUEST);
+ getConnect = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_GET_CONNECTION);
+ writeBuf = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_WRITE_TO_BUF);
+ waitResp = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_WAIT_RESPONSE);
+ wakeConsumer = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_WAKE_CONSUMER);
+ clientFiltersResp = operationPerf.findStage(MeterInvocationConst.STAGE_CLIENT_FILTERS_RESPONSE);
+ handlersResp = operationPerf.findStage(MeterInvocationConst.STAGE_HANDLERS_RESPONSE);
+
+ sb.append(" ")
+ .append(operationPerf.getOperation())
+ .append(":\n")
+ .append(String.format(CONSUMER_DETAILS_FORMAT,
+ getDetailsFromPerf(prepare),
+ getDetailsFromPerf(handlersReq),
+ getDetailsFromPerf(clientFiltersReq),
+ getDetailsFromPerf(sendReq),
+ getDetailsFromPerf(getConnect),
+ getDetailsFromPerf(writeBuf),
+ getDetailsFromPerf(waitResp),
+ getDetailsFromPerf(wakeConsumer),
+ getDetailsFromPerf(clientFiltersResp),
+ getDetailsFromPerf(handlersResp)
+ ));
+ }
+
return sb;
}
+ private StringBuilder printEdgeDetailsPerf(OperationPerfGroup perfGroup) {
+ StringBuilder sb = new StringBuilder();
+ //append rest.200:
+ sb.append(" ")
+ .append(perfGroup.getTransport())
+ .append(".")
+ .append(perfGroup.getStatus())
+ .append(":\n");
+
+ PerfInfo prepare, queue, serverFiltersReq, handlersReq, clientFiltersReq, sendReq, getConnect, writeBuf,
+ waitResp, wakeConsumer, clientFiltersResp, handlersResp, serverFiltersResp, sendResp;
+ for (OperationPerf operationPerf : perfGroup.getOperationPerfs()) {
+
+ prepare = operationPerf.findStage(MeterInvocationConst.STAGE_PREPARE);
+ queue = operationPerf.findStage(MeterInvocationConst.STAGE_EXECUTOR_QUEUE);
+ serverFiltersReq = operationPerf.findStage(MeterInvocationConst.STAGE_SERVER_FILTERS_REQUEST);
+ handlersReq = operationPerf.findStage(MeterInvocationConst.STAGE_HANDLERS_REQUEST);
+ clientFiltersReq = operationPerf.findStage(MeterInvocationConst.STAGE_CLIENT_FILTERS_REQUEST);
+ sendReq = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_SEND_REQUEST);
+ getConnect = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_GET_CONNECTION);
+ writeBuf = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_WRITE_TO_BUF);
+ waitResp = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_WAIT_RESPONSE);
+ wakeConsumer = operationPerf.findStage(MeterInvocationConst.STAGE_CONSUMER_WAKE_CONSUMER);
+ clientFiltersResp = operationPerf.findStage(MeterInvocationConst.STAGE_CLIENT_FILTERS_RESPONSE);
+ handlersResp = operationPerf.findStage(MeterInvocationConst.STAGE_HANDLERS_RESPONSE);
+ serverFiltersResp = operationPerf.findStage(MeterInvocationConst.STAGE_SERVER_FILTERS_RESPONSE);
+ sendResp = operationPerf.findStage(MeterInvocationConst.STAGE_PRODUCER_SEND_RESPONSE);
+
+ sb.append(" ")
+ .append(operationPerf.getOperation())
+ .append(":\n")
+ .append(String.format(EDGE_DETAILS_FORMAT,
+ getDetailsFromPerf(prepare),
+ getDetailsFromPerf(queue),
+ getDetailsFromPerf(serverFiltersReq),
+ getDetailsFromPerf(handlersReq),
+ getDetailsFromPerf(clientFiltersReq),
+ getDetailsFromPerf(sendReq),
+ getDetailsFromPerf(getConnect),
+ getDetailsFromPerf(writeBuf),
+ getDetailsFromPerf(waitResp),
+ getDetailsFromPerf(wakeConsumer),
+ getDetailsFromPerf(clientFiltersResp),
+ getDetailsFromPerf(handlersResp),
+ getDetailsFromPerf(serverFiltersResp),
+ getDetailsFromPerf(sendResp)
+ ));
+ }
+
+ return sb;
+ }
protected void printVertxMetrics(StringBuilder sb) {
sb.append("vertx:\n")
@@ -237,4 +367,12 @@ public class DefaultLogPublisher implements MetricsInitializer {
entry.getValue().getEventLoopContextCreatedCount()));
}
}
+
+ private static String getDetailsFromPerf(PerfInfo perfInfo) {
+ String result = "";
+ if (perfInfo != null) {
+ result = String.format("%.3f/%.3f", perfInfo.calcMsLatency(), perfInfo.getMsMaxLatency());
+ }
+ return result;
+ }
}
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterDetailStatisticsModel.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterDetailStatisticsModel.java
deleted file mode 100644
index c5b3f8e..0000000
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterDetailStatisticsModel.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package org.apache.servicecomb.metrics.core.publish.statistics;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.servicecomb.metrics.core.meter.invocation.MeterInvocationConst;
-import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerf;
-import org.apache.servicecomb.metrics.core.publish.model.invocation.PerfInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MeterDetailStatisticsModel {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(MeterDetailStatisticsModel.class);
-
- private static final String PRODUCER_DETAILS_FORMAT = " %-7s: %-22s %-12s: %-22s %-11s: %-22s %-11s: %s\n"
- + " %-7s: %-22s %-12s: %-22s %-11s: %-22s %-11s: %s\n";
-
- private static final String CONSUMER_DETAILS_FORMAT = " %-17s: %-22s %-12s: %-22s %-16s: %-22s %-12s: %s\n"
- + " %-17s: %-22s %-12s: %-22s %-16s: %-22s %-12s: %s\n"
- + " %-17s: %-22s %-12s: %s\n";
-
- private static final String EDGE_DETAILS_FORMAT = " %-17s: %-22s %-12s: %-22s %-17s: %-22s %-12s: %s\n"
- + " %-17s: %-22s %-12s: %-22s %-17s: %-22s %-12s: %s\n"
- + " %-17s: %-22s %-12s: %-22s %-17s: %-22s %-12s: %s\n"
- + " %-17s: %-22s %-12s: %s\n";
-
- private MeterStatisticsMeterType type;
-
- private String operation;
-
- // status : rest.400
- private List<String> status = new ArrayList<>();
-
- //key : status . tag -> value
- private Map<String, Map<String, String>> detailsStatistics = new HashMap<>();
-
- //keep the order
- private static Map<String, String> producerKeys = new LinkedHashMap<>();
-
- private static Map<String, String> consumersKeys = new LinkedHashMap<>();
-
- private static Map<String, String> edgeKeys = new LinkedHashMap<>();
-
- static {
- //producers
- producerKeys.put("prepare", MeterInvocationConst.STAGE_PREPARE);
- producerKeys.put("queue", MeterInvocationConst.STAGE_EXECUTOR_QUEUE);
- producerKeys.put("filtersReq", MeterInvocationConst.STAGE_SERVER_FILTERS_REQUEST);
- producerKeys.put("handlersReq", MeterInvocationConst.STAGE_HANDLERS_REQUEST);
- producerKeys.put("execute", MeterInvocationConst.STAGE_EXECUTION);
- producerKeys.put("handlersResp", MeterInvocationConst.STAGE_HANDLERS_RESPONSE);
- producerKeys.put("filtersResp", MeterInvocationConst.STAGE_SERVER_FILTERS_RESPONSE);
- producerKeys.put("sendResp", MeterInvocationConst.STAGE_PRODUCER_SEND_RESPONSE);
- //consumers
- consumersKeys.put("prepare", MeterInvocationConst.STAGE_PREPARE);
- consumersKeys.put("handlersReq", MeterInvocationConst.STAGE_HANDLERS_REQUEST);
- consumersKeys.put("clientFiltersReq", MeterInvocationConst.STAGE_CLIENT_FILTERS_REQUEST);
- consumersKeys.put("sendReq", MeterInvocationConst.STAGE_CONSUMER_SEND_REQUEST);
- consumersKeys.put("getConnect", MeterInvocationConst.STAGE_CONSUMER_GET_CONNECTION);
- consumersKeys.put("writeBuf", MeterInvocationConst.STAGE_CONSUMER_WRITE_TO_BUF);
- consumersKeys.put("waitResp", MeterInvocationConst.STAGE_CONSUMER_WAIT_RESPONSE);
- consumersKeys.put("wakeConsumer", MeterInvocationConst.STAGE_CONSUMER_WAKE_CONSUMER);
- consumersKeys.put("clientFiltersResp", MeterInvocationConst.STAGE_CLIENT_FILTERS_RESPONSE);
- consumersKeys.put("handlersResp", MeterInvocationConst.STAGE_HANDLERS_RESPONSE);
- //edge
- edgeKeys.put("prepare", MeterInvocationConst.STAGE_PREPARE);
- edgeKeys.put("queue", MeterInvocationConst.STAGE_EXECUTOR_QUEUE);
- edgeKeys.put("serverFiltersReq", MeterInvocationConst.STAGE_SERVER_FILTERS_REQUEST);
- edgeKeys.put("handlersReq", MeterInvocationConst.STAGE_HANDLERS_REQUEST);
- edgeKeys.put("clientFiltersReq", MeterInvocationConst.STAGE_CLIENT_FILTERS_REQUEST);
- edgeKeys.put("sendReq", MeterInvocationConst.STAGE_CONSUMER_SEND_REQUEST);
- edgeKeys.put("getConnect", MeterInvocationConst.STAGE_CONSUMER_GET_CONNECTION);
- edgeKeys.put("writeBuf", MeterInvocationConst.STAGE_CONSUMER_WRITE_TO_BUF);
- edgeKeys.put("waitResp", MeterInvocationConst.STAGE_CONSUMER_WAIT_RESPONSE);
- edgeKeys.put("wakeConsumer", MeterInvocationConst.STAGE_CONSUMER_WAKE_CONSUMER);
- edgeKeys.put("clientFiltersResp", MeterInvocationConst.STAGE_CLIENT_FILTERS_RESPONSE);
- edgeKeys.put("handlersResp", MeterInvocationConst.STAGE_HANDLERS_RESPONSE);
- edgeKeys.put("serverFiltersResp", MeterInvocationConst.STAGE_SERVER_FILTERS_RESPONSE);
- edgeKeys.put("sendResp", MeterInvocationConst.STAGE_PRODUCER_SEND_RESPONSE);
- }
-
- public MeterDetailStatisticsModel(MeterStatisticsMeterType type, String operation) {
- this.type = type;
- this.operation = operation;
- }
-
- public String getOperation() {
- return operation;
- }
-
- public void setOperation(String operation) {
- this.operation = operation;
- }
-
- public List<String> getStatus() {
- return status;
- }
-
- public void setStatus(List<String> status) {
- this.status = status;
- }
-
- public Map<String, Map<String, String>> getDetailsStatistics() {
- return detailsStatistics;
- }
-
- public void setDetailsStatistics(
- Map<String, Map<String, String>> detailsStatistics) {
- this.detailsStatistics = detailsStatistics;
- }
-
- public void initOrAddPerfInfo(OperationPerf operationPerf, String status) {
-
- Map<String, String> meterDetails = new LinkedHashMap<>();
-
- switch (this.type) {
- case PRODUCER:
- //producer
- producerKeys.forEach((key, value) -> {
- PerfInfo stage = operationPerf.findStage(value);
- meterDetails.put(key, MeterStatisticsManager.getDetailsFromPerf(stage));
- });
- break;
- case CONSUMER:
- //consumer
- consumersKeys.forEach((key, value) -> {
- PerfInfo stage = operationPerf.findStage(value);
- meterDetails.put(key, MeterStatisticsManager.getDetailsFromPerf(stage));
- });
- break;
- case EDGE:
- //edge
- edgeKeys.forEach((key, value) -> {
- PerfInfo stage = operationPerf.findStage(value);
- meterDetails.put(key, MeterStatisticsManager.getDetailsFromPerf(stage));
- });
- break;
- default:
- break;
- }
-
- if (this.detailsStatistics.containsKey(status)) {
- LOGGER.warn("the status key is duplicate {}/{}/{}", this.type.name(), this.operation, this.status);
- }
-
- this.detailsStatistics.put(status, meterDetails);
- }
-
- public StringBuilder getFormatDetails() {
- StringBuilder stringBuilder = new StringBuilder();
- //operation
- stringBuilder.append(" ")
- .append(this.operation)
- .append(":\n");
- // status
- switch (this.type) {
- case PRODUCER:
- for (String key : detailsStatistics.keySet()) {
- stringBuilder.append(" ")
- .append(key)
- .append(":\n");
- Object[] params = initDetailsArray(detailsStatistics.get(key));
- stringBuilder.append(String.format(PRODUCER_DETAILS_FORMAT, params));
- }
- break;
- case CONSUMER:
- for (String key : detailsStatistics.keySet()) {
- stringBuilder.append(" ")
- .append(key)
- .append(":\n");
- Object[] params = initDetailsArray(detailsStatistics.get(key));
- stringBuilder.append(String.format(CONSUMER_DETAILS_FORMAT, params));
- }
- break;
- case EDGE:
- for (String key : detailsStatistics.keySet()) {
- stringBuilder.append(" ")
- .append(key)
- .append(":\n");
- Object[] params = initDetailsArray(detailsStatistics.get(key));
- stringBuilder.append(String.format(EDGE_DETAILS_FORMAT, params));
- }
- break;
- default:
- break;
- }
-
- return stringBuilder;
- }
-
- public String[] initDetailsArray(Map<String, String> detailsMap) {
- String[] array = new String[detailsMap.keySet().size() * 2];
- int index = 0;
- for (String key : detailsMap.keySet()) {
- array[index++] = key;
- array[index++] = detailsMap.get(key);
- }
- return array;
- }
-}
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterStatisticsManager.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterStatisticsManager.java
deleted file mode 100644
index ee3ee0a..0000000
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterStatisticsManager.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.apache.servicecomb.metrics.core.publish.statistics;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerf;
-import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerfGroup;
-import org.apache.servicecomb.metrics.core.publish.model.invocation.PerfInfo;
-
-public class MeterStatisticsManager {
-
- public static void loadMeterDetailStatisticsModelFromPerfGroup(
- OperationPerfGroup perfGroup,
- MeterStatisticsMeterType type, Map<String, MeterDetailStatisticsModel> statisticsOperationMap) {
- List<OperationPerf> operationPerfs = perfGroup.getOperationPerfs();
-
- String status = perfGroup.getTransport() + "." + perfGroup.getStatus();
-
- for (OperationPerf operationPerf : operationPerfs) {
- String operation = operationPerf.getOperation();
- MeterDetailStatisticsModel detailStatisticsModel = statisticsOperationMap
- .computeIfAbsent(operation, key -> new MeterDetailStatisticsModel(type, key));
- detailStatisticsModel.getStatus().add(status);
- detailStatisticsModel.initOrAddPerfInfo(operationPerf, status);
- }
- }
-
-
- public static String getDetailsFromPerf(PerfInfo perfInfo) {
- String result = "";
- if (perfInfo != null) {
- result = String.format("%.3f/%.3f", perfInfo.calcMsLatency(), perfInfo.getMsMaxLatency());
- }
- return result;
- }
-}
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterStatisticsMeterType.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterStatisticsMeterType.java
deleted file mode 100644
index edfbf61..0000000
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/statistics/MeterStatisticsMeterType.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.apache.servicecomb.metrics.core.publish.statistics;
-
-public enum MeterStatisticsMeterType {
- EDGE,
- CONSUMER,
- PRODUCER
-}
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
index 2d20327..2accd34 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
@@ -200,8 +200,8 @@ public class TestDefaultLogPublisher {
+ " rest.OK 10 10.000/0.000 op\n"
+ " 10 10.000/0.000 (summary)\n"
+ " details:\n"
- + " op:\n"
- + " rest.OK:\n"
+ + " rest.OK:\n"
+ + " op:\n"
+ " prepare : 10.000/0.000 handlersReq : 10.000/0.000 clientFiltersReq: 10.000/0.000 sendReq : 10.000/0.000\n"
+ " getConnect : 10.000/0.000 writeBuf : 10.000/0.000 waitResp : 10.000/0.000 wakeConsumer: 10.000/0.000\n"
+ " clientFiltersResp: 10.000/0.000 handlersResp: 10.000/0.000\n"
@@ -211,8 +211,8 @@ public class TestDefaultLogPublisher {
+ " rest.OK 10 10.000/0.000 op\n"
+ " 10 10.000/0.000 (summary)\n"
+ " details:\n"
- + " op:\n"
- + " rest.OK:\n"
+ + " rest.OK:\n"
+ + " op:\n"
+ " prepare: 10.000/0.000 queue : 10.000/0.000 filtersReq : 10.000/0.000 handlersReq: 10.000/0.000\n"
+ " execute: 10.000/0.000 handlersResp: 10.000/0.000 filtersResp: 10.000/0.000 sendResp : 10.000/0.000\n",
event.getMessage());