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/12/05 08:10:30 UTC
[servicecomb-java-chassis] 01/04: [SCB-1044]add current process CPU
rate and net packets in the metrics
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/servicecomb-java-chassis.git
commit bb2b8a88946f57d49a646aa9f61640bfe16b25fb
Author: heyile <25...@qq.com>
AuthorDate: Mon Nov 26 20:35:22 2018 +0800
[SCB-1044]add current process CPU rate and net packets in the metrics
---
.../foundation/common/net/NetUtils.java | 4 +-
.../foundation/common/net/TestNetUtils.java | 55 +++++++-------
.../metrics/publish/spectator/MeasurementTree.java | 2 +-
.../metrics/core/meter/os/CpuMeter.java | 78 +++++++++++++++++--
.../metrics/core/meter/os/NetMeter.java | 51 ++++++++++++-
.../servicecomb/metrics/core/meter/os/OsMeter.java | 5 +-
.../core/publish/ClientEndpointsLogPublisher.java | 2 +-
.../metrics/core/publish/DefaultLogPublisher.java | 21 ++++--
.../core/publish/ServerEndpointsLogPublisher.java | 2 +-
.../metrics/core/TestOsMeterInitializer.java | 22 +++++-
.../metrics/core/TestVertxMetersInitializer.java | 13 ++--
.../metrics/core/meter/os/TestCpuMeter.java | 88 ++++++++++++++++------
.../metrics/core/meter/os/TestNetMeter.java | 36 ++++++++-
.../metrics/core/meter/os/TestOsMeter.java | 21 +++++-
.../core/publish/TestDefaultLogPublisher.java | 37 ++++++---
15 files changed, 341 insertions(+), 96 deletions(-)
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/net/NetUtils.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/net/NetUtils.java
index c03061a..30f8e29 100644
--- a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/net/NetUtils.java
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/net/NetUtils.java
@@ -238,10 +238,10 @@ public final class NetUtils {
public static String humanReadableBytes(long bytes) {
int unit = 1024;
if (bytes < unit) {
- return bytes + " B";
+ return bytes + "";
}
int exp = (int) (Math.log(bytes) / Math.log(unit));
char pre = "KMGTPE".charAt(exp - 1);
- return String.format("%.3f %cB", bytes / Math.pow(unit, exp), pre);
+ return String.format("%.3f%c", bytes / Math.pow(unit, exp), pre);
}
}
diff --git a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/net/TestNetUtils.java b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/net/TestNetUtils.java
index 15c6a9e..15e157f 100644
--- a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/net/TestNetUtils.java
+++ b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/net/TestNetUtils.java
@@ -110,40 +110,39 @@ public class TestNetUtils {
@Test
public void humanReadableBytes() throws IOException {
- Assert.assertEquals("0 B", NetUtils.humanReadableBytes(0L));
- Assert.assertEquals("1 B", NetUtils.humanReadableBytes(1L));
- Assert.assertEquals("1023 B", NetUtils.humanReadableBytes(1023L));
-
- Assert.assertEquals("1.000 KB", NetUtils.humanReadableBytes(1024L));
- Assert.assertEquals("1.001 KB", NetUtils.humanReadableBytes(1025L));
- Assert.assertEquals("1023.999 KB", NetUtils.humanReadableBytes(1024L * 1024 - 1));
-
- Assert.assertEquals("1.000 MB", NetUtils.humanReadableBytes(1024L * 1024));
- Assert.assertEquals("1.000 MB", NetUtils.humanReadableBytes(1024L * 1024 + 1));
- Assert.assertEquals("1.001 MB", NetUtils.humanReadableBytes(1024L * 1024 + 1024));
- Assert.assertEquals("1023.999 MB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 - 1024));
- Assert.assertEquals("1024.000 MB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 - 1));
-
- Assert.assertEquals("1.000 GB", NetUtils.humanReadableBytes(1024L * 1024 * 1024));
- Assert.assertEquals("1.000 GB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 + 1));
- Assert.assertEquals("1.000 GB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 + 1024));
- Assert.assertEquals("1023.999 GB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 - 1024 * 1024));
- Assert.assertEquals("1024.000 GB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 - 1024));
- Assert.assertEquals("1.000 TB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024));
- Assert.assertEquals("1.001 TB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 + 1024 * 1024 * 1024));
- Assert.assertEquals("1023.999 TB",
+ Assert.assertEquals("0", NetUtils.humanReadableBytes(0L));
+ Assert.assertEquals("1", NetUtils.humanReadableBytes(1L));
+ Assert.assertEquals("1023", NetUtils.humanReadableBytes(1023L));
+
+ Assert.assertEquals("1.000K", NetUtils.humanReadableBytes(1024L));
+ Assert.assertEquals("1.001K", NetUtils.humanReadableBytes(1025L));
+ Assert.assertEquals("1023.999K", NetUtils.humanReadableBytes(1024L * 1024 - 1));
+
+ Assert.assertEquals("1.000M", NetUtils.humanReadableBytes(1024L * 1024));
+ Assert.assertEquals("1.000M", NetUtils.humanReadableBytes(1024L * 1024 + 1));
+ Assert.assertEquals("1.001M", NetUtils.humanReadableBytes(1024L * 1024 + 1024));
+ Assert.assertEquals("1023.999M", NetUtils.humanReadableBytes(1024L * 1024 * 1024 - 1024));
+ Assert.assertEquals("1024.000M", NetUtils.humanReadableBytes(1024L * 1024 * 1024 - 1));
+ Assert.assertEquals("1.000G", NetUtils.humanReadableBytes(1024L * 1024 * 1024));
+ Assert.assertEquals("1.000G", NetUtils.humanReadableBytes(1024L * 1024 * 1024 + 1));
+ Assert.assertEquals("1.000G", NetUtils.humanReadableBytes(1024L * 1024 * 1024 + 1024));
+ Assert.assertEquals("1023.999G", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 - 1024 * 1024));
+ Assert.assertEquals("1024.000G", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 - 1024));
+ Assert.assertEquals("1.000T", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024));
+ Assert.assertEquals("1.001T", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 + 1024 * 1024 * 1024));
+ Assert.assertEquals("1023.999T",
NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024 - 1024L * 1024 * 1024));
- Assert.assertEquals("1.000 PB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024));
- Assert.assertEquals("1.001 PB",
+ Assert.assertEquals("1.000P", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024));
+ Assert.assertEquals("1.001P",
NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024 + 1024L * 1024 * 1024 * 1024));
- Assert.assertEquals("1023.999 PB",
+ Assert.assertEquals("1023.999P",
NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024 * 1024 - 1024L * 1024 * 1024 * 1024));
- Assert.assertEquals("1.000 EB", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024 * 1024));
- Assert.assertEquals("1.001 EB",
+ Assert.assertEquals("1.000E", NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024 * 1024));
+ Assert.assertEquals("1.001E",
NetUtils.humanReadableBytes(1024L * 1024 * 1024 * 1024 * 1024 * 1024 + 1024L * 1024 * 1024 * 1024 * 1024));
- Assert.assertEquals("8.000 EB", NetUtils.humanReadableBytes(Long.MAX_VALUE));
+ Assert.assertEquals("8.000E", NetUtils.humanReadableBytes(Long.MAX_VALUE));
}
@Test
diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java
index 79101fa..5e18de6 100644
--- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java
+++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/publish/spectator/MeasurementTree.java
@@ -56,7 +56,7 @@ public class MeasurementTree extends MeasurementNode {
Tag tag = tagFinder.find(id.tags());
if (tag == null) {
if (tagFinder.skipOnNull()) {
- break;
+ continue;
}
throw new IllegalStateException(
String.format("tag key \"%s\" not exist in %s",
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/CpuMeter.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/CpuMeter.java
index 60f6cd2..409fdc9 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/CpuMeter.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/CpuMeter.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.metrics.core.meter.os;
import java.io.File;
import java.io.IOException;
+import java.lang.management.ManagementFactory;
import java.nio.charset.StandardCharsets;
import java.util.List;
@@ -25,61 +26,118 @@ import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.netflix.spectator.api.BasicTag;
import com.netflix.spectator.api.Id;
import com.netflix.spectator.api.Measurement;
+import com.netflix.spectator.api.Tag;
public class CpuMeter {
private static final Logger LOGGER = LoggerFactory.getLogger(CpuMeter.class);
+ public static final String STATISTIC = "statistic";
+
+ public static final Tag TAG_All = new BasicTag(STATISTIC, "allProcess");
+
+ public static final Tag TAG_CURRENT = new BasicTag(STATISTIC, "currentProcess");
+
private double rate;
+ private double processRate;
+
private long lastTotalTime;
private long lastIdleTime;
+ private long lastProcessTime;
+
private int cpuNum;
- private Id id;
+ // process id
+ private String pid;
+
+ // allProcess
+ private Id AId;
+
+ // currentProcess
+ private Id CId;
public CpuMeter(Id id) {
- this.id = id;
+ this.AId = id.withTag(TAG_All);
+ this.CId = id.withTag(TAG_CURRENT);
+
+ this.pid = getCurrentPid();
this.cpuNum = Runtime.getRuntime().availableProcessors();
refreshCpu();
rate = 0.0;
+ processRate = 0.0;
+ }
+
+ private String getCurrentPid() {
+ String name = ManagementFactory.getRuntimeMXBean().getName();
+ if (name.contains("@")) {
+ return name.substring(0, name.indexOf("@"));
+ }
+ LOGGER.warn("Failed to get current process id. {}", name);
+ return null;
}
public void calcMeasurements(List<Measurement> measurements, long msNow) {
refreshCpu();
- measurements.add(new Measurement(id, msNow, rate));
+ measurements.add(new Measurement(AId, msNow, rate));
+ measurements.add(new Measurement(CId, msNow, processRate));
}
/*
* unit : 1 jiffies = 10ms = 0.01 s
* more details :
* http://man7.org/linux/man-pages/man5/proc.5.html
+ * CMD : /proc/stat
* cpu 2445171 599297 353967 24490633 11242 0 10780 2993 0 0
* cpu user nice system idle iowait irq softirq stealstolen guest guest_nice
* 0 1 2 3 4 5 6 7 8
* cpuTotal = user + nice + system + idle + iowait + irq + softirq + stealstolen
+ *
+ * CMD : /proc/[pid]/stat
+ * 6754 (kubelet) S 1 995 995 0 -1 4202752 193281 592501546 0 12 1152076 907044 87991 113319 ..
+ * pid comm state ppid pgrp session tty_nr tpgid flags minflt cminflt majflt cmajflt utime stime cutime cstime
+ * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+ * processTotalTime = utime + stime + cutime + cstime
+ *
*/
protected void refreshCpu() {
try {
File file = new File("/proc/stat");
+ File pFile = new File(String.format("/proc/%s/stat", pid));
//just use first line
+
String cpuStr = FileUtils.readLines(file, StandardCharsets.UTF_8).get(0);
+ String pCpuStr = FileUtils.readLines(pFile, StandardCharsets.UTF_8).get(0);
+
String[] cpuInfo = cpuStr.trim().split("\\s+");
- long idle = Long.parseLong(cpuInfo[4]);
+ String[] pCpuInfo = pCpuStr.trim().split("\\s+");
+
long total = 0L;
+ long pTotal = 0L;
+ long idle = Long.parseLong(cpuInfo[4]);
+
for (int i = 1; i <= 8; i++) {
total += Long.parseLong(cpuInfo[i]);
}
+ for (int i = 13; i <= 16; i++) {
+ pTotal += Long.parseLong(pCpuInfo[i]);
+ }
+
//just check, make sure it's safe
if (total != lastTotalTime) {
rate = 1.0 - (double) (idle - lastIdleTime) / (total - lastTotalTime);
+ processRate = (double) (pTotal - lastProcessTime) / (total - lastTotalTime);
rate *= cpuNum;
+ processRate *= cpuNum;
}
+
lastTotalTime = total;
lastIdleTime = idle;
+ lastProcessTime = pTotal;
} catch (IOException e) {
LOGGER.error("Failed to read current cpu info.", e);
}
@@ -97,11 +155,19 @@ public class CpuMeter {
return lastIdleTime;
}
+ public long getLastProcessTime() {
+ return lastProcessTime;
+ }
+
+ public double getProcessRate() {
+ return processRate;
+ }
+
public int getCpuNum() {
return cpuNum;
}
- public Id getId() {
- return id;
+ public String getPid() {
+ return pid;
}
}
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/NetMeter.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/NetMeter.java
index 8396619..98f899d 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/NetMeter.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/NetMeter.java
@@ -43,8 +43,12 @@ public class NetMeter {
public static final Tag TAG_RECEIVE = new BasicTag(STATISTIC, "receive");
+ public static final Tag TAG_PACKETS_RECEIVE = new BasicTag(STATISTIC, "receivePackets");
+
public static final Tag TAG_SEND = new BasicTag(STATISTIC, "send");
+ public static final Tag TAG_PACKETS_SEND = new BasicTag(STATISTIC, "sendPackets");
+
private final Id id;
private Map<String, InterfaceInfo> interfaceInfoMap = new ConcurrentHashMap<>();
@@ -56,32 +60,55 @@ public class NetMeter {
private Id receiveId;
+ private Id sendPacketId;
+
+ private Id receivePacketId;
+
//receive bytes
private long lastRxBytes;
//transmit bytes
private long lastTxBytes;
+ //receive packets
+ private long lastRxPackets;
+
+ //transmit packets
+ private long lastTxPackets;
+
// bytes per second
private double sendRate;
private double receiveRate;
+ private double sendPacketsRate;
+
+ private double receivePacketsRate;
+
+
InterfaceInfo(Id id, String name) {
this.name = name;
id = id.withTag(INTERFACE, name);
this.sendId = id.withTag(TAG_SEND);
+ this.sendPacketId = id.withTag(TAG_PACKETS_SEND);
this.receiveId = id.withTag(TAG_RECEIVE);
+ this.receivePacketId = id.withTag(TAG_PACKETS_RECEIVE);
}
public void update(String interfaceData, long secondInterval) {
String[] netInfo = interfaceData.trim().split("\\s+");
long rxBytes = Long.parseLong(netInfo[0]);
+ long rxPackets = Long.parseLong(netInfo[1]);
long txBytes = Long.parseLong(netInfo[8]);
+ long txPackets = Long.parseLong(netInfo[9]);
sendRate = (double) (txBytes - lastTxBytes) / secondInterval;
+ sendPacketsRate = (double) (txPackets - lastTxPackets) / secondInterval;
receiveRate = (double) (rxBytes - lastRxBytes) / secondInterval;
+ receivePacketsRate = (double) (rxPackets - lastRxPackets) / secondInterval;
lastRxBytes = rxBytes;
+ lastRxPackets = rxPackets;
lastTxBytes = txBytes;
+ lastTxPackets = txPackets;
}
public String getName() {
@@ -103,16 +130,34 @@ public class NetMeter {
public double getReceiveRate() {
return receiveRate;
}
+
+ public long getLastRxPackets() {
+ return lastRxPackets;
+ }
+
+ public long getLastTxPackets() {
+ return lastTxPackets;
+ }
+
+ public double getSendPacketsRate() {
+ return sendPacketsRate;
+ }
+
+ public double getReceivePacketsRate() {
+ return receivePacketsRate;
+ }
}
public NetMeter(Id id) {
this.id = id;
- // init lastRxBytes and lastTxBytes
+ // init lastRxBytes, lastRxPackets, lastTxBytes, lastTxPackets
refreshNet(1);
for (InterfaceInfo interfaceInfo : interfaceInfoMap.values()) {
interfaceInfo.sendRate = 0;
+ interfaceInfo.sendPacketsRate = 0;
interfaceInfo.receiveRate = 0;
+ interfaceInfo.receivePacketsRate = 0;
}
}
@@ -121,7 +166,9 @@ public class NetMeter {
for (InterfaceInfo interfaceInfo : interfaceInfoMap.values()) {
measurements.add(new Measurement(interfaceInfo.sendId, msNow, interfaceInfo.sendRate));
+ measurements.add(new Measurement(interfaceInfo.sendPacketId, msNow, interfaceInfo.sendPacketsRate));
measurements.add(new Measurement(interfaceInfo.receiveId, msNow, interfaceInfo.receiveRate));
+ measurements.add(new Measurement(interfaceInfo.receivePacketId, msNow, interfaceInfo.receivePacketsRate));
}
}
@@ -129,7 +176,7 @@ public class NetMeter {
* Inter-| Receive | Transmit
* face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
* eth0: 2615248100 32148518 0 0 0 0 0 0 87333034794 21420267 0 0 0 0 0 0
- * 0 1 2 3 4 5 6 7 8
+ * 0 1 2 3 4 5 6 7 8 9
*/
protected void refreshNet(long secondInterval) {
try {
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/OsMeter.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/OsMeter.java
index 257f8d9..f3a97f0 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/OsMeter.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/OsMeter.java
@@ -26,9 +26,12 @@ import com.netflix.spectator.api.Measurement;
import com.netflix.spectator.api.Registry;
/**
- * name=os type=cpu value=10.0
+ * name=os type=cpu statistic=allProcess value = 0
+ * name=os type=cpu statistic=currentProcess value = 0
* name=os type=net interface=eth0 statistic=send value=100
* name=os type=net interface=eth0 statistic=receive value=100
+ * name=os type=net interface=eth0 statistic=sendP value=100
+ * name=os type=net interface=eth0 statistic=receiveP value=100
*/
public class OsMeter extends AbstractPeriodMeter {
public static final String OS_NAME = "os";
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ClientEndpointsLogPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ClientEndpointsLogPublisher.java
index 7bd9a87..9bcd23d 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ClientEndpointsLogPublisher.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ClientEndpointsLogPublisher.java
@@ -32,7 +32,7 @@ public class ClientEndpointsLogPublisher extends AbstractMeasurementNodeLogPubli
@Override
public void print(boolean printDetail) {
appendLine(sb, " client.endpoints:");
- appendLine(sb, " remote connectCount disconnectCount connections send receive");
+ appendLine(sb, " remote connectCount disconnectCount connections send(B) receive(B)");
double connect = 0;
double disconnect = 0;
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 778a8bb..a9058d8 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
@@ -32,6 +32,7 @@ import org.apache.servicecomb.foundation.metrics.registry.GlobalRegistry;
import org.apache.servicecomb.foundation.vertx.VertxUtils;
import org.apache.servicecomb.metrics.core.VertxMetersInitializer;
import org.apache.servicecomb.metrics.core.meter.invocation.MeterInvocationConst;
+import org.apache.servicecomb.metrics.core.meter.os.CpuMeter;
import org.apache.servicecomb.metrics.core.meter.os.NetMeter;
import org.apache.servicecomb.metrics.core.meter.os.OsMeter;
import org.apache.servicecomb.metrics.core.publish.model.DefaultPublishModel;
@@ -139,19 +140,23 @@ public class DefaultLogPublisher implements MetricsInitializer {
}
appendLine(sb, " net:");
- appendLine(sb, " send receive interface");
+ appendLine(sb, " send(Bps) recv(Bps) send(pps) recv(pps) interface");
StringBuilder tmpSb = new StringBuilder();
for (MeasurementNode interfaceNode : netNode.getChildren().values()) {
double sendRate = interfaceNode.findChild(NetMeter.TAG_SEND.value()).summary();
+ double sendPacketsRate = interfaceNode.findChild(NetMeter.TAG_PACKETS_SEND.value()).summary();
double receiveRate = interfaceNode.findChild(NetMeter.TAG_RECEIVE.value()).summary();
- if (sendRate == 0 && receiveRate == 0) {
+ double receivePacketsRate = interfaceNode.findChild(NetMeter.TAG_PACKETS_RECEIVE.value()).summary();
+ if (sendRate == 0 && receiveRate == 0 && receivePacketsRate == 0 && sendPacketsRate == 0) {
continue;
}
- appendLine(tmpSb, " %-12s %-12s %s",
+ appendLine(tmpSb, " %-12s %-12s %-12s %-14s %s",
NetUtils.humanReadableBytes((long) sendRate),
NetUtils.humanReadableBytes((long) receiveRate),
+ NetUtils.humanReadableBytes((long) sendPacketsRate),
+ NetUtils.humanReadableBytes((long) receivePacketsRate),
interfaceNode.getName());
}
if (tmpSb.length() != 0) {
@@ -161,8 +166,14 @@ public class DefaultLogPublisher implements MetricsInitializer {
private void printCpuLog(StringBuilder sb, MeasurementNode osNode) {
MeasurementNode cpuNode = osNode.findChild(OsMeter.OS_TYPE_CPU);
- if (cpuNode != null && !cpuNode.getMeasurements().isEmpty()) {
- appendLine(sb, " cpu: %.2f%%", cpuNode.summary() * 100);
+ if (cpuNode == null || cpuNode.getMeasurements().isEmpty()) {
+ return;
+ }
+ double allRate = cpuNode.findChild(CpuMeter.TAG_All.value()).summary();
+ double processRate = cpuNode.findChild(CpuMeter.TAG_CURRENT.value()).summary();
+ if (allRate != 0 || processRate != 0) {
+ appendLine(sb, " cpu:");
+ appendLine(sb, " all: %.2f%% process: %.2f%%", allRate * 100, processRate * 100);
}
}
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ServerEndpointsLogPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ServerEndpointsLogPublisher.java
index 8edb940..513d981 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ServerEndpointsLogPublisher.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/ServerEndpointsLogPublisher.java
@@ -34,7 +34,7 @@ public class ServerEndpointsLogPublisher extends AbstractMeasurementNodeLogPubli
public void print(boolean printDetail) {
appendLine(sb, " server.endpoints:");
appendLine(sb,
- " listen connectCount disconnectCount rejectByLimit connections send receive");
+ " listen connectCount disconnectCount rejectByLimit connections send(B) receive(B)");
double connect = 0;
double disconnect = 0;
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestOsMeterInitializer.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestOsMeterInitializer.java
index bb73bd1..51c02ea 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestOsMeterInitializer.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestOsMeterInitializer.java
@@ -17,6 +17,8 @@
package org.apache.servicecomb.metrics.core;
import java.io.File;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
@@ -61,10 +63,10 @@ public class TestOsMeterInitializer {
}
@Test
- public void init(@Mocked Runtime runtime) {
+ public void init(@Mocked Runtime runtime,@Mocked RuntimeMXBean mxBean) {
ReflectUtils.setField(SystemUtils.class, null, "IS_OS_LINUX", true);
List<String> list = new ArrayList<>();
- list.add("cpu 1 1 1 1 1 1 1 1 0 0");
+ list.add("cpu 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1");
list.add("useless");
list.add("eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0");
new MockUp<FileUtils>() {
@@ -73,6 +75,13 @@ public class TestOsMeterInitializer {
return list;
}
};
+ new MockUp<ManagementFactory>() {
+ @Mock
+ RuntimeMXBean getRuntimeMXBean() {
+ return mxBean;
+ }
+ };
+
new MockUp<Runtime>() {
@Mock
public Runtime getRuntime() {
@@ -83,6 +92,8 @@ public class TestOsMeterInitializer {
{
runtime.availableProcessors();
result = 2;
+ mxBean.getName();
+ result = "6666@desktop111";
}
};
globalRegistry.add(registry);
@@ -94,6 +105,8 @@ public class TestOsMeterInitializer {
Assert.assertNotNull(osMeter.getNetMeter());
CpuMeter cpuMeter = osMeter.getCpuMeter();
NetMeter netMeter = osMeter.getNetMeter();
+ Assert.assertEquals("6666", cpuMeter.getPid());
+ Assert.assertEquals(4L, cpuMeter.getLastProcessTime());
Assert.assertEquals(2, cpuMeter.getCpuNum());
Assert.assertEquals(1L, cpuMeter.getLastIdleTime());
Assert.assertEquals(8L, cpuMeter.getLastTotalTime());
@@ -102,8 +115,13 @@ public class TestOsMeterInitializer {
InterfaceInfo eth0 = interfaceInfoMap.get("eth0");
Assert.assertEquals(0L, eth0.getLastRxBytes());
Assert.assertEquals(0L, eth0.getLastTxBytes());
+ Assert.assertEquals(0L, eth0.getLastTxPackets());
+ Assert.assertEquals(0L, eth0.getLastRxPackets());
+
Assert.assertEquals(0.0, eth0.getSendRate(), 0.0);
Assert.assertEquals(0.0, eth0.getReceiveRate(), 0.0);
+ Assert.assertEquals(0.0, eth0.getReceivePacketsRate(), 0.0);
+ Assert.assertEquals(0.0, eth0.getSendPacketsRate(), 0.0);
}
@Test
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java
index ba7c8c3..6c7509a 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java
@@ -160,17 +160,18 @@ public class TestVertxMetersInitializer {
+ " transport 4\n"
+ " transport:\n"
+ " client.endpoints:\n"
- + " remote connectCount disconnectCount connections send receive\n";
+ + " remote connectCount disconnectCount connections send(B) receive(B)\n";
if (printDetail) {
expect += String.format(
- " 127.0.0.1:%-5s 1 0 1 4 B 21 B \n",
+ " 127.0.0.1:%-5s 1 0 1 4 21 \n",
port);
}
- expect += " (summary) 1 0 1 4 B 21 B \n"
+ expect += " (summary) 1 0 1 4 21 \n"
+ " server.endpoints:\n"
- + " listen connectCount disconnectCount rejectByLimit connections send receive\n"
- + " 0.0.0.0:0 1 0 0 1 21 B 4 B \n"
- + " (summary) 1 0 0 1 21 B 4 B \n\n";
+ + " listen connectCount disconnectCount rejectByLimit connections send(B) receive(B)\n"
+ + " 0.0.0.0:0 1 0 0 1 21 4 \n"
+ + " (summary) 1 0 0 1 21 4 \n\n";
+
Assert.assertEquals(expect, actual);
}
}
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java
index 1399cb6..1abc00d 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestCpuMeter.java
@@ -17,6 +17,8 @@
package org.apache.servicecomb.metrics.core.meter.os;
import java.io.File;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
@@ -36,54 +38,70 @@ import mockit.Mocked;
public class TestCpuMeter {
@Test
- public void testRefreshCpuSuccess(@Mocked Id id, @Mocked Runtime runtime) {
+ public void testRefreshCpuSuccess(@Mocked Id id, @Mocked Runtime runtime, @Mocked RuntimeMXBean mxBean) {
List<String> list = new ArrayList<>();
- list.add("cpu 1 1 1 1 1 1 1 1 0 0");
+ list.add("cpu 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1");
new MockUp<FileUtils>() {
@Mock
public List<String> readLines(File file, Charset encoding) {
return list;
}
};
- new Expectations() {
- {
- runtime.availableProcessors();
- result = 2;
+ new MockUp<ManagementFactory>() {
+ @Mock
+ RuntimeMXBean getRuntimeMXBean() {
+ return mxBean;
}
};
+
new MockUp<Runtime>() {
@Mock
public Runtime getRuntime() {
return runtime;
}
};
+ new Expectations() {
+ {
+ runtime.availableProcessors();
+ result = 2;
+ mxBean.getName();
+ result = "6666@desktop111";
+ }
+ };
CpuMeter cpuMeter = new CpuMeter(id);
Assert.assertEquals(0.0, cpuMeter.getRate(), 0.0);
+ Assert.assertEquals(0.0, cpuMeter.getProcessRate(), 0.0);
+ Assert.assertEquals("6666", cpuMeter.getPid());
+ Assert.assertEquals(4L, cpuMeter.getLastProcessTime());
Assert.assertEquals(8, cpuMeter.getLastTotalTime());
Assert.assertEquals(1, cpuMeter.getLastIdleTime());
Assert.assertEquals(2, cpuMeter.getCpuNum());
- list.add(0, "cpu 2 2 2 2 2 2 2 2 0 0");
+ list.add(0, "cpu 2 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 2");
cpuMeter.refreshCpu();
+ Assert.assertEquals(1.0, cpuMeter.getProcessRate(), 0.0);
Assert.assertEquals(1.75, cpuMeter.getRate(), 0.0);
Assert.assertEquals(16, cpuMeter.getLastTotalTime());
+ Assert.assertEquals(8, cpuMeter.getLastProcessTime());
Assert.assertEquals(2, cpuMeter.getLastIdleTime());
Assert.assertEquals(2, cpuMeter.getCpuNum());
+ Assert.assertEquals("6666", cpuMeter.getPid());
}
@Test
- public void testRefreshError(@Mocked Id id, @Mocked Runtime runtime) {
+ public void testRefreshError(@Mocked Id id, @Mocked Runtime runtime, @Mocked RuntimeMXBean mxBean) {
List<String> list = new ArrayList<>();
- list.add("cpu 1 1 1 1 1 1 1 1 0 0");
+ list.add("cpu 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1");
new MockUp<FileUtils>() {
@Mock
public List<String> readLines(File file, Charset encoding) {
return list;
}
};
- new Expectations() {
- {
- runtime.availableProcessors();
- result = 2;
+
+ new MockUp<ManagementFactory>() {
+ @Mock
+ RuntimeMXBean getRuntimeMXBean() {
+ return mxBean;
}
};
new MockUp<Runtime>() {
@@ -92,33 +110,48 @@ public class TestCpuMeter {
return runtime;
}
};
+ new Expectations() {
+ {
+ runtime.availableProcessors();
+ result = 2;
+ mxBean.getName();
+ result = "6666@desktop111";
+ }
+ };
CpuMeter cpuMeter = new CpuMeter(id);
+ Assert.assertEquals(0.0, cpuMeter.getProcessRate(), 0.0);
+ Assert.assertEquals("6666", cpuMeter.getPid());
+ Assert.assertEquals(4L, cpuMeter.getLastProcessTime());
Assert.assertEquals(0.0, cpuMeter.getRate(), 0.0);
Assert.assertEquals(8, cpuMeter.getLastTotalTime());
Assert.assertEquals(1, cpuMeter.getLastIdleTime());
Assert.assertEquals(2, cpuMeter.getCpuNum());
- list.add(0, "cpu 1 1 1 1 1 1 1 1 0 0");
+ list.add(0, "cpu 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1");
cpuMeter.refreshCpu();
+ Assert.assertEquals(0.0, cpuMeter.getProcessRate(), 0.0);
+ Assert.assertEquals("6666", cpuMeter.getPid());
+ Assert.assertEquals(4L, cpuMeter.getLastProcessTime());
Assert.assertEquals(0.0, cpuMeter.getRate(), 0.0);
Assert.assertEquals(8, cpuMeter.getLastTotalTime());
Assert.assertEquals(1, cpuMeter.getLastIdleTime());
}
@Test
- public void testCalcMeasurements(@Mocked Id id, @Mocked Runtime runtime) {
+ public void testCalcMeasurements(@Mocked Id id, @Mocked Runtime runtime, @Mocked RuntimeMXBean mxBean) {
List<Measurement> measurements = new ArrayList<>();
List<String> list = new ArrayList<>();
- list.add("cpu 1 1 1 1 1 1 1 1 0 0");
+ list.add("cpu 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1");
new MockUp<FileUtils>() {
@Mock
public List<String> readLines(File file, Charset encoding) {
return list;
}
};
- new Expectations() {
- {
- runtime.availableProcessors();
- result = 2;
+
+ new MockUp<ManagementFactory>() {
+ @Mock
+ RuntimeMXBean getRuntimeMXBean() {
+ return mxBean;
}
};
new MockUp<Runtime>() {
@@ -127,12 +160,23 @@ public class TestCpuMeter {
return runtime;
}
};
+ new Expectations() {
+ {
+ runtime.availableProcessors();
+ result = 2;
+ mxBean.getName();
+ result = "6666@desktop111";
+ }
+ };
CpuMeter cpuMeter = new CpuMeter(id);
- list.add(0, "cpu 2 2 2 2 2 2 2 2 0 0");
+ list.add(0, "cpu 2 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 2");
cpuMeter.calcMeasurements(measurements, 0);
- Assert.assertEquals(1, measurements.size());
+ Assert.assertEquals(2, measurements.size());
Measurement measurement = measurements.get(0);
Assert.assertEquals(0, measurement.timestamp());
Assert.assertEquals(1.75, measurement.value(), 0.0);
+ measurement = measurements.get(1);
+ Assert.assertEquals(0, measurement.timestamp());
+ Assert.assertEquals(1.0, measurement.value(), 0.0);
}
}
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java
index 8caa14d..9dbc5e9 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestNetMeter.java
@@ -57,6 +57,8 @@ public class TestNetMeter {
Assert.assertEquals("eth0", eth0.getName());
Assert.assertEquals(1L, eth0.getLastRxBytes());
Assert.assertEquals(1L, eth0.getLastTxBytes());
+ Assert.assertEquals(1L, eth0.getLastRxPackets());
+ Assert.assertEquals(1L, eth0.getLastTxPackets());
Assert.assertEquals(1, eth0.getReceiveRate(), 0.0);
Assert.assertEquals(1, eth0.getSendRate(), 0.0);
}
@@ -85,15 +87,24 @@ public class TestNetMeter {
InterfaceInfo eth0 = netMap.get("eth0");
Assert.assertEquals("eth0", eth0.getName());
Assert.assertEquals(1L, eth0.getLastRxBytes());
+ Assert.assertEquals(1L, eth0.getLastRxPackets());
+ Assert.assertEquals(1L, eth0.getLastTxPackets());
Assert.assertEquals(1L, eth0.getLastTxBytes());
Assert.assertEquals(1, eth0.getReceiveRate(), 0.0);
Assert.assertEquals(1, eth0.getSendRate(), 0.0);
+ Assert.assertEquals(1, eth0.getSendPacketsRate(), 0.0);
+ Assert.assertEquals(1, eth0.getReceivePacketsRate(), 0.0);
+
InterfaceInfo lo = netMap.get("lo");
Assert.assertEquals("lo", lo.getName());
Assert.assertEquals(0L, lo.getLastRxBytes());
+ Assert.assertEquals(0L, lo.getLastRxPackets());
+ Assert.assertEquals(0L, lo.getLastTxPackets());
Assert.assertEquals(0L, lo.getLastTxBytes());
Assert.assertEquals(0, lo.getReceiveRate(), 0.0);
+ Assert.assertEquals(0, lo.getReceivePacketsRate(), 0.0);
Assert.assertEquals(0, lo.getSendRate(), 0.0);
+ Assert.assertEquals(0, lo.getSendPacketsRate(), 0.0);
}
@@ -118,13 +129,22 @@ public class TestNetMeter {
Assert.assertEquals("lo", lo.getName());
Assert.assertEquals(0L, lo.getLastRxBytes());
Assert.assertEquals(0L, lo.getLastTxBytes());
+ Assert.assertEquals(0L, lo.getLastRxPackets());
+ Assert.assertEquals(0L, lo.getLastTxPackets());
Assert.assertEquals(0, lo.getReceiveRate(), 0.0);
+ Assert.assertEquals(0, lo.getReceivePacketsRate(), 0.0);
Assert.assertEquals(0, lo.getSendRate(), 0.0);
+ Assert.assertEquals(0, lo.getSendPacketsRate(), 0.0);
+
Assert.assertEquals("eth0", eth0.getName());
- Assert.assertEquals(0L, eth0.getLastTxBytes());
Assert.assertEquals(0L, eth0.getLastRxBytes());
+ Assert.assertEquals(0L, eth0.getLastTxBytes());
+ Assert.assertEquals(0L, eth0.getLastRxPackets());
+ Assert.assertEquals(0L, eth0.getLastTxPackets());
Assert.assertEquals(0, eth0.getReceiveRate(), 0.0);
+ Assert.assertEquals(0, eth0.getReceivePacketsRate(), 0.0);
Assert.assertEquals(0, eth0.getSendRate(), 0.0);
+ Assert.assertEquals(0, eth0.getSendPacketsRate(), 0.0);
list.remove(2);
list.remove(2);
list.add("eth0: 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0");
@@ -134,8 +154,12 @@ public class TestNetMeter {
Assert.assertEquals("eth0", eth0.getName());
Assert.assertEquals(1L, eth0.getLastRxBytes());
Assert.assertEquals(1L, eth0.getLastTxBytes());
+ Assert.assertEquals(1L, eth0.getLastRxPackets());
+ Assert.assertEquals(1L, eth0.getLastTxPackets());
Assert.assertEquals(1, eth0.getReceiveRate(), 0.0);
+ Assert.assertEquals(1, eth0.getReceivePacketsRate(), 0.0);
Assert.assertEquals(1, eth0.getSendRate(), 0.0);
+ Assert.assertEquals(1, eth0.getSendPacketsRate(), 0.0);
}
@@ -156,10 +180,14 @@ public class TestNetMeter {
list.add("eth0: 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0");
List<Measurement> measurements = new ArrayList<>();
netMeter.calcMeasurements(measurements, 0L, 1);
- Assert.assertEquals(2, measurements.size());
+ Assert.assertEquals(4, measurements.size());
Measurement send = measurements.get(0);
- Measurement recv = measurements.get(1);
+ Measurement sendPackets = measurements.get(1);
+ Measurement receive = measurements.get(0);
+ Measurement receivePackets = measurements.get(1);
Assert.assertEquals(1.0, send.value(), 0.0);
- Assert.assertEquals(1.0, recv.value(), 0.0);
+ Assert.assertEquals(1.0, sendPackets.value(), 0.0);
+ Assert.assertEquals(1.0, receive.value(), 0.0);
+ Assert.assertEquals(1.0, receivePackets.value(), 0.0);
}
}
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java
index a07f229..79b20a7 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/meter/os/TestOsMeter.java
@@ -18,6 +18,8 @@ package org.apache.servicecomb.metrics.core.meter.os;
import java.io.File;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
@@ -41,9 +43,9 @@ public class TestOsMeter {
Registry registry = new DefaultRegistry(new ManualClock());
@Test
- public void testCalcMeasurement(@Mocked Runtime runtime) {
+ public void testCalcMeasurement(@Mocked Runtime runtime, @Mocked RuntimeMXBean mxBean) {
List<String> list = new ArrayList<>();
- list.add("cpu 1 1 1 1 1 1 1 1 0 0");
+ list.add("cpu 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1");
list.add("useless");
list.add("eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0");
new MockUp<FileUtils>() {
@@ -52,6 +54,12 @@ public class TestOsMeter {
return list;
}
};
+ new MockUp<ManagementFactory>() {
+ @Mock
+ RuntimeMXBean getRuntimeMXBean() {
+ return mxBean;
+ }
+ };
new MockUp<Runtime>() {
@Mock
public Runtime getRuntime() {
@@ -62,19 +70,24 @@ public class TestOsMeter {
{
runtime.availableProcessors();
result = 2;
+ mxBean.getName();
+ result = "6666@desktop111";
}
};
OsMeter osMeter = new OsMeter(registry);
list.clear();
- list.add("cpu 2 2 2 2 2 2 2 2 0 0");
+ list.add("cpu 2 2 2 2 2 2 2 2 0 0 2 2 2 2 2 2 2 2 2 2");
list.add("useless");
list.add("eth0: 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0");
osMeter.calcMeasurements(1, 1);
ArrayList<Measurement> measurements = Lists.newArrayList(osMeter.measure());
- Assert.assertEquals(3, measurements.size());
+ Assert.assertEquals(6, measurements.size());
Assert.assertEquals(1.75, measurements.get(0).value(), 0.0);
Assert.assertEquals(1.0, measurements.get(1).value(), 0.0);
Assert.assertEquals(1.0, measurements.get(2).value(), 0.0);
+ Assert.assertEquals(1.0, measurements.get(3).value(), 0.0);
+ Assert.assertEquals(1.0, measurements.get(4).value(), 0.0);
+ Assert.assertEquals(1.0, measurements.get(5).value(), 0.0);
}
}
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 81ab22c..95e00db 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
@@ -180,17 +180,31 @@ public class TestDefaultLogPublisher {
model.getThreadPools().put("test", new ThreadPoolPublishModel());
Measurement measurement = new Measurement(null, 0L, 1.0);
- MeasurementNode measurementNodeSend = new MeasurementNode("send", new HashMap<>());
MeasurementNode measurementNodeCpu = new MeasurementNode("cpu", new HashMap<>());
+ MeasurementNode measurementNodeCpuAll = new MeasurementNode("allProcess", new HashMap<>());
+ MeasurementNode measurementNodeCpuProcess = new MeasurementNode("currentProcess", new HashMap<>());
+ MeasurementNode measurementNodeSend = new MeasurementNode("send", new HashMap<>());
+ MeasurementNode measurementNodeSendPacket = new MeasurementNode("sendPackets", new HashMap<>());
MeasurementNode measurementNodeRecv = new MeasurementNode("receive", new HashMap<>());
+ MeasurementNode measurementNodeRecvPacket = new MeasurementNode("receivePackets", new HashMap<>());
MeasurementNode measurementNodeEth0 = new MeasurementNode("eth0", new HashMap<>());
MeasurementNode measurementNodeNet = new MeasurementNode("net", new HashMap<>());
MeasurementNode measurementNodeOs = new MeasurementNode("os", new HashMap<>());
measurementNodeSend.getMeasurements().add(measurement);
measurementNodeRecv.getMeasurements().add(measurement);
+ measurementNodeCpuAll.getMeasurements().add(measurement);
+ measurementNodeCpuProcess.getMeasurements().add(measurement);
+ measurementNodeRecvPacket.getMeasurements().add(measurement);
+ measurementNodeSendPacket.getMeasurements().add(measurement);
+
+ measurementNodeCpu.getChildren().put("allProcess", measurementNodeCpuAll);
+ measurementNodeCpu.getChildren().put("currentProcess", measurementNodeCpuProcess);
measurementNodeEth0.getChildren().put("send", measurementNodeSend);
measurementNodeEth0.getChildren().put("receive", measurementNodeRecv);
+ measurementNodeEth0.getChildren().put("receivePackets", measurementNodeRecvPacket);
+ measurementNodeEth0.getChildren().put("sendPackets", measurementNodeSendPacket);
+
measurementNodeNet.getChildren().put("eth0", measurementNodeEth0);
measurementNodeOs.getChildren().put("cpu", measurementNodeCpu);
measurementNodeOs.getChildren().put("net", measurementNodeNet);
@@ -199,12 +213,7 @@ public class TestDefaultLogPublisher {
measurementNodeNet.getMeasurements().add(measurement);
measurementNodeCpu.getMeasurements().add(measurement);
measurementNodeEth0.getMeasurements().add(measurement);
- new Expectations() {
- {
- tree.findChild(OsMeter.OS_NAME);
- result = measurementNodeOs;
- }
- };
+
new MockUp<PublishModelFactory>() {
@Mock
@@ -217,7 +226,12 @@ public class TestDefaultLogPublisher {
return tree;
}
};
-
+ new Expectations() {
+ {
+ tree.findChild(OsMeter.OS_NAME);
+ result = measurementNodeOs;
+ }
+ };
publisher.onPolledEvent(new PolledEvent(Collections.emptyList(), Collections.emptyList()));
List<LoggingEvent> events = collector.getEvents().stream().filter(e -> {
@@ -227,10 +241,11 @@ public class TestDefaultLogPublisher {
LoggingEvent event = events.get(0);
Assert.assertEquals("\n"
+ "os:\n"
- + " cpu: 100.00%\n"
+ + " cpu:\n"
+ + " all: 100.00% process: 100.00%\n"
+ " net:\n"
- + " send receive interface\n"
- + " 1 B 1 B eth0\n"
+ + " send(Bps) recv(Bps) send(pps) recv(pps) interface\n"
+ + " 1 1 1 1 eth0\n"
+ "vertx:\n"
+ " instances:\n"
+ " name eventLoopContext-created\n"