normalize metric fields and methods: - rename exception to exceptionQps; - remove ed postfix of all fields and methods about metrics;master
@@ -66,14 +66,14 @@ public class SentinelGrpcClientInterceptorTest { | |||
ClusterNode clusterNode = ClusterBuilderSlot.getClusterNode(resourceName, EntryType.OUT); | |||
assertNotNull(clusterNode); | |||
assertEquals((total - threshold) / 2, clusterNode.blockedRequest()); | |||
assertEquals((total - threshold) / 2, clusterNode.blockRequest()); | |||
assertEquals(total / 2, clusterNode.totalRequest()); | |||
long totalQps = clusterNode.totalQps(); | |||
long passQps = clusterNode.passQps(); | |||
long blockedQps = clusterNode.blockedQps(); | |||
long blockQps = clusterNode.blockQps(); | |||
assertEquals(total, totalQps); | |||
assertEquals(total - threshold, blockedQps); | |||
assertEquals(total - threshold, blockQps); | |||
assertEquals(threshold, passQps); | |||
server.stop(); | |||
@@ -68,14 +68,14 @@ public class SentinelGrpcServerInterceptorTest { | |||
ClusterNode clusterNode = ClusterBuilderSlot.getClusterNode(resourceName, EntryType.IN); | |||
assertNotNull(clusterNode); | |||
assertEquals((total - threshold) / 2, clusterNode.blockedRequest()); | |||
assertEquals((total - threshold) / 2, clusterNode.blockRequest()); | |||
assertEquals(total / 2, clusterNode.totalRequest()); | |||
long totalQps = clusterNode.totalQps(); | |||
long passQps = clusterNode.passQps(); | |||
long blockedQps = clusterNode.blockedQps(); | |||
long blockQps = clusterNode.blockQps(); | |||
assertEquals(total, totalQps); | |||
assertEquals(total - threshold, blockedQps); | |||
assertEquals(total - threshold, blockQps); | |||
assertEquals(threshold, passQps); | |||
server.stop(); | |||
@@ -139,15 +139,15 @@ public class Context { | |||
return getOriginNode() == null ? 0 : getOriginNode().totalQps(); | |||
} | |||
public double getOriginBlockedQps() { | |||
return getOriginNode() == null ? 0 : getOriginNode().blockedQps(); | |||
public double getOriginBlockQps() { | |||
return getOriginNode() == null ? 0 : getOriginNode().blockQps(); | |||
} | |||
public double getOriginPassedReqQps() { | |||
public double getOriginPassReqQps() { | |||
return getOriginNode() == null ? 0 : getOriginNode().successQps(); | |||
} | |||
public double getOriginPassedQps() { | |||
public double getOriginPassQps() { | |||
return getOriginNode() == null ? 0 : getOriginNode().passQps(); | |||
} | |||
@@ -155,8 +155,8 @@ public class Context { | |||
return getOriginNode() == null ? 0 : getOriginNode().totalRequest(); | |||
} | |||
public long getOriginBlockedRequest() { | |||
return getOriginNode() == null ? 0 : getOriginNode().blockedRequest(); | |||
public long getOriginBlockRequest() { | |||
return getOriginNode() == null ? 0 : getOriginNode().blockRequest(); | |||
} | |||
public double getOriginAvgRt() { | |||
@@ -88,9 +88,9 @@ public class DefaultNode extends StatisticNode { | |||
} | |||
@Override | |||
public void increaseBlockedQps() { | |||
super.increaseBlockedQps(); | |||
this.clusterNode.increaseBlockedQps(); | |||
public void increaseBlockQps() { | |||
super.increaseBlockQps(); | |||
this.clusterNode.increaseBlockQps(); | |||
} | |||
@Override | |||
@@ -134,13 +134,13 @@ public class DefaultNode extends StatisticNode { | |||
if (!(node instanceof EntranceNode)) { | |||
System.out.println( | |||
String.format("%s(thread:%s pq:%s bq:%s tq:%s rt:%s 1mp:%s 1mb:%s 1mt:%s)", node.id.getShowName(), | |||
node.curThreadNum(), node.passQps(), node.blockedQps(), node.totalQps(), node.avgRt(), | |||
node.totalRequest() - node.blockedRequest(), node.blockedRequest(), node.totalRequest())); | |||
node.curThreadNum(), node.passQps(), node.blockQps(), node.totalQps(), node.avgRt(), | |||
node.totalRequest() - node.blockRequest(), node.blockRequest(), node.totalRequest())); | |||
} else { | |||
System.out.println( | |||
String.format("Entry-%s(t:%s pq:%s bq:%s tq:%s rt:%s 1mp:%s 1mb:%s 1mt:%s)", node.id.getShowName(), | |||
node.curThreadNum(), node.passQps(), node.blockedQps(), node.totalQps(), node.avgRt(), | |||
node.totalRequest() - node.blockedRequest(), node.blockedRequest(), node.totalRequest())); | |||
node.curThreadNum(), node.passQps(), node.blockQps(), node.totalQps(), node.avgRt(), | |||
node.totalRequest() - node.blockRequest(), node.blockRequest(), node.totalRequest())); | |||
} | |||
for (Node n : node.getChildList()) { | |||
DefaultNode dn = (DefaultNode)n; | |||
@@ -54,19 +54,19 @@ public class EntranceNode extends DefaultNode { | |||
} | |||
@Override | |||
public long blockedQps() { | |||
public long blockQps() { | |||
int blockQps = 0; | |||
for (Node node : getChildList()) { | |||
blockQps += node.blockedQps(); | |||
blockQps += node.blockQps(); | |||
} | |||
return blockQps; | |||
} | |||
@Override | |||
public long blockedRequest() { | |||
public long blockRequest() { | |||
long r = 0; | |||
for (Node node : getChildList()) { | |||
r += node.blockedRequest(); | |||
r += node.blockRequest(); | |||
} | |||
return r; | |||
} | |||
@@ -29,7 +29,7 @@ import com.alibaba.csp.sentinel.node.metric.MetricNode; | |||
public interface Node { | |||
/** | |||
* Get incoming request per minute. {@code pass + blocked} | |||
* Get incoming request per minute. {@code pass + block} | |||
*/ | |||
long totalRequest(); | |||
@@ -41,9 +41,9 @@ public interface Node { | |||
long totalSuccess(); | |||
/** | |||
* Get blocked request count per minute. | |||
* Get block request count per minute. | |||
*/ | |||
long blockedRequest(); | |||
long blockRequest(); | |||
/** | |||
* Get exception count per minute. | |||
@@ -56,12 +56,12 @@ public interface Node { | |||
long passQps(); | |||
/** | |||
* Get blocked request per second. | |||
* Get block request per second. | |||
*/ | |||
long blockedQps(); | |||
long blockQps(); | |||
/** | |||
* Get {@link #passQps()} + {@link #blockedQps()} request per second. | |||
* Get {@link #passQps()} + {@link #blockQps()} request per second. | |||
*/ | |||
long totalQps(); | |||
@@ -90,7 +90,7 @@ public interface Node { | |||
int curThreadNum(); | |||
/** | |||
* Get last second blocked QPS. | |||
* Get last second block QPS. | |||
*/ | |||
long previousBlockQps(); | |||
@@ -110,7 +110,7 @@ public interface Node { | |||
*/ | |||
void rt(long rt); | |||
void increaseBlockedQps(); | |||
void increaseBlockQps(); | |||
void increaseExceptionQps(); | |||
@@ -53,10 +53,10 @@ public class StatisticNode implements Node { | |||
long newLastFetchTime = lastFetchTime; | |||
for (MetricNode node : nodesOfEverySecond) { | |||
if (node.getTimestamp() > lastFetchTime && node.getTimestamp() < currentTime) { | |||
if (node.getPassedQps() != 0 | |||
|| node.getBlockedQps() != 0 | |||
if (node.getPassQps() != 0 | |||
|| node.getBlockQps() != 0 | |||
|| node.getSuccessQps() != 0 | |||
|| node.getException() != 0 | |||
|| node.getExceptionQps() != 0 | |||
|| node.getRt() != 0) { | |||
metrics.put(node.getTimestamp(), node); | |||
newLastFetchTime = Math.max(newLastFetchTime, node.getTimestamp()); | |||
@@ -80,12 +80,12 @@ public class StatisticNode implements Node { | |||
} | |||
@Override | |||
public long blockedRequest() { | |||
public long blockRequest() { | |||
return rollingCounterInMinute.block() / 2; | |||
} | |||
@Override | |||
public long blockedQps() { | |||
public long blockQps() { | |||
return rollingCounterInSecond.block() / IntervalProperty.INTERVAL; | |||
} | |||
@@ -101,7 +101,7 @@ public class StatisticNode implements Node { | |||
@Override | |||
public long totalQps() { | |||
return passQps() + blockedQps(); | |||
return passQps() + blockQps(); | |||
} | |||
@Override | |||
@@ -170,7 +170,7 @@ public class StatisticNode implements Node { | |||
} | |||
@Override | |||
public void increaseBlockedQps() { | |||
public void increaseBlockQps() { | |||
rollingCounterInSecond.addBlock(); | |||
rollingCounterInMinute.addBlock(); | |||
} | |||
@@ -22,10 +22,10 @@ import java.util.Date; | |||
public class MetricNode { | |||
private long timestamp; | |||
private long passedQps; | |||
private long blockedQps; | |||
private long passQps; | |||
private long blockQps; | |||
private long successQps; | |||
private long exception; | |||
private long exceptionQps; | |||
private long rt; | |||
private String resource; | |||
@@ -46,28 +46,28 @@ public class MetricNode { | |||
this.successQps = successQps; | |||
} | |||
public long getPassedQps() { | |||
return passedQps; | |||
public long getPassQps() { | |||
return passQps; | |||
} | |||
public void setPassedQps(long passedQps) { | |||
this.passedQps = passedQps; | |||
public void setPassQps(long passQps) { | |||
this.passQps = passQps; | |||
} | |||
public long getException() { | |||
return exception; | |||
public long getExceptionQps() { | |||
return exceptionQps; | |||
} | |||
public void setException(long exception) { | |||
this.exception = exception; | |||
public void setExceptionQps(long exceptionQps) { | |||
this.exceptionQps = exceptionQps; | |||
} | |||
public long getBlockedQps() { | |||
return blockedQps; | |||
public long getBlockQps() { | |||
return blockQps; | |||
} | |||
public void setBlockedQps(long blockedQps) { | |||
this.blockedQps = blockedQps; | |||
public void setBlockQps(long blockQps) { | |||
this.blockQps = blockQps; | |||
} | |||
public long getRt() { | |||
@@ -90,10 +90,10 @@ public class MetricNode { | |||
public String toString() { | |||
return "MetricNode{" + | |||
"timestamp=" + timestamp + | |||
", passedQps=" + passedQps + | |||
", blockedQs=" + blockedQps + | |||
", passQps=" + passQps + | |||
", blockQps=" + blockQps + | |||
", successQps=" + successQps + | |||
", exception=" + exception + | |||
", exceptionQps=" + exceptionQps + | |||
", rt=" + rt + | |||
", resource='" + resource + '\'' + | |||
'}'; | |||
@@ -103,7 +103,7 @@ public class MetricNode { | |||
* To formatting string. All "|" in {@link #resource} will be replaced with "_", format is: | |||
* <br/> | |||
* <code> | |||
* timestamp|resource|passedQps|blockedQps|successQps|exception|rt | |||
* timestamp|resource|passQps|blockQps|successQps|exceptionQps|rt | |||
* </code> | |||
* | |||
* @return string format of this. | |||
@@ -113,10 +113,10 @@ public class MetricNode { | |||
sb.append(timestamp).append("|"); | |||
String legalName = resource.replaceAll("\\|", "_"); | |||
sb.append(legalName).append("|"); | |||
sb.append(passedQps).append("|"); | |||
sb.append(blockedQps).append("|"); | |||
sb.append(passQps).append("|"); | |||
sb.append(blockQps).append("|"); | |||
sb.append(successQps).append("|"); | |||
sb.append(exception).append("|"); | |||
sb.append(exceptionQps).append("|"); | |||
sb.append(rt); | |||
return sb.toString(); | |||
} | |||
@@ -132,10 +132,10 @@ public class MetricNode { | |||
String[] strs = line.split("\\|"); | |||
node.setTimestamp(Long.parseLong(strs[0])); | |||
node.setResource(strs[1]); | |||
node.setPassedQps(Long.parseLong(strs[2])); | |||
node.setBlockedQps(Long.parseLong(strs[3])); | |||
node.setPassQps(Long.parseLong(strs[2])); | |||
node.setBlockQps(Long.parseLong(strs[3])); | |||
node.setSuccessQps(Long.parseLong(strs[4])); | |||
node.setException(Long.parseLong(strs[5])); | |||
node.setExceptionQps(Long.parseLong(strs[5])); | |||
node.setRt(Long.parseLong(strs[6])); | |||
return node; | |||
} | |||
@@ -144,7 +144,7 @@ public class MetricNode { | |||
* To formatting string. All "|" in {@link MetricNode#resource} will be replaced with "_", format is: | |||
* <br/> | |||
* <code> | |||
* timestamp|yyyy-MM-dd HH:mm:ss|resource|passedQps|blockedQps|successQps|exception|rt\n | |||
* timestamp|yyyy-MM-dd HH:mm:ss|resource|passQps|blockQps|successQps|exceptionQps|rt\n | |||
* </code> | |||
* | |||
* @return string format of this. | |||
@@ -157,10 +157,10 @@ public class MetricNode { | |||
sb.append(df.format(new Date(getTimestamp()))).append("|"); | |||
String legalName = getResource().replaceAll("\\|", "_"); | |||
sb.append(legalName).append("|"); | |||
sb.append(getPassedQps()).append("|"); | |||
sb.append(getBlockedQps()).append("|"); | |||
sb.append(getPassQps()).append("|"); | |||
sb.append(getBlockQps()).append("|"); | |||
sb.append(getSuccessQps()).append("|"); | |||
sb.append(getException()).append("|"); | |||
sb.append(getExceptionQps()).append("|"); | |||
sb.append(getRt()); | |||
sb.append('\n'); | |||
return sb.toString(); | |||
@@ -178,10 +178,10 @@ public class MetricNode { | |||
MetricNode node = new MetricNode(); | |||
node.setTimestamp(time); | |||
node.setResource(strs[2]); | |||
node.setPassedQps(Long.parseLong(strs[3])); | |||
node.setBlockedQps(Long.parseLong(strs[4])); | |||
node.setPassQps(Long.parseLong(strs[3])); | |||
node.setBlockQps(Long.parseLong(strs[4])); | |||
node.setSuccessQps(Long.parseLong(strs[5])); | |||
node.setException(Long.parseLong(strs[6])); | |||
node.setExceptionQps(Long.parseLong(strs[6])); | |||
node.setRt(Long.parseLong(strs[7])); | |||
return node; | |||
} | |||
@@ -72,13 +72,13 @@ public class StatisticSlot extends AbstractLinkedProcessorSlot<DefaultNode> { | |||
context.getCurEntry().setError(e); | |||
// Add block count. | |||
node.increaseBlockedQps(); | |||
node.increaseBlockQps(); | |||
if (context.getCurEntry().getOriginNode() != null) { | |||
context.getCurEntry().getOriginNode().increaseBlockedQps(); | |||
context.getCurEntry().getOriginNode().increaseBlockQps(); | |||
} | |||
if (resourceWrapper.getType() == EntryType.IN) { | |||
Constants.ENTRY_NODE.increaseBlockedQps(); | |||
Constants.ENTRY_NODE.increaseBlockQps(); | |||
} | |||
for (ProcessorSlotEntryCallback<DefaultNode> handler : StatisticSlotCallbackRegistry.getEntryCallbacks()) { | |||
@@ -144,9 +144,9 @@ public class ArrayMetric implements Metric { | |||
continue; | |||
} | |||
MetricNode node = new MetricNode(); | |||
node.setBlockedQps(window.value().block()); | |||
node.setException(window.value().exception()); | |||
node.setPassedQps(window.value().pass()); | |||
node.setBlockQps(window.value().block()); | |||
node.setExceptionQps(window.value().exception()); | |||
node.setPassQps(window.value().pass()); | |||
long passQps = window.value().success(); | |||
node.setSuccessQps(passQps); | |||
if (passQps != 0) { | |||
@@ -30,16 +30,13 @@ public class MetricEntity { | |||
*/ | |||
private Date timestamp; | |||
private String resource; | |||
private Long passedQps; | |||
private Long passQps; | |||
private Long successQps; | |||
private Long blockedQps; | |||
/** | |||
* 发生异常的次数 | |||
*/ | |||
private Long exception; | |||
private Long blockQps; | |||
private Long exceptionQps; | |||
/** | |||
* 所有successQps的Rt的和。 | |||
* summary rt of all success exit qps. | |||
*/ | |||
private double rt; | |||
@@ -58,26 +55,26 @@ public class MetricEntity { | |||
entity.setApp(oldEntity.getApp()); | |||
entity.setTimestamp(oldEntity.getTimestamp()); | |||
entity.setResource(oldEntity.getResource()); | |||
entity.setPassedQps(oldEntity.getPassedQps()); | |||
entity.setBlockedQps(oldEntity.getBlockedQps()); | |||
entity.setPassQps(oldEntity.getPassQps()); | |||
entity.setBlockQps(oldEntity.getBlockQps()); | |||
entity.setSuccessQps(oldEntity.getSuccessQps()); | |||
entity.setException(oldEntity.getException()); | |||
entity.setExceptionQps(oldEntity.getExceptionQps()); | |||
entity.setRt(oldEntity.getRt()); | |||
entity.setCount(oldEntity.getCount()); | |||
entity.setResource(oldEntity.getResource()); | |||
return entity; | |||
} | |||
public synchronized void addPassedQps(Long passedQps) { | |||
this.passedQps += passedQps; | |||
public synchronized void addPassQps(Long passQps) { | |||
this.passQps += passQps; | |||
} | |||
public synchronized void addBlockedQps(Long blockedQps) { | |||
this.blockedQps += blockedQps; | |||
public synchronized void addBlockQps(Long blockQps) { | |||
this.blockQps += blockQps; | |||
} | |||
public synchronized void addException(Long exception) { | |||
this.exception += exception; | |||
public synchronized void addExceptionQps(Long exceptionQps) { | |||
this.exceptionQps += exceptionQps; | |||
} | |||
public synchronized void addCount(int count) { | |||
@@ -149,28 +146,28 @@ public class MetricEntity { | |||
this.resourceCode = resource.hashCode(); | |||
} | |||
public Long getPassedQps() { | |||
return passedQps; | |||
public Long getPassQps() { | |||
return passQps; | |||
} | |||
public void setPassedQps(Long passedQps) { | |||
this.passedQps = passedQps; | |||
public void setPassQps(Long passQps) { | |||
this.passQps = passQps; | |||
} | |||
public Long getBlockedQps() { | |||
return blockedQps; | |||
public Long getBlockQps() { | |||
return blockQps; | |||
} | |||
public void setBlockedQps(Long blockedQps) { | |||
this.blockedQps = blockedQps; | |||
public void setBlockQps(Long blockQps) { | |||
this.blockQps = blockQps; | |||
} | |||
public Long getException() { | |||
return exception; | |||
public Long getExceptionQps() { | |||
return exceptionQps; | |||
} | |||
public void setException(Long exception) { | |||
this.exception = exception; | |||
public void setExceptionQps(Long exceptionQps) { | |||
this.exceptionQps = exceptionQps; | |||
} | |||
public double getRt() { | |||
@@ -210,10 +207,10 @@ public class MetricEntity { | |||
", app='" + app + '\'' + | |||
", timestamp=" + timestamp + | |||
", resource='" + resource + '\'' + | |||
", passedQps=" + passedQps + | |||
", blockedQps=" + blockedQps + | |||
", passQps=" + passQps + | |||
", blockQps=" + blockQps + | |||
", successQps=" + successQps + | |||
", exception=" + exception + | |||
", exceptionQps=" + exceptionQps + | |||
", rt=" + rt + | |||
", count=" + count + | |||
", resourceCode=" + resourceCode + | |||
@@ -32,13 +32,13 @@ public class ResourceTreeNode { | |||
private Integer threadNum; | |||
private Long passQps; | |||
private Long blockedQps; | |||
private Long blockQps; | |||
private Long totalQps; | |||
private Long averageRt; | |||
private Long successQps; | |||
private Long exceptionQps; | |||
private Long oneMinutePassed; | |||
private Long oneMinuteBlocked; | |||
private Long oneMinutePass; | |||
private Long oneMinuteBlock; | |||
private Long oneMinuteException; | |||
private Long oneMinuteTotal; | |||
@@ -74,13 +74,13 @@ public class ResourceTreeNode { | |||
node.resource = vo.getResource(); | |||
node.threadNum = vo.getThreadNum(); | |||
node.passQps = vo.getPassQps(); | |||
node.blockedQps = vo.getBlockedQps(); | |||
node.blockQps = vo.getBlockQps(); | |||
node.totalQps = vo.getTotalQps(); | |||
node.averageRt = vo.getAverageRt(); | |||
node.successQps = vo.getSuccessQps(); | |||
node.exceptionQps = vo.getExceptionQps(); | |||
node.oneMinutePassed = vo.getOneMinutePassed(); | |||
node.oneMinuteBlocked = vo.getOneMinuteBlocked(); | |||
node.oneMinutePass = vo.getOneMinutePass(); | |||
node.oneMinuteBlock = vo.getOneMinuteBlock(); | |||
node.oneMinuteException = vo.getOneMinuteException(); | |||
node.oneMinuteTotal = vo.getOneMinuteTotal(); | |||
return node; | |||
@@ -151,12 +151,12 @@ public class ResourceTreeNode { | |||
this.passQps = passQps; | |||
} | |||
public Long getBlockedQps() { | |||
return blockedQps; | |||
public Long getBlockQps() { | |||
return blockQps; | |||
} | |||
public void setBlockedQps(Long blockedQps) { | |||
this.blockedQps = blockedQps; | |||
public void setBlockQps(Long blockQps) { | |||
this.blockQps = blockQps; | |||
} | |||
public Long getTotalQps() { | |||
@@ -191,20 +191,20 @@ public class ResourceTreeNode { | |||
this.exceptionQps = exceptionQps; | |||
} | |||
public Long getOneMinutePassed() { | |||
return oneMinutePassed; | |||
public Long getOneMinutePass() { | |||
return oneMinutePass; | |||
} | |||
public void setOneMinutePassed(Long oneMinutePassed) { | |||
this.oneMinutePassed = oneMinutePassed; | |||
public void setOneMinutePass(Long oneMinutePass) { | |||
this.oneMinutePass = oneMinutePass; | |||
} | |||
public Long getOneMinuteBlocked() { | |||
return oneMinuteBlocked; | |||
public Long getOneMinuteBlock() { | |||
return oneMinuteBlock; | |||
} | |||
public void setOneMinuteBlocked(Long oneMinuteBlocked) { | |||
this.oneMinuteBlocked = oneMinuteBlocked; | |||
public void setOneMinuteBlock(Long oneMinuteBlock) { | |||
this.oneMinuteBlock = oneMinuteBlock; | |||
} | |||
public Long getOneMinuteException() { | |||
@@ -304,19 +304,19 @@ public class MetricFetcher { | |||
String key = buildMetricKey(machine.getApp(), node.getResource(), node.getTimestamp()); | |||
MetricEntity entity = map.get(key); | |||
if (entity != null) { | |||
entity.addPassedQps(node.getPassedQps()); | |||
entity.addBlockedQps(node.getBlockedQps()); | |||
entity.addPassQps(node.getPassQps()); | |||
entity.addBlockQps(node.getBlockQps()); | |||
entity.addRtAndSuccessQps(node.getRt(), node.getSuccessQps()); | |||
entity.addException(node.getException()); | |||
entity.addExceptionQps(node.getExceptionQps()); | |||
entity.addCount(1); | |||
} else { | |||
entity = new MetricEntity(); | |||
entity.setApp(machine.getApp()); | |||
entity.setTimestamp(new Date(node.getTimestamp())); | |||
entity.setPassedQps(node.getPassedQps()); | |||
entity.setBlockedQps(node.getBlockedQps()); | |||
entity.setPassQps(node.getPassQps()); | |||
entity.setBlockQps(node.getBlockQps()); | |||
entity.setRtAndSuccessQps(node.getRt(), node.getSuccessQps()); | |||
entity.setException(node.getException()); | |||
entity.setExceptionQps(node.getExceptionQps()); | |||
entity.setCount(1); | |||
entity.setResource(node.getResource()); | |||
map.put(key, entity); | |||
@@ -113,10 +113,10 @@ public class InMemoryMetricsRepository implements MetricsRepository<MetricEntity | |||
MetricEntity newEntity = metrics.getValue(); | |||
if (resourceCount.containsKey(resourceMetrics.getKey())) { | |||
MetricEntity oldEntity = resourceCount.get(resourceMetrics.getKey()); | |||
oldEntity.addPassedQps(newEntity.getPassedQps()); | |||
oldEntity.addPassQps(newEntity.getPassQps()); | |||
oldEntity.addRtAndSuccessQps(newEntity.getRt(), newEntity.getSuccessQps()); | |||
oldEntity.addBlockedQps(newEntity.getBlockedQps()); | |||
oldEntity.addException(newEntity.getException()); | |||
oldEntity.addBlockQps(newEntity.getBlockQps()); | |||
oldEntity.addExceptionQps(newEntity.getExceptionQps()); | |||
oldEntity.addCount(1); | |||
} else { | |||
resourceCount.put(resourceMetrics.getKey(), MetricEntity.copyOf(newEntity)); | |||
@@ -129,11 +129,11 @@ public class InMemoryMetricsRepository implements MetricsRepository<MetricEntity | |||
.sorted((o1, o2) -> { | |||
MetricEntity e1 = o1.getValue(); | |||
MetricEntity e2 = o2.getValue(); | |||
int t = e2.getBlockedQps().compareTo(e1.getBlockedQps()); | |||
int t = e2.getBlockQps().compareTo(e1.getBlockQps()); | |||
if (t != 0) { | |||
return t; | |||
} | |||
return e2.getPassedQps().compareTo(e1.getPassedQps()); | |||
return e2.getPassQps().compareTo(e1.getPassQps()); | |||
}) | |||
.map(Entry::getKey) | |||
.collect(Collectors.toList()); | |||
@@ -29,11 +29,11 @@ public class MetricVo implements Comparable<MetricVo> { | |||
private String app; | |||
private Long timestamp; | |||
private Long gmtCreate = System.currentTimeMillis(); | |||
private String identity; | |||
private Long passedQps; | |||
private Long blockedQps; | |||
private String resource; | |||
private Long passQps; | |||
private Long blockQps; | |||
private Long successQps; | |||
private Long exception; | |||
private Long exceptionQps; | |||
/** | |||
* average rt | |||
*/ | |||
@@ -78,11 +78,11 @@ public class MetricVo implements Comparable<MetricVo> { | |||
vo.app = entity.getApp(); | |||
vo.timestamp = entity.getTimestamp().getTime(); | |||
vo.gmtCreate = entity.getGmtCreate().getTime(); | |||
vo.identity = entity.getResource(); | |||
vo.passedQps = entity.getPassedQps(); | |||
vo.blockedQps = entity.getBlockedQps(); | |||
vo.resource = entity.getResource(); | |||
vo.passQps = entity.getPassQps(); | |||
vo.blockQps = entity.getBlockQps(); | |||
vo.successQps = entity.getSuccessQps(); | |||
vo.exception = entity.getException(); | |||
vo.exceptionQps = entity.getExceptionQps(); | |||
if (entity.getSuccessQps() != 0) { | |||
vo.rt = entity.getRt() / entity.getSuccessQps(); | |||
} else { | |||
@@ -96,18 +96,18 @@ public class MetricVo implements Comparable<MetricVo> { | |||
String[] strs = line.split("\\|"); | |||
long timestamp = Long.parseLong(strs[0]); | |||
String identity = strs[1]; | |||
long passedQps = Long.parseLong(strs[2]); | |||
long blockedQps = Long.parseLong(strs[3]); | |||
long passQps = Long.parseLong(strs[2]); | |||
long blockQps = Long.parseLong(strs[3]); | |||
long exception = Long.parseLong(strs[4]); | |||
double rt = Double.parseDouble(strs[5]); | |||
long successQps = Long.parseLong(strs[6]); | |||
MetricVo vo = new MetricVo(); | |||
vo.timestamp = timestamp; | |||
vo.identity = identity; | |||
vo.passedQps = passedQps; | |||
vo.blockedQps = blockedQps; | |||
vo.resource = identity; | |||
vo.passQps = passQps; | |||
vo.blockQps = blockQps; | |||
vo.successQps = successQps; | |||
vo.exception = exception; | |||
vo.exceptionQps = exception; | |||
vo.rt = rt; | |||
vo.count = 1; | |||
return vo; | |||
@@ -145,28 +145,28 @@ public class MetricVo implements Comparable<MetricVo> { | |||
this.gmtCreate = gmtCreate; | |||
} | |||
public String getIdentity() { | |||
return identity; | |||
public String getResource() { | |||
return resource; | |||
} | |||
public void setIdentity(String identity) { | |||
this.identity = identity; | |||
public void setResource(String resource) { | |||
this.resource = resource; | |||
} | |||
public Long getPassedQps() { | |||
return passedQps; | |||
public Long getPassQps() { | |||
return passQps; | |||
} | |||
public void setPassedQps(Long passedQps) { | |||
this.passedQps = passedQps; | |||
public void setPassQps(Long passQps) { | |||
this.passQps = passQps; | |||
} | |||
public Long getBlockedQps() { | |||
return blockedQps; | |||
public Long getBlockQps() { | |||
return blockQps; | |||
} | |||
public void setBlockedQps(Long blockedQps) { | |||
this.blockedQps = blockedQps; | |||
public void setBlockQps(Long blockQps) { | |||
this.blockQps = blockQps; | |||
} | |||
public Long getSuccessQps() { | |||
@@ -177,12 +177,12 @@ public class MetricVo implements Comparable<MetricVo> { | |||
this.successQps = successQps; | |||
} | |||
public Long getException() { | |||
return exception; | |||
public Long getExceptionQps() { | |||
return exceptionQps; | |||
} | |||
public void setException(Long exception) { | |||
this.exception = exception; | |||
public void setExceptionQps(Long exceptionQps) { | |||
this.exceptionQps = exceptionQps; | |||
} | |||
public Double getRt() { | |||
@@ -32,13 +32,13 @@ public class ResourceVo { | |||
private Integer threadNum; | |||
private Long passQps; | |||
private Long blockedQps; | |||
private Long blockQps; | |||
private Long totalQps; | |||
private Long averageRt; | |||
private Long passRequestQps; | |||
private Long exceptionQps; | |||
private Long oneMinutePassed; | |||
private Long oneMinuteBlocked; | |||
private Long oneMinutePass; | |||
private Long oneMinuteBlock; | |||
private Long oneMinuteException; | |||
private Long oneMinuteTotal; | |||
@@ -64,12 +64,12 @@ public class ResourceVo { | |||
vo.resource = nodeVo.getResource(); | |||
vo.threadNum = nodeVo.getThreadNum(); | |||
vo.passQps = nodeVo.getPassQps(); | |||
vo.blockedQps = nodeVo.getBlockedQps(); | |||
vo.blockQps = nodeVo.getBlockQps(); | |||
vo.totalQps = nodeVo.getTotalQps(); | |||
vo.averageRt = nodeVo.getAverageRt(); | |||
vo.exceptionQps = nodeVo.getExceptionQps(); | |||
vo.oneMinutePassed = nodeVo.getOneMinutePassed(); | |||
vo.oneMinuteBlocked = nodeVo.getOneMinuteBlocked(); | |||
vo.oneMinutePass = nodeVo.getOneMinutePass(); | |||
vo.oneMinuteBlock = nodeVo.getOneMinuteBlock(); | |||
vo.oneMinuteException = nodeVo.getOneMinuteException(); | |||
vo.oneMinuteTotal = nodeVo.getOneMinuteTotal(); | |||
list.add(vo); | |||
@@ -103,12 +103,12 @@ public class ResourceVo { | |||
vo.resource = node.getResource(); | |||
vo.threadNum = node.getThreadNum(); | |||
vo.passQps = node.getPassQps(); | |||
vo.blockedQps = node.getBlockedQps(); | |||
vo.blockQps = node.getBlockQps(); | |||
vo.totalQps = node.getTotalQps(); | |||
vo.averageRt = node.getAverageRt(); | |||
vo.exceptionQps = node.getExceptionQps(); | |||
vo.oneMinutePassed = node.getOneMinutePassed(); | |||
vo.oneMinuteBlocked = node.getOneMinuteBlocked(); | |||
vo.oneMinutePass = node.getOneMinutePass(); | |||
vo.oneMinuteBlock = node.getOneMinuteBlock(); | |||
vo.oneMinuteException = node.getOneMinuteException(); | |||
vo.oneMinuteTotal = node.getOneMinuteTotal(); | |||
vo.visible = node.isVisible(); | |||
@@ -159,12 +159,12 @@ public class ResourceVo { | |||
this.passQps = passQps; | |||
} | |||
public Long getBlockedQps() { | |||
return blockedQps; | |||
public Long getBlockQps() { | |||
return blockQps; | |||
} | |||
public void setBlockedQps(Long blockedQps) { | |||
this.blockedQps = blockedQps; | |||
public void setBlockQps(Long blockQps) { | |||
this.blockQps = blockQps; | |||
} | |||
public Long getTotalQps() { | |||
@@ -207,20 +207,20 @@ public class ResourceVo { | |||
this.oneMinuteException = oneMinuteException; | |||
} | |||
public Long getOneMinutePassed() { | |||
return oneMinutePassed; | |||
public Long getOneMinutePass() { | |||
return oneMinutePass; | |||
} | |||
public void setOneMinutePassed(Long oneMinutePassed) { | |||
this.oneMinutePassed = oneMinutePassed; | |||
public void setOneMinutePass(Long oneMinutePass) { | |||
this.oneMinutePass = oneMinutePass; | |||
} | |||
public Long getOneMinuteBlocked() { | |||
return oneMinuteBlocked; | |||
public Long getOneMinuteBlock() { | |||
return oneMinuteBlock; | |||
} | |||
public void setOneMinuteBlocked(Long oneMinuteBlocked) { | |||
this.oneMinuteBlocked = oneMinuteBlocked; | |||
public void setOneMinuteBlock(Long oneMinuteBlock) { | |||
this.oneMinuteBlock = oneMinuteBlock; | |||
} | |||
public Long getOneMinuteTotal() { | |||
@@ -75,13 +75,13 @@ app.controller('MetricCtl', ['$scope', '$stateParams', 'MetricService', '$interv | |||
type: 'time', | |||
mask: 'YYYY-MM-DD HH:mm:ss' | |||
}); | |||
chart.scale('passedQps', { | |||
chart.scale('passQps', { | |||
min: 0, | |||
fine: true, | |||
alias: 'p_qps' | |||
// max: 10 | |||
}); | |||
chart.scale('blockedQps', { | |||
chart.scale('blockQps', { | |||
min: 0, | |||
fine: true, | |||
alias: 'b_qps', | |||
@@ -94,7 +94,7 @@ app.controller('MetricCtl', ['$scope', '$stateParams', 'MetricService', '$interv | |||
grid: null, | |||
label: null | |||
}); | |||
chart.axis('blockedQps', { | |||
chart.axis('blockQps', { | |||
grid: null, | |||
label: null | |||
}); | |||
@@ -118,17 +118,17 @@ app.controller('MetricCtl', ['$scope', '$stateParams', 'MetricService', '$interv | |||
allowAllCanceled: true, | |||
itemFormatter: function (val) { | |||
// console.log('val=', val); | |||
if ('passedQps' === val) { | |||
if ('passQps' === val) { | |||
return 'p_qps'; | |||
} | |||
if ('blockedQps' === val) { | |||
if ('blockQps' === val) { | |||
return 'b_qps'; | |||
} | |||
return val; | |||
}, | |||
items: [ | |||
{ value: 'passedQps', marker: { symbol: 'hyphen', stroke: 'green', radius: 5, lineWidth: 2 } }, | |||
{ value: 'blockedQps', marker: { symbol: 'hyphen', stroke: 'blue', radius: 5, lineWidth: 2 } }, | |||
{ value: 'passQps', marker: { symbol: 'hyphen', stroke: 'green', radius: 5, lineWidth: 2 } }, | |||
{ value: 'blockQps', marker: { symbol: 'hyphen', stroke: 'blue', radius: 5, lineWidth: 2 } }, | |||
// { value: 'rt', marker: {symbol: 'hyphen', stroke: 'gray', radius: 5, lineWidth: 2} }, | |||
], | |||
onClick: function (ev) { | |||
@@ -148,8 +148,8 @@ app.controller('MetricCtl', ['$scope', '$stateParams', 'MetricService', '$interv | |||
} | |||
} | |||
}); | |||
chart.line().position('timestamp*passedQps').size(1).color('green').shape('smooth'); | |||
chart.line().position('timestamp*blockedQps').size(1).color('blue').shape('smooth'); | |||
chart.line().position('timestamp*passQps').size(1).color('green').shape('smooth'); | |||
chart.line().position('timestamp*blockQps').size(1).color('blue').shape('smooth'); | |||
// chart.line().position('timestamp*rt').size(1).color('gray'); | |||
G2.track(false); | |||
chart.render(); | |||
@@ -214,8 +214,8 @@ app.controller('MetricCtl', ['$scope', '$stateParams', 'MetricService', '$interv | |||
for (var j = lastTime + 1; j < curTime; j++) { | |||
filledData.push({ | |||
"timestamp": j * 1000, | |||
"passedQps": 0, | |||
"blockedQps": 0, | |||
"passQps": 0, | |||
"blockQps": 0, | |||
"successQps": 0, | |||
"exception": 0, | |||
"rt": 0, | |||
@@ -61,13 +61,13 @@ | |||
<!--</a>--> | |||
</td> | |||
<td>{{resource.passQps}}</td> | |||
<td>{{resource.blockedQps}}</td> | |||
<td>{{resource.blockQps}}</td> | |||
<td>{{resource.threadNum}}</td> | |||
<td>{{resource.averageRt}}</td> | |||
<td>{{resource.oneMinutePassed}}</td> | |||
<td>{{resource.oneMinutePass}}</td> | |||
<td ng-if="$index==pageSize-1 || (currentPage>=identities.length/pageSize && $index==identities.length%pageSize-1)" ng-init="initTreeTable()"> | |||
{{resource.oneMinuteBlocked}}</td> | |||
<td ng-if="!($index==pageSize-1 || (currentPage>=identities.length/pageSize && $index==identities.length%pageSize-1))"> {{resource.oneMinuteBlocked}}</td> | |||
{{resource.oneMinuteBlock}}</td> | |||
<td ng-if="!($index==pageSize-1 || (currentPage>=identities.length/pageSize && $index==identities.length%pageSize-1))"> {{resource.oneMinuteBlock}}</td> | |||
<td> | |||
<div class="control-group"> | |||
<button class="btn btn-xs btn-default" type="button" ng-click="addNewFlowRule(resource.resource)" style="font-size: 12px; height:25px;"> | |||
@@ -60,8 +60,8 @@ | |||
<tbody> | |||
<tr style="font-size: 12px;text-align:center;" ng-repeat="tableObj in metric.shortData"> | |||
<td style="word-wrap:break-word;word-break:break-all; ">{{tableObj.timestamp | date: 'HH:mm:ss'}}</td> | |||
<td style="word-wrap:break-word;word-break:break-all; ">{{tableObj.passedQps | number : 1}}</td> | |||
<td style="word-wrap:break-word;word-break:break-all; ">{{tableObj.blockedQps | number : 1}}</td> | |||
<td style="word-wrap:break-word;word-break:break-all; ">{{tableObj.passQps | number : 1}}</td> | |||
<td style="word-wrap:break-word;word-break:break-all; ">{{tableObj.blockQps | number : 1}}</td> | |||
<td style="word-wrap:break-word;word-break:break-all;">{{tableObj.rt | number : 1}}</td> | |||
</tr> | |||
<tr style="font-size: 12px;text-align:center;" ng-repeat="_tr in [] | range : (6 - metric.shortData.length)"> | |||
@@ -71,8 +71,8 @@ public class FetchClusterNodeHumanCommandHandler implements CommandHandler<Strin | |||
int lenNum = (int)Math.ceil((double)id.length() / nameLength) - 1; | |||
sb.append(String.format(format, i + 1, lenNum == 0 ? id : id.substring(0, nameLength), | |||
node.curThreadNum(), node.passQps(), node.blockedQps(), node.successQps(), node.totalQps(), | |||
node.avgRt(), node.totalRequest() - node.blockedRequest(), node.blockedRequest(), | |||
node.curThreadNum(), node.passQps(), node.blockQps(), node.successQps(), node.totalQps(), | |||
node.avgRt(), node.totalRequest() - node.blockRequest(), node.blockRequest(), | |||
node.totalRequest(), node.exceptionQps())).append("\n"); | |||
for (int j = 1; j <= lenNum; ++j) { | |||
int start = nameLength * j; | |||
@@ -82,8 +82,8 @@ public class FetchOriginCommandHandler implements CommandHandler<String> { | |||
String format = FORMAT.replaceAll("80", String.valueOf(nameLength + 1)); | |||
i = 0; | |||
sb.append(String | |||
.format(format, "idx", "origin", "threadNum", "passedQps", "blockedQps", "totalQps", "aRt", "1m-passed", | |||
"1m-blocked", "1m-total")).append("\n"); | |||
.format(format, "idx", "origin", "threadNum", "passQps", "blockQps", "totalQps", "aRt", "1m-pass", | |||
"1m-block", "1m-total")).append("\n"); | |||
for (Entry<String, StatisticNode> e : cNode.getOriginCountMap().entrySet()) { | |||
StatisticNode node = e.getValue(); | |||
@@ -91,8 +91,8 @@ public class FetchOriginCommandHandler implements CommandHandler<String> { | |||
int lenNum = (int)Math.ceil((double)id.length() / nameLength) - 1; | |||
sb.append(String | |||
.format(format, i + 1, lenNum == 0 ? id : id.substring(0, nameLength), node.curThreadNum(), | |||
node.passQps(), node.blockedQps(), node.totalQps(), node.avgRt(), | |||
node.totalRequest() - node.blockedRequest(), node.blockedRequest(), node.totalRequest())) | |||
node.passQps(), node.blockQps(), node.totalQps(), node.avgRt(), | |||
node.totalRequest() - node.blockRequest(), node.blockRequest(), node.totalRequest())) | |||
.append("\n"); | |||
for (int j = 1; j <= lenNum; ++j) { | |||
int start = nameLength * j; | |||
@@ -38,7 +38,7 @@ public class FetchSystemStatusCommandHandler implements CommandHandler<String> { | |||
systemStatus.put("rqps", Constants.ENTRY_NODE.successQps()); | |||
systemStatus.put("qps", Constants.ENTRY_NODE.passQps()); | |||
systemStatus.put("b", Constants.ENTRY_NODE.blockedQps()); | |||
systemStatus.put("b", Constants.ENTRY_NODE.blockQps()); | |||
systemStatus.put("r", Constants.ENTRY_NODE.avgRt()); | |||
systemStatus.put("t", Constants.ENTRY_NODE.curThreadNum()); | |||
@@ -62,8 +62,8 @@ public class FetchTreeCommandHandler implements CommandHandler<String> { | |||
} | |||
sb.append("\r\n\r\n"); | |||
sb.append( | |||
"t:threadNum pq:passQps bq:blockedQps tq:totalQps rt:averageRt prq: passRequestQps 1mp:1m-passed " | |||
+ "1mb:1m-blocked 1mt:1m-total").append("\r\n"); | |||
"t:threadNum pq:passQps bq:blockQps tq:totalQps rt:averageRt prq: passRequestQps 1mp:1m-pass " | |||
+ "1mb:1m-block 1mt:1m-total").append("\r\n"); | |||
return CommandResponse.ofSuccess(sb.toString()); | |||
} | |||
@@ -74,14 +74,14 @@ public class FetchTreeCommandHandler implements CommandHandler<String> { | |||
if (!(node instanceof EntranceNode)) { | |||
sb.append(String.format("%s(t:%s pq:%s bq:%s tq:%s rt:%s prq:%s 1mp:%s 1mb:%s 1mt:%s)", | |||
node.getId().getShowName(), node.curThreadNum(), node.passQps(), | |||
node.blockedQps(), node.totalQps(), node.avgRt(), node.successQps(), | |||
node.totalRequest() - node.blockedRequest(), node.blockedRequest(), | |||
node.blockQps(), node.totalQps(), node.avgRt(), node.successQps(), | |||
node.totalRequest() - node.blockRequest(), node.blockRequest(), | |||
node.totalRequest())).append("\n"); | |||
} else { | |||
sb.append(String.format("EntranceNode: %s(t:%s pq:%s bq:%s tq:%s rt:%s prq:%s 1mp:%s 1mb:%s 1mt:%s)", | |||
node.getId().getShowName(), node.curThreadNum(), node.passQps(), | |||
node.blockedQps(), node.totalQps(), node.avgRt(), node.successQps(), | |||
node.totalRequest() - node.blockedRequest(), node.blockedRequest(), | |||
node.blockQps(), node.totalQps(), node.avgRt(), node.successQps(), | |||
node.totalRequest() - node.blockRequest(), node.blockRequest(), | |||
node.totalRequest())).append("\n"); | |||
} | |||
for (Node n : node.getChildList()) { | |||
@@ -34,13 +34,13 @@ public class NodeVo { | |||
private Integer threadNum; | |||
private Long passQps; | |||
private Long blockedQps; | |||
private Long blockQps; | |||
private Long totalQps; | |||
private Long averageRt; | |||
private Long successQps; | |||
private Long exceptionQps; | |||
private Long oneMinutePassed; | |||
private Long oneMinuteBlocked; | |||
private Long oneMinutePass; | |||
private Long oneMinuteBlock; | |||
private Long oneMinuteException; | |||
private Long oneMinuteTotal; | |||
@@ -64,14 +64,14 @@ public class NodeVo { | |||
vo.resource = node.getId().getShowName(); | |||
vo.threadNum = node.curThreadNum(); | |||
vo.passQps = node.passQps(); | |||
vo.blockedQps = node.blockedQps(); | |||
vo.blockQps = node.blockQps(); | |||
vo.totalQps = node.totalQps(); | |||
vo.averageRt = node.avgRt(); | |||
vo.successQps = node.successQps(); | |||
vo.exceptionQps = node.exceptionQps(); | |||
vo.oneMinuteException = node.totalException(); | |||
vo.oneMinutePassed = node.totalRequest() - node.blockedRequest(); | |||
vo.oneMinuteBlocked = node.blockedRequest(); | |||
vo.oneMinutePass = node.totalRequest() - node.blockRequest(); | |||
vo.oneMinuteBlock = node.blockRequest(); | |||
vo.oneMinuteTotal = node.totalRequest(); | |||
vo.timestamp = System.currentTimeMillis(); | |||
return vo; | |||
@@ -103,14 +103,14 @@ public class NodeVo { | |||
vo.resource = name; | |||
vo.threadNum = node.curThreadNum(); | |||
vo.passQps = node.passQps(); | |||
vo.blockedQps = node.blockedQps(); | |||
vo.blockQps = node.blockQps(); | |||
vo.totalQps = node.totalQps(); | |||
vo.averageRt = node.avgRt(); | |||
vo.successQps = node.successQps(); | |||
vo.exceptionQps = node.exceptionQps(); | |||
vo.oneMinuteException = node.totalException(); | |||
vo.oneMinutePassed = node.totalRequest() - node.blockedRequest(); | |||
vo.oneMinuteBlocked = node.blockedRequest(); | |||
vo.oneMinutePass = node.totalRequest() - node.blockRequest(); | |||
vo.oneMinuteBlock = node.blockRequest(); | |||
vo.oneMinuteTotal = node.totalRequest(); | |||
vo.timestamp = System.currentTimeMillis(); | |||
return vo; | |||
@@ -156,12 +156,12 @@ public class NodeVo { | |||
this.passQps = passQps; | |||
} | |||
public Long getBlockedQps() { | |||
return blockedQps; | |||
public Long getBlockQps() { | |||
return blockQps; | |||
} | |||
public void setBlockedQps(Long blockedQps) { | |||
this.blockedQps = blockedQps; | |||
public void setBlockQps(Long blockQps) { | |||
this.blockQps = blockQps; | |||
} | |||
public Long getTotalQps() { | |||
@@ -204,20 +204,20 @@ public class NodeVo { | |||
this.oneMinuteException = oneMinuteException; | |||
} | |||
public Long getOneMinutePassed() { | |||
return oneMinutePassed; | |||
public Long getOneMinutePass() { | |||
return oneMinutePass; | |||
} | |||
public void setOneMinutePassed(Long oneMinutePassed) { | |||
this.oneMinutePassed = oneMinutePassed; | |||
public void setOneMinutePass(Long oneMinutePass) { | |||
this.oneMinutePass = oneMinutePass; | |||
} | |||
public Long getOneMinuteBlocked() { | |||
return oneMinuteBlocked; | |||
public Long getOneMinuteBlock() { | |||
return oneMinuteBlock; | |||
} | |||
public void setOneMinuteBlocked(Long oneMinuteBlocked) { | |||
this.oneMinuteBlocked = oneMinuteBlocked; | |||
public void setOneMinuteBlock(Long oneMinuteBlock) { | |||
this.oneMinuteBlock = oneMinuteBlock; | |||
} | |||
public Long getOneMinuteTotal() { | |||