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:33 UTC

[servicecomb-java-chassis] 04/04: [SCB-1044]add current process CPU rate and net packets in the metrics: fix details

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 6c1df294382f12bbea3c87f4143fb40fe6f9f532
Author: heyile <25...@qq.com>
AuthorDate: Tue Dec 4 22:44:35 2018 +0800

    [SCB-1044]add current process CPU rate  and net packets in the metrics: fix details
---
 .../apache/servicecomb/metrics/core/meter/os/CpuMeter.java | 14 ++------------
 .../apache/servicecomb/metrics/core/meter/os/NetMeter.java |  9 +++------
 .../servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java  |  2 --
 .../metrics/core/meter/os/net/InterfaceUsage.java          |  7 +++++++
 .../servicecomb/metrics/core/meter/os/net/NetStat.java     |  1 -
 .../metrics/core/publish/DefaultLogPublisher.java          |  4 ++--
 .../metrics/core/publish/TestDefaultLogPublisher.java      |  4 ++--
 7 files changed, 16 insertions(+), 25 deletions(-)

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 4a64715..6edcf1b 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
@@ -21,18 +21,11 @@ import java.util.List;
 import org.apache.servicecomb.metrics.core.meter.os.cpu.OsCpuUsage;
 import org.apache.servicecomb.metrics.core.meter.os.cpu.ProcessCpuUsage;
 
-import com.google.common.annotations.VisibleForTesting;
-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 {
 
-  public static final Tag TAG_All = new BasicTag(OsMeter.OS_TYPE, OsMeter.OS_TYPE_ALL_CPU);
-
-  public static final Tag TAG_CURRENT = new BasicTag(OsMeter.OS_TYPE, OsMeter.OS_TYPE_PROCESS_CPU);
-
   // read from /proc/stat
   private OsCpuUsage allCpuUsage;
 
@@ -40,8 +33,8 @@ public class CpuMeter {
   private ProcessCpuUsage processCpuUsage;
 
   public CpuMeter(Id id) {
-    allCpuUsage = new OsCpuUsage(id.withTag(TAG_All));
-    processCpuUsage = new ProcessCpuUsage(id.withTag(TAG_CURRENT));
+    allCpuUsage = new OsCpuUsage(id.withTag(OsMeter.OS_TYPE, OsMeter.OS_TYPE_ALL_CPU));
+    processCpuUsage = new ProcessCpuUsage(id.withTag(OsMeter.OS_TYPE, OsMeter.OS_TYPE_PROCESS_CPU));
 
     //must refresh all first
     update();
@@ -55,19 +48,16 @@ public class CpuMeter {
     measurements.add(new Measurement(processCpuUsage.getId(), msNow, processCpuUsage.getUsage()));
   }
 
-  @VisibleForTesting
   public void update() {
     allCpuUsage.update();
     processCpuUsage.setPeriodTotalTime(allCpuUsage.getPeriodTotalTime());
     processCpuUsage.update();
   }
 
-  @VisibleForTesting
   public OsCpuUsage getAllCpuUsage() {
     return allCpuUsage;
   }
 
-  @VisibleForTesting
   public ProcessCpuUsage getProcessCpuUsage() {
     return processCpuUsage;
   }
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 acfe1c7..e6fa13e 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
@@ -31,7 +31,6 @@ import org.apache.servicecomb.metrics.core.meter.os.net.NetStat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.netflix.spectator.api.BasicTag;
 import com.netflix.spectator.api.Id;
 import com.netflix.spectator.api.Measurement;
@@ -68,10 +67,9 @@ public class NetMeter {
   public void calcMeasurements(List<Measurement> measurements, long msNow, long secondInterval) {
     refreshNet(secondInterval);
 
-    interfaceUsageMap.values().stream()
-        .flatMap(interfaceUsage -> interfaceUsage.getNetStats().stream())
-        .map(netStat -> new Measurement(netStat.getId(), msNow, netStat.getRate()))
-        .forEach(measurements::add);
+    interfaceUsageMap.values().forEach(interfaceUsage -> {
+      interfaceUsage.calcMeasurements(measurements, msNow);
+    });
   }
 
 
@@ -114,7 +112,6 @@ public class NetMeter {
     }
   }
 
-  @VisibleForTesting
   public Map<String, InterfaceUsage> getInterfaceUsageMap() {
     return interfaceUsageMap;
   }
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java
index aa9de7e..48b9a8c 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/cpu/OsCpuUsage.java
@@ -16,7 +16,6 @@
  */
 package org.apache.servicecomb.metrics.core.meter.os.cpu;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.netflix.spectator.api.Id;
 
 /*
@@ -61,7 +60,6 @@ public class OsCpuUsage extends AbstractCpuUsage {
     return currentTotalTime - Long.parseLong(stats[4]);
   }
 
-  @VisibleForTesting
   public long getLastTotalTime() {
     return lastTotalTime;
   }
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java
index d6f1ac7..1fa8a7b 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/InterfaceUsage.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import com.netflix.spectator.api.Id;
+import com.netflix.spectator.api.Measurement;
 
 public class InterfaceUsage {
   private final String name;
@@ -50,6 +51,12 @@ public class InterfaceUsage {
     netStats.add(new NetStat(id.withTag(TAG_PACKETS_SEND), 9));
   }
 
+  public void calcMeasurements(List<Measurement> measurements, long msNow) {
+    netStats.forEach(netStat -> {
+      measurements.add(new Measurement(netStat.getId(), msNow, netStat.getRate()));
+    });
+  }
+
   public void update(String interfaceData, long secondInterval) {
     String[] netInfo = interfaceData.trim().split("\\s+");
     netStats.forEach(netStat -> netStat.update(netInfo, secondInterval));
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/NetStat.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/NetStat.java
index ed6bbe0..f80a908 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/NetStat.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/meter/os/net/NetStat.java
@@ -29,7 +29,6 @@ public class NetStat {
   // Bps/pps
   private double rate;
 
-
   public NetStat(Id id, int index) {
     this.id = id;
     this.index = index;
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 10635b6..7b3b488 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
@@ -140,7 +140,7 @@ public class DefaultLogPublisher implements MetricsInitializer {
     }
 
     appendLine(sb, "  net:");
-    appendLine(sb, "    send(Bps)    recv(Bps)    send(pps)    recv(pps)      interface");
+    appendLine(sb, "    send(Bps)    recv(Bps)    send(pps)    recv(pps)    interface");
 
     StringBuilder tmpSb = new StringBuilder();
     for (MeasurementNode interfaceNode : netNode.getChildren().values()) {
@@ -152,7 +152,7 @@ public class DefaultLogPublisher implements MetricsInitializer {
         continue;
       }
 
-      appendLine(tmpSb, "    %-12s %-12s %-12s %-14s %s",
+      appendLine(tmpSb, "    %-12s %-12s %-12s %-12s %s",
           NetUtils.humanReadableBytes((long) sendRate),
           NetUtils.humanReadableBytes((long) receiveRate),
           NetUtils.humanReadableBytes((long) sendPacketsRate),
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 20d743c..81f29dc 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
@@ -240,8 +240,8 @@ public class TestDefaultLogPublisher {
             + "  cpu:\n"
             + "    all: 100.00%    process: 100.00%\n"
             + "  net:\n"
-            + "    send(Bps)    recv(Bps)    send(pps)    recv(pps)      interface\n"
-            + "    1            1            1            1              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"