Forráskód Böngészése

添加 JVM 状态监控代码

reghao 5 éve
szülő
commit
6299242d16
45 módosított fájl, 558 hozzáadás és 150 törlés
  1. 13 0
      common/src/main/java/cn/reghao/autodop/common/stat/app/AppInfo.java
  2. 27 0
      common/src/main/java/cn/reghao/autodop/common/stat/app/BufferPoolInfo.java
  3. 32 0
      common/src/main/java/cn/reghao/autodop/common/stat/app/GarbageCollectorInfo.java
  4. 28 0
      common/src/main/java/cn/reghao/autodop/common/stat/app/JvmInfo.java
  5. 90 0
      common/src/main/java/cn/reghao/autodop/common/stat/app/JvmStat.java
  6. 27 0
      common/src/main/java/cn/reghao/autodop/common/stat/app/MemoryInfo.java
  7. 32 0
      common/src/main/java/cn/reghao/autodop/common/stat/app/MemoryPoolInfo.java
  8. 7 7
      common/src/main/java/cn/reghao/autodop/common/stat/sys/Cpu.java
  9. 5 6
      common/src/main/java/cn/reghao/autodop/common/stat/sys/Disk.java
  10. 10 11
      common/src/main/java/cn/reghao/autodop/common/stat/sys/Memory.java
  11. 9 9
      common/src/main/java/cn/reghao/autodop/common/stat/sys/Network.java
  12. 41 0
      common/src/main/java/cn/reghao/autodop/common/stat/sys/OS.java
  13. 3 3
      common/src/main/java/cn/reghao/autodop/common/stat/sys/Process.java
  14. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/contant/ProcFile.java
  15. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/contant/ProcessState.java
  16. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/contant/TcpState.java
  17. 15 0
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/OSInfo.java
  18. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/ProcessStat.java
  19. 4 4
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/SysStat.java
  20. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/cpu/CpuInfo.java
  21. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/cpu/CpuStat.java
  22. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/cpu/CpuUsage.java
  23. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/disk/DiskInfo.java
  24. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/disk/DiskStat.java
  25. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/disk/DiskUsage.java
  26. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/memory/MemStat.java
  27. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/memory/MemUsage.java
  28. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/memory/MemoryInfo.java
  29. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/network/NetCardStat.java
  30. 2 2
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/network/NetConnStat.java
  31. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/network/NetworkInfo.java
  32. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/AbstractPercentageCalculator.java
  33. 3 3
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/ByteConverter.java
  34. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/ByteType.java
  35. 3 3
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/CpuPercentageCalculator.java
  36. 1 1
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/IpAddressConversion.java
  37. 4 4
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/MemCalculator.java
  38. 64 0
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/TimeConverter.java
  39. 35 0
      common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/TimeType.java
  40. 37 0
      dagent/src/main/java/cn/reghao/autodop/dagent/node/SysStatBeanConfig.java
  41. 17 31
      dagent/src/main/java/cn/reghao/autodop/dagent/node/agent/AgentInfo.java
  42. 0 21
      dagent/src/main/java/cn/reghao/autodop/dagent/node/agent/HardwareInfo.java
  43. 23 0
      dagent/src/main/java/cn/reghao/autodop/dagent/node/agent/MachineInfo.java
  44. 9 9
      dagent/src/main/java/cn/reghao/autodop/dagent/service/MachineStatusScheduler.java
  45. 0 19
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/JavaAppStatus.java

+ 13 - 0
common/src/main/java/cn/reghao/autodop/common/stat/app/AppInfo.java

@@ -0,0 +1,13 @@
+package cn.reghao.autodop.common.stat.app;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2020-10-21 09:37:09
+ */
+@Data
+public class AppInfo {
+    private int pid;
+    private String startTime;
+}

+ 27 - 0
common/src/main/java/cn/reghao/autodop/common/stat/app/BufferPoolInfo.java

@@ -0,0 +1,27 @@
+package cn.reghao.autodop.common.stat.app;
+
+import cn.reghao.autodop.common.stat.sys.utils.ByteConverter;
+import cn.reghao.autodop.common.stat.sys.utils.ByteType;
+import lombok.Data;
+
+import java.lang.management.BufferPoolMXBean;
+
+/**
+ * @author reghao
+ * @date 2020-10-21 15:49:56
+ */
+@Data
+public class BufferPoolInfo {
+    private String poolName;
+    private long bufferCount;
+    private String totalMemory;
+    private String usedMemory;
+
+    public BufferPoolInfo(BufferPoolMXBean bufferPoolBean) {
+        ByteConverter converter = new ByteConverter();
+        this.poolName = bufferPoolBean.getName();
+        this.bufferCount = bufferPoolBean.getCount();
+        this.totalMemory = converter.convert(bufferPoolBean.getTotalCapacity(), ByteType.Byte);
+        this.usedMemory = converter.convert(bufferPoolBean.getMemoryUsed(), ByteType.Byte);
+    }
+}

+ 32 - 0
common/src/main/java/cn/reghao/autodop/common/stat/app/GarbageCollectorInfo.java

@@ -0,0 +1,32 @@
+package cn.reghao.autodop.common.stat.app;
+
+import cn.reghao.autodop.common.stat.sys.utils.TimeConverter;
+import cn.reghao.autodop.common.stat.sys.utils.TimeType;
+import lombok.Data;
+
+import java.lang.management.GarbageCollectorMXBean;
+import java.util.Arrays;
+
+/**
+ * @author reghao
+ * @date 2020-10-21 15:49:56
+ */
+@Data
+public class GarbageCollectorInfo {
+    private String gcName;
+    // GC 管理的内存池
+    private String poolNames;
+    // 自 JVM 启动后总共发生的 GC 次数
+    private long gcCount;
+    // 自 JVM 启动后 GC 总共耗费的时间
+    private long gcTime;
+    //private String gcTime;
+
+    public GarbageCollectorInfo(GarbageCollectorMXBean gcBean) {
+        this.gcName = gcBean.getName();
+        this.poolNames = Arrays.toString(gcBean.getMemoryPoolNames()).replace("[", "").replace("]", "");
+        this.gcCount = gcBean.getCollectionCount();
+        this.gcTime = gcBean.getCollectionCount();
+        //this.gcTime = new TimeConverter().convert(gcBean.getCollectionCount(), TimeType.Millisecond);
+    }
+}

+ 28 - 0
common/src/main/java/cn/reghao/autodop/common/stat/app/JvmInfo.java

@@ -0,0 +1,28 @@
+package cn.reghao.autodop.common.stat.app;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2020-10-21 10:43:37
+ */
+@Data
+public class JvmInfo {
+    private MemoryInfo jvmHeap;
+    private MemoryInfo jvmNonheap;
+
+    private String jvmBufferMemoryUsed;
+    private int jvmBufferCount;
+
+    private int jvmThreadsLive;
+    private int jvmThreadsDaemon;
+    private int jvmThreadsPeak;
+
+    private String jvmGcMemoryAllocated;
+    private String jvmGcMemoryPromoted;
+    private String jvmGcMaxDataSize;
+    private String jvmGcLiveDataSize;
+
+    private long jvmClassesLoaded;
+    private long jvmClassesUnloaded;
+}

+ 90 - 0
common/src/main/java/cn/reghao/autodop/common/stat/app/JvmStat.java

@@ -0,0 +1,90 @@
+package cn.reghao.autodop.common.stat.app;
+
+import cn.reghao.autodop.common.utils.DateTimeUtil;
+
+import java.lang.management.*;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * JVM 状态
+ *
+ * @author reghao
+ * @date 2020-09-10 18:31:16
+ */
+public class JvmStat {
+    private final RuntimeMXBean rtBean;
+    private final ClassLoadingMXBean classLoadingBean;
+    private final ThreadMXBean threadBean;
+    private final MemoryMXBean memoryBean;
+    private final List<MemoryPoolMXBean> memoryPoolBeans;
+    private final List<BufferPoolMXBean> bufferPoolBeans;
+    private final List<GarbageCollectorMXBean> gcBeans;
+
+    public JvmStat() {
+        this.rtBean = ManagementFactory.getRuntimeMXBean();
+        this.classLoadingBean = ManagementFactory.getClassLoadingMXBean();
+        this.threadBean = ManagementFactory.getThreadMXBean();
+        this.memoryBean = ManagementFactory.getMemoryMXBean();
+        this.memoryPoolBeans = ManagementFactory.getMemoryPoolMXBeans();
+        this.bufferPoolBeans = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
+        this.gcBeans = ManagementFactory.getGarbageCollectorMXBeans();
+    }
+
+    public AppInfo info() {
+        AppInfo appInfo = new AppInfo();
+        // TODO pid 不一定准确
+        appInfo.setPid(Integer.parseInt(rtBean.getName().split("@")[0]));
+        appInfo.setStartTime(DateTimeUtil.msTimestampFormat(rtBean.getStartTime()));
+        return appInfo;
+    }
+
+    public JvmInfo jvmInfo() {
+        JvmInfo jvmInfo = new JvmInfo();
+        MemoryUsage heap = memoryBean.getHeapMemoryUsage();
+        jvmInfo.setJvmHeap(new MemoryInfo(heap));
+
+        MemoryUsage nonheap = memoryBean.getNonHeapMemoryUsage();
+        jvmInfo.setJvmNonheap(new MemoryInfo(nonheap));
+
+        jvmInfo.setJvmThreadsLive(threadBean.getThreadCount());
+        jvmInfo.setJvmThreadsDaemon(threadBean.getDaemonThreadCount());
+        jvmInfo.setJvmThreadsPeak(threadBean.getPeakThreadCount());
+
+        jvmInfo.setJvmClassesLoaded(classLoadingBean.getLoadedClassCount());
+        jvmInfo.setJvmClassesUnloaded(classLoadingBean.getUnloadedClassCount());
+        classLoadingBean.getTotalLoadedClassCount();
+
+        return jvmInfo;
+    }
+
+    public List<BufferPoolInfo> bufferPoolInfo() {
+        List<BufferPoolInfo> list = new ArrayList<>();
+        bufferPoolBeans.forEach(bufferPoolBean -> list.add(new BufferPoolInfo(bufferPoolBean)));
+        return list;
+    }
+
+    public List<MemoryPoolInfo> memoryPoolInfo() {
+        List<MemoryPoolInfo> list = new ArrayList<>();
+        memoryPoolBeans.forEach(memoryPoolBean -> list.add(new MemoryPoolInfo(memoryPoolBean)));
+        return list;
+    }
+
+    public List<GarbageCollectorInfo> gcInfo() {
+        List<GarbageCollectorInfo> list = new ArrayList<>();
+        gcBeans.forEach(gcBean -> list.add(new GarbageCollectorInfo(gcBean)));
+        return list;
+    }
+
+    public void threadInfo() {
+        ThreadInfo[] threadInfos = threadBean.getThreadInfo(threadBean.getAllThreadIds());
+        for (ThreadInfo threadInfo : threadInfos) {
+            String name = threadInfo.getThreadName();
+        }
+    }
+
+    public static void main(String[] args) {
+        JvmStat status = new JvmStat();
+        status.threadInfo();
+    }
+}

+ 27 - 0
common/src/main/java/cn/reghao/autodop/common/stat/app/MemoryInfo.java

@@ -0,0 +1,27 @@
+package cn.reghao.autodop.common.stat.app;
+
+import cn.reghao.autodop.common.stat.sys.utils.ByteConverter;
+import cn.reghao.autodop.common.stat.sys.utils.ByteType;
+import lombok.Data;
+
+import java.lang.management.MemoryUsage;
+
+/**
+ * @author reghao
+ * @date 2020-10-21 15:49:56
+ */
+@Data
+public class MemoryInfo {
+    private String init;
+    private String max;
+    private String used;
+    private String committed;
+
+    public MemoryInfo(MemoryUsage memoryUsage) {
+        ByteConverter convert = new ByteConverter();
+        this.init = convert.convert(memoryUsage.getInit(), ByteType.Byte);
+        this.max = convert.convert(memoryUsage.getMax(), ByteType.Byte);
+        this.used = convert.convert(memoryUsage.getUsed(), ByteType.Byte);
+        this.committed = convert.convert(memoryUsage.getCommitted(), ByteType.Byte);
+    }
+}

+ 32 - 0
common/src/main/java/cn/reghao/autodop/common/stat/app/MemoryPoolInfo.java

@@ -0,0 +1,32 @@
+package cn.reghao.autodop.common.stat.app;
+
+import lombok.Data;
+
+import java.lang.management.MemoryPoolMXBean;
+import java.lang.management.MemoryUsage;
+
+/**
+ * @author reghao
+ * @date 2020-10-21 15:49:56
+ */
+@Data
+public class MemoryPoolInfo {
+    private String poolName;
+    private String memoryType;
+    private MemoryInfo poolUsage;
+    // 内存池峰值时的使用情况
+    private MemoryInfo poolPeakUsage;
+    // 最近一次 GC 后的内存池的使用情况
+    private MemoryInfo afterGcUsage;
+
+    public MemoryPoolInfo(MemoryPoolMXBean memoryPoolBean) {
+        this.poolName = memoryPoolBean.getName();
+        this.memoryType = memoryPoolBean.getType().name();
+        this.poolUsage = new MemoryInfo(memoryPoolBean.getUsage());
+        this.poolPeakUsage = new MemoryInfo(memoryPoolBean.getPeakUsage());
+        MemoryUsage collectionMemoryUsage = memoryPoolBean.getCollectionUsage();
+        if (collectionMemoryUsage != null) {
+            this.afterGcUsage = new MemoryInfo(collectionMemoryUsage);
+        }
+    }
+}

+ 7 - 7
common/src/main/java/cn/reghao/autodop/common/sysstat/Cpu.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/Cpu.java

@@ -1,11 +1,11 @@
-package cn.reghao.autodop.common.sysstat;
+package cn.reghao.autodop.common.stat.sys;
 
-import cn.reghao.autodop.common.sysstat.contant.ProcFile;
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuInfo;
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuStat;
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuUsage;
-import cn.reghao.autodop.common.sysstat.utils.AbstractPercentageCalculator;
-import cn.reghao.autodop.common.sysstat.utils.CpuPercentageCalculator;
+import cn.reghao.autodop.common.stat.sys.contant.ProcFile;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuInfo;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuStat;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuUsage;
+import cn.reghao.autodop.common.stat.sys.utils.AbstractPercentageCalculator;
+import cn.reghao.autodop.common.stat.sys.utils.CpuPercentageCalculator;
 import cn.reghao.autodop.common.utils.text.TextFile;
 import lombok.extern.slf4j.Slf4j;
 

+ 5 - 6
common/src/main/java/cn/reghao/autodop/common/sysstat/Disk.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/Disk.java

@@ -1,9 +1,8 @@
-package cn.reghao.autodop.common.sysstat;
+package cn.reghao.autodop.common.stat.sys;
 
-import cn.reghao.autodop.common.sysstat.pojo.disk.DiskInfo;
-import cn.reghao.autodop.common.sysstat.utils.ByteConvert;
-import cn.reghao.autodop.common.sysstat.utils.ByteType;
-import cn.reghao.autodop.common.utils.text.TextFile;
+import cn.reghao.autodop.common.stat.sys.pojo.disk.DiskInfo;
+import cn.reghao.autodop.common.stat.sys.utils.ByteConverter;
+import cn.reghao.autodop.common.stat.sys.utils.ByteType;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.IOException;
@@ -30,7 +29,7 @@ public class Disk {
      */
     public List<DiskInfo> info() {
         List<DiskInfo> list = new ArrayList<>();
-        ByteConvert convert = new ByteConvert();
+        ByteConverter convert = new ByteConverter();
         FileSystem fs = FileSystems.getDefault();
 
         fs.getFileStores().forEach(fileStore -> {

+ 10 - 11
common/src/main/java/cn/reghao/autodop/common/sysstat/Memory.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/Memory.java

@@ -1,15 +1,14 @@
-package cn.reghao.autodop.common.sysstat;
+package cn.reghao.autodop.common.stat.sys;
 
-import cn.reghao.autodop.common.sysstat.contant.ProcFile;
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemStat;
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemUsage;
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemoryInfo;
-import cn.reghao.autodop.common.sysstat.utils.AbstractPercentageCalculator;
-import cn.reghao.autodop.common.sysstat.utils.ByteConvert;
-import cn.reghao.autodop.common.sysstat.utils.ByteType;
-import cn.reghao.autodop.common.sysstat.utils.MemCalculator;
+import cn.reghao.autodop.common.stat.sys.contant.ProcFile;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemStat;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemUsage;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemoryInfo;
+import cn.reghao.autodop.common.stat.sys.utils.AbstractPercentageCalculator;
+import cn.reghao.autodop.common.stat.sys.utils.ByteConverter;
+import cn.reghao.autodop.common.stat.sys.utils.ByteType;
+import cn.reghao.autodop.common.stat.sys.utils.MemCalculator;
 import cn.reghao.autodop.common.utils.text.TextFile;
-import lombok.extern.slf4j.Slf4j;
 
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -26,7 +25,7 @@ public class Memory {
     private TextFile textFile = new TextFile();
 
     public MemoryInfo info() {
-        ByteConvert convert = new ByteConvert();
+        ByteConverter convert = new ByteConverter();
         Map<String, String> map = parseMemInfo();
 
         double total = Double.parseDouble(map.get("MemTotal").split("kB")[0]);

+ 9 - 9
common/src/main/java/cn/reghao/autodop/common/sysstat/Network.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/Network.java

@@ -1,12 +1,12 @@
-package cn.reghao.autodop.common.sysstat;
-
-import cn.reghao.autodop.common.sysstat.contant.ProcFile;
-import cn.reghao.autodop.common.sysstat.contant.TcpState;
-import cn.reghao.autodop.common.sysstat.pojo.network.NetCardStat;
-import cn.reghao.autodop.common.sysstat.pojo.network.NetConnStat;
-import cn.reghao.autodop.common.sysstat.pojo.ProcessStat;
-import cn.reghao.autodop.common.sysstat.pojo.network.NetworkInfo;
-import cn.reghao.autodop.common.sysstat.utils.IpAddressConversion;
+package cn.reghao.autodop.common.stat.sys;
+
+import cn.reghao.autodop.common.stat.sys.contant.ProcFile;
+import cn.reghao.autodop.common.stat.sys.contant.TcpState;
+import cn.reghao.autodop.common.stat.sys.pojo.network.NetCardStat;
+import cn.reghao.autodop.common.stat.sys.pojo.network.NetConnStat;
+import cn.reghao.autodop.common.stat.sys.pojo.ProcessStat;
+import cn.reghao.autodop.common.stat.sys.pojo.network.NetworkInfo;
+import cn.reghao.autodop.common.stat.sys.utils.IpAddressConversion;
 import cn.reghao.autodop.common.utils.StringUtil;
 import cn.reghao.autodop.common.utils.text.TextFile;
 

+ 41 - 0
common/src/main/java/cn/reghao/autodop/common/stat/sys/OS.java

@@ -0,0 +1,41 @@
+package cn.reghao.autodop.common.stat.sys;
+
+import cn.reghao.autodop.common.stat.sys.contant.ProcFile;
+import cn.reghao.autodop.common.stat.sys.pojo.OSInfo;
+import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.utils.text.TextFile;
+
+/**
+ * @author reghao
+ * @date 2020-10-20 23:17:30
+ */
+public class OS {
+    private TextFile textFile = new TextFile();
+
+    public OSInfo info() {
+        OSInfo osInfo = new OSInfo();
+        osInfo.setOsName(System.getProperty("os.name"));
+        osInfo.setOsArch(System.getProperty("os.arch"));
+        osInfo.setOsVersion(System.getProperty("os.version"));
+        osInfo.setBootTime(bootTime());
+        return osInfo;
+    }
+
+    private String bootTime() {
+        String info = textFile.readFile(ProcFile.CPU_STAT);
+        for (String line : info.split(System.lineSeparator())) {
+            if (line.startsWith("btime")) {
+                long btime = Long.parseLong(line.split("\\s+")[1]);
+                return DateTimeUtil.msTimestampFormat(btime*1000);
+            }
+        }
+
+        return null;
+    }
+
+    public static void main(String[] args) {
+        OS os = new OS();
+        OSInfo osInfo = os.info();
+        System.out.println();
+    }
+}

+ 3 - 3
common/src/main/java/cn/reghao/autodop/common/sysstat/Process.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/Process.java

@@ -1,7 +1,7 @@
-package cn.reghao.autodop.common.sysstat;
+package cn.reghao.autodop.common.stat.sys;
 
-import cn.reghao.autodop.common.sysstat.contant.ProcFile;
-import cn.reghao.autodop.common.sysstat.pojo.ProcessStat;
+import cn.reghao.autodop.common.stat.sys.contant.ProcFile;
+import cn.reghao.autodop.common.stat.sys.pojo.ProcessStat;
 import cn.reghao.autodop.common.utils.text.TextFile;
 import lombok.extern.slf4j.Slf4j;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/contant/ProcFile.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/contant/ProcFile.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.contant;
+package cn.reghao.autodop.common.stat.sys.contant;
 
 /**
  * /proc 文件系统中的文件路径

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/contant/ProcessState.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/contant/ProcessState.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.contant;
+package cn.reghao.autodop.common.stat.sys.contant;
 
 /**
  * 进程状态

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/contant/TcpState.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/contant/TcpState.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.contant;
+package cn.reghao.autodop.common.stat.sys.contant;
 
 /**
  * TCP 状态

+ 15 - 0
common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/OSInfo.java

@@ -0,0 +1,15 @@
+package cn.reghao.autodop.common.stat.sys.pojo;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2020-10-20 23:16:42
+ */
+@Data
+public class OSInfo {
+    private String osName;
+    private String osArch;
+    private String osVersion;
+    private String bootTime;
+}

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/ProcessStat.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/ProcessStat.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo;
+package cn.reghao.autodop.common.stat.sys.pojo;
 
 import lombok.Data;
 

+ 4 - 4
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/SysStat.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/SysStat.java

@@ -1,8 +1,8 @@
-package cn.reghao.autodop.common.sysstat.pojo;
+package cn.reghao.autodop.common.stat.sys.pojo;
 
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuUsage;
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemUsage;
-import cn.reghao.autodop.common.sysstat.pojo.network.NetConnStat;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuUsage;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemUsage;
+import cn.reghao.autodop.common.stat.sys.pojo.network.NetConnStat;
 import lombok.Data;
 
 import java.util.List;

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/cpu/CpuInfo.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/cpu/CpuInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.cpu;
+package cn.reghao.autodop.common.stat.sys.pojo.cpu;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/cpu/CpuStat.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/cpu/CpuStat.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.cpu;
+package cn.reghao.autodop.common.stat.sys.pojo.cpu;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/cpu/CpuUsage.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/cpu/CpuUsage.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.cpu;
+package cn.reghao.autodop.common.stat.sys.pojo.cpu;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/disk/DiskInfo.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/disk/DiskInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.disk;
+package cn.reghao.autodop.common.stat.sys.pojo.disk;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/disk/DiskStat.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/disk/DiskStat.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.disk;
+package cn.reghao.autodop.common.stat.sys.pojo.disk;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/disk/DiskUsage.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/disk/DiskUsage.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.disk;
+package cn.reghao.autodop.common.stat.sys.pojo.disk;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/memory/MemStat.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/memory/MemStat.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.memory;
+package cn.reghao.autodop.common.stat.sys.pojo.memory;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/memory/MemUsage.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/memory/MemUsage.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.memory;
+package cn.reghao.autodop.common.stat.sys.pojo.memory;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/memory/MemoryInfo.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/memory/MemoryInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.memory;
+package cn.reghao.autodop.common.stat.sys.pojo.memory;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/network/NetCardStat.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/network/NetCardStat.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.network;
+package cn.reghao.autodop.common.stat.sys.pojo.network;
 
 import lombok.Data;
 

+ 2 - 2
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/network/NetConnStat.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/network/NetConnStat.java

@@ -1,6 +1,6 @@
-package cn.reghao.autodop.common.sysstat.pojo.network;
+package cn.reghao.autodop.common.stat.sys.pojo.network;
 
-import cn.reghao.autodop.common.sysstat.contant.TcpState;
+import cn.reghao.autodop.common.stat.sys.contant.TcpState;
 import lombok.Data;
 
 /**

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/pojo/network/NetworkInfo.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/pojo/network/NetworkInfo.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.pojo.network;
+package cn.reghao.autodop.common.stat.sys.pojo.network;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/utils/AbstractPercentageCalculator.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/AbstractPercentageCalculator.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.utils;
+package cn.reghao.autodop.common.stat.sys.utils;
 
 import java.text.DecimalFormat;
 

+ 3 - 3
common/src/main/java/cn/reghao/autodop/common/sysstat/utils/ByteConvert.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/ByteConverter.java

@@ -1,14 +1,14 @@
-package cn.reghao.autodop.common.sysstat.utils;
+package cn.reghao.autodop.common.stat.sys.utils;
 
 import java.text.DecimalFormat;
 
 /**
- * 字节转换
+ * 字节单位转换
  *
  * @author reghao
  * @date 2019-10-26 22:39:23
  */
-public class ByteConvert {
+public class ByteConverter {
     private DecimalFormat df = new DecimalFormat("0.00");
     private final double size = 1024.00;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/utils/ByteType.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/ByteType.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.utils;
+package cn.reghao.autodop.common.stat.sys.utils;
 
 /**
  * @author reghao

+ 3 - 3
common/src/main/java/cn/reghao/autodop/common/sysstat/utils/CpuPercentageCalculator.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/CpuPercentageCalculator.java

@@ -1,7 +1,7 @@
-package cn.reghao.autodop.common.sysstat.utils;
+package cn.reghao.autodop.common.stat.sys.utils;
 
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuStat;
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuUsage;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuStat;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuUsage;
 
 /**
  * @author reghao

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/sysstat/utils/IpAddressConversion.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/IpAddressConversion.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.sysstat.utils;
+package cn.reghao.autodop.common.stat.sys.utils;
 
 /**
  * IP 地址转换

+ 4 - 4
common/src/main/java/cn/reghao/autodop/common/sysstat/utils/MemCalculator.java → common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/MemCalculator.java

@@ -1,14 +1,14 @@
-package cn.reghao.autodop.common.sysstat.utils;
+package cn.reghao.autodop.common.stat.sys.utils;
 
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemStat;
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemUsage;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemStat;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemUsage;
 
 /**
  * @author reghao
  * @date 2019-10-29 13:03:43
  */
 public class MemCalculator extends AbstractPercentageCalculator<MemStat> {
-    private ByteConvert convert = new ByteConvert();
+    private ByteConverter convert = new ByteConverter();
 
     @Override
     public Object format(MemStat stat1, MemStat stat2) {

+ 64 - 0
common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/TimeConverter.java

@@ -0,0 +1,64 @@
+package cn.reghao.autodop.common.stat.sys.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 时间单位转换器
+ *
+ * @author reghao
+ * @date 2019-10-26 22:39:23
+ */
+public class TimeConverter {
+    private final long size = 1000;
+
+    /**
+     * TODO 尚未实现
+     * @param source 源数据
+     * @param type 源数据单位(Byte, KiB, MiB 等)
+     * @return 值在 1000 范围内的数据(KiB, MiB, GiB 等)
+     * @date 2020-10-20 上午11:26
+     */
+    public String convert(long source, TimeType type) {
+        Map<Integer, String> map = new HashMap<>();
+        int index = type.getIndex();
+        while (source > size) {
+            source = divide(source, type(index), map);
+            index++;
+        }
+        type = type(index);
+        assert type != null;
+        map.put(type.getIndex(), source + type.getKey());
+
+        StringBuilder sb = new StringBuilder();
+        map.forEach((key, value) -> {
+            sb.append(value);
+        });
+
+        return sb.toString();
+    }
+
+    private TimeType type(int index) {
+        for (TimeType type : TimeType.values()) {
+            if (type.getIndex() == index) {
+                return type;
+            }
+        }
+
+        return null;
+    }
+
+    private long divide(long value, TimeType type, Map<Integer, String> map) {
+        long mod = value%size;
+        if (mod != 0) {
+            map.put(type.getIndex(), mod + type.getKey());
+        }
+        return value/size;
+    }
+
+    public static void main(String[] args) {
+        long ms = 1009L;
+        TimeConverter converter = new TimeConverter();
+        System.out.println(converter.convert(ms, TimeType.Millisecond));
+    }
+}

+ 35 - 0
common/src/main/java/cn/reghao/autodop/common/stat/sys/utils/TimeType.java

@@ -0,0 +1,35 @@
+package cn.reghao.autodop.common.stat.sys.utils;
+
+/**
+ * @author reghao
+ * @date 2019-10-29 16:23:15
+ */
+public enum TimeType {
+    Millisecond("毫秒", 0, 1),
+    Second("秒", 1, 1000),
+    Minute("分钟", 2, 60*1000),
+    Hour("小时", 3, 60*60*1000),
+    Day("天", 4, 60*60*24*1000);
+
+    private String key;
+    private int index;
+    private long value;
+
+    TimeType(String key, int index, long value) {
+        this.key = key;
+        this.index = index;
+        this.value = value;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public long getValue() {
+        return value;
+    }
+}

+ 37 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/node/SysStatBeanConfig.java

@@ -0,0 +1,37 @@
+package cn.reghao.autodop.dagent.node;
+
+import cn.reghao.autodop.common.stat.sys.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author reghao
+ * @date 2020-10-20 21:02:31
+ */
+@Configuration
+public class SysStatBeanConfig {
+    @Bean
+    public OS os() {
+        return new OS();
+    }
+
+    @Bean
+    public Cpu cpu() {
+        return new Cpu();
+    }
+
+    @Bean
+    public Memory memory() {
+        return new Memory();
+    }
+
+    @Bean
+    public Disk disk() {
+        return new Disk();
+    }
+
+    @Bean
+    public Network network() {
+        return new Network();
+    }
+}

+ 17 - 31
dagent/src/main/java/cn/reghao/autodop/dagent/node/agent/AgentInfo.java

@@ -1,16 +1,10 @@
 package cn.reghao.autodop.dagent.node.agent;
 
-import cn.reghao.autodop.common.sysstat.Cpu;
-import cn.reghao.autodop.common.sysstat.Disk;
-import cn.reghao.autodop.common.sysstat.Memory;
-import cn.reghao.autodop.common.sysstat.Network;
-import cn.reghao.autodop.common.utils.DateTimeUtil;
+import cn.reghao.autodop.common.stat.sys.*;
+import cn.reghao.autodop.common.stat.app.AppInfo;
+import cn.reghao.autodop.common.stat.app.JvmStat;
 import lombok.Data;
 
-import java.lang.management.ManagementFactory;
-import java.lang.management.OperatingSystemMXBean;
-import java.lang.management.RuntimeMXBean;
-
 /**
  * @author reghao
  * @date 2020-10-19 14:40:12
@@ -19,40 +13,32 @@ import java.lang.management.RuntimeMXBean;
 public class AgentInfo {
     private String agentId;
     private String agentAddress;
-    private String startTime;
-    private String os;
-    private String osUptime;
-    private HardwareInfo hardwareInfo;
+    private MachineInfo machineInfo;
+    private AppInfo appInfo;
 
     public AgentInfo() {
-        RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
-        long startTime = rt.getStartTime();
-        this.startTime = DateTimeUtil.msTimestampFormat(startTime);
         hardwareInfo();
-        osInfo();
-    }
-
-    private void osInfo() {
-        this.os = System.getProperty("os.name");
-        OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
-        osBean.getArch();
+        appInfo();
     }
 
     private void hardwareInfo() {
+        OS os = new OS();
         Cpu cpu = new Cpu();
         Memory memory = new Memory();
         Disk disk = new Disk();
         Network network = new Network();
 
-        HardwareInfo hardwareInfo = new HardwareInfo();
-        hardwareInfo.setCpu(cpu.info());
-        hardwareInfo.setMemory(memory.info());
-        hardwareInfo.setDisk(disk.info());
-        hardwareInfo.setNetwork(network.info());
-        this.hardwareInfo = hardwareInfo;
+        MachineInfo machineInfo = new MachineInfo();
+        machineInfo.setOs(os.info());
+        machineInfo.setCpu(cpu.info());
+        machineInfo.setMemory(memory.info());
+        machineInfo.setDisk(disk.info());
+        machineInfo.setNetwork(network.info());
+        this.machineInfo = machineInfo;
     }
 
-    public static void main(String[] args) {
-        AgentInfo agentInfo = new AgentInfo();
+    private void appInfo() {
+        JvmStat status = new JvmStat();
+        this.appInfo = status.info();
     }
 }

+ 0 - 21
dagent/src/main/java/cn/reghao/autodop/dagent/node/agent/HardwareInfo.java

@@ -1,21 +0,0 @@
-package cn.reghao.autodop.dagent.node.agent;
-
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuInfo;
-import cn.reghao.autodop.common.sysstat.pojo.disk.DiskInfo;
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemoryInfo;
-import cn.reghao.autodop.common.sysstat.pojo.network.NetworkInfo;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2020-10-20 09:33:43
- */
-@Data
-public class HardwareInfo {
-    private CpuInfo cpu;
-    private MemoryInfo memory;
-    private List<DiskInfo> disk;
-    private List<NetworkInfo> network;
-}

+ 23 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/node/agent/MachineInfo.java

@@ -0,0 +1,23 @@
+package cn.reghao.autodop.dagent.node.agent;
+
+import cn.reghao.autodop.common.stat.sys.pojo.OSInfo;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuInfo;
+import cn.reghao.autodop.common.stat.sys.pojo.disk.DiskInfo;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemoryInfo;
+import cn.reghao.autodop.common.stat.sys.pojo.network.NetworkInfo;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2020-10-20 09:33:43
+ */
+@Data
+public class MachineInfo {
+    private OSInfo os;
+    private CpuInfo cpu;
+    private MemoryInfo memory;
+    private List<DiskInfo> disk;
+    private List<NetworkInfo> network;
+}

+ 9 - 9
dagent/src/main/java/cn/reghao/autodop/dagent/service/MachineStatusScheduler.java

@@ -1,14 +1,14 @@
 package cn.reghao.autodop.dagent.service;
 
-import cn.reghao.autodop.common.sysstat.Cpu;
-import cn.reghao.autodop.common.sysstat.Memory;
-import cn.reghao.autodop.common.sysstat.Network;
-import cn.reghao.autodop.common.sysstat.Process;
-import cn.reghao.autodop.common.sysstat.pojo.ProcessStat;
-import cn.reghao.autodop.common.sysstat.pojo.SysStat;
-import cn.reghao.autodop.common.sysstat.pojo.cpu.CpuUsage;
-import cn.reghao.autodop.common.sysstat.pojo.memory.MemUsage;
-import cn.reghao.autodop.common.sysstat.pojo.network.NetConnStat;
+import cn.reghao.autodop.common.stat.sys.Cpu;
+import cn.reghao.autodop.common.stat.sys.Memory;
+import cn.reghao.autodop.common.stat.sys.Network;
+import cn.reghao.autodop.common.stat.sys.Process;
+import cn.reghao.autodop.common.stat.sys.pojo.ProcessStat;
+import cn.reghao.autodop.common.stat.sys.pojo.SysStat;
+import cn.reghao.autodop.common.stat.sys.pojo.cpu.CpuUsage;
+import cn.reghao.autodop.common.stat.sys.pojo.memory.MemUsage;
+import cn.reghao.autodop.common.stat.sys.pojo.network.NetConnStat;
 import cn.reghao.autodop.common.mq.MqMessage;
 import cn.reghao.autodop.common.mq.MsgType;
 import cn.reghao.autodop.common.utils.NetworkUtil;

+ 0 - 19
dagent/src/main/java/cn/reghao/autodop/dagent/utils/JavaAppStatus.java

@@ -1,19 +0,0 @@
-package cn.reghao.autodop.dagent.utils;
-
-import cn.reghao.autodop.common.utils.DateTimeUtil;
-
-import java.lang.management.ManagementFactory;
-import java.lang.management.RuntimeMXBean;
-
-/**
- * @author reghao
- * @date 2020-09-10 18:31:16
- */
-public class JavaAppStatus {
-    public static void main(String[] args) {
-        RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
-        long startTime = rt.getStartTime();
-        String datetime = DateTimeUtil.msTimestampFormat(startTime);
-        System.out.println();
-    }
-}