public static List<ServerInfoFormMap> cpuInfos(Sigar sigar) {
   List<ServerInfoFormMap> monitorMaps = new ArrayList<ServerInfoFormMap>();
   try {
     CpuPerc cpuList[] = sigar.getCpuPercList();
     for (CpuPerc cpuPerc : cpuList) {
       ServerInfoFormMap monitorMap = new ServerInfoFormMap();
       monitorMap.put("cpuUserUse", Math.round(cpuPerc.getUser() * 100)); // 用户使用率
       monitorMap.put("cpuSysUse", Math.round(cpuPerc.getSys() * 100)); // 系统使用率
       monitorMap.put("cpuWait", Math.round(cpuPerc.getWait() * 100)); // 当前等待率
       monitorMap.put("cpuFree", Math.round(cpuPerc.getIdle() * 100)); // 当前空闲率
       monitorMap.put("cpuTotal", Math.round(cpuPerc.getCombined() * 100)); // 总的使用率
       monitorMaps.add(monitorMap);
     }
   } catch (Exception e) {
   }
   return monitorMaps;
 }
 public List<ServerInfoFormMap> diskInfos(Sigar sigar) throws Exception {
   List<ServerInfoFormMap> monitorMaps = new ArrayList<ServerInfoFormMap>();
   FileSystem fslist[] = sigar.getFileSystemList();
   for (int i = 0; i < fslist.length; i++) {
     ServerInfoFormMap monitorMap = new ServerInfoFormMap();
     FileSystem fs = fslist[i];
     // 文件系统类型名,比如本地硬盘、光驱、网络文件系统等
     FileSystemUsage usage = null;
     usage = sigar.getFileSystemUsage(fs.getDirName());
     switch (fs.getType()) {
       case 0: // TYPE_UNKNOWN :未知
         break;
       case 1: // TYPE_NONE
         break;
       case 2: // TYPE_LOCAL_DISK : 本地硬盘
         monitorMap.put("diskName", fs.getDevName()); // 系统盘名称
         monitorMap.put("diskType", fs.getSysTypeName()); // 盘类型
         // 文件系统总大小
         monitorMap.put("diskTotal", fs.getSysTypeName());
         // 文件系统剩余大小
         monitorMap.put("diskFree", usage.getFree());
         // 文件系统已经使用量
         monitorMap.put("diskUse", usage.getUsed());
         double usePercent = usage.getUsePercent() * 100D;
         // 文件系统资源的利用率
         monitorMap.put("diskUsage", usePercent); // 内存使用率
         monitorMaps.add(monitorMap);
         break;
       case 3: // TYPE_NETWORK :网络
         break;
       case 4: // TYPE_RAM_DISK :闪存
         break;
       case 5: // TYPE_CDROM :光驱
         break;
       case 6: // TYPE_SWAP :页面交换
         break;
     }
   }
   return monitorMaps;
 }
  public static ServerInfoFormMap usage(Sigar sigar) {
    ServerInfoFormMap monitorMap = new ServerInfoFormMap();
    try {
      Runtime r = Runtime.getRuntime();
      monitorMap.put(
          "jvmUsage",
          Math.round(
              Common.div(r.totalMemory() - r.freeMemory(), r.totalMemory(), 2) * 100)); // JVM使用率

      Mem mem = sigar.getMem();
      // 内存总量
      monitorMap.put(
          "ramUsage", Math.round(Common.div(mem.getUsed(), mem.getTotal(), 2) * 100)); // 内存使用率

      List<ServerInfoFormMap> cpu = cpuInfos(sigar);
      double b = 0.0;
      for (ServerInfoFormMap m : cpu) {
        b += Double.valueOf(m.get("cpuTotal") + "");
      }
      monitorMap.put("cpuUsage", Math.round(b / cpu.size())); // cpu使用率
    } catch (Exception e) {
    }
    return monitorMap;
  }
  public static ServerInfoFormMap memory(Sigar sigar) {
    ServerInfoFormMap monitorMap = new ServerInfoFormMap();
    try {
      Runtime r = Runtime.getRuntime();
      monitorMap.put("jvmTotal", Common.div(r.totalMemory(), (1024 * 1024), 2) + "M"); // java总内存
      monitorMap.put(
          "jvmUse",
          Common.div(r.totalMemory() - r.freeMemory(), (1024 * 1024), 2) + "M"); // JVM使用内存
      monitorMap.put("jvmFree", Common.div(r.freeMemory(), (1024 * 1024), 2) + "M"); // JVM剩余内存
      monitorMap.put(
          "jvmUsage", Common.div(r.totalMemory() - r.freeMemory(), r.totalMemory(), 2)); // JVM使用率

      Mem mem = sigar.getMem();
      // 内存总量
      monitorMap.put("ramTotal", Common.div(mem.getTotal(), (1024 * 1024 * 1024), 2) + "G"); // 内存总量
      monitorMap.put("ramUse", Common.div(mem.getUsed(), (1024 * 1024 * 1024), 2) + "G"); // 当前内存使用量
      monitorMap.put(
          "ramFree", Common.div(mem.getFree(), (1024 * 1024 * 1024), 2) + "G"); // 当前内存剩余量
      monitorMap.put("ramUsage", Common.div(mem.getUsed(), mem.getTotal(), 2)); // 内存使用率

      Swap swap = sigar.getSwap();
      // 交换区总量
      monitorMap.put("swapTotal", Common.div(swap.getTotal(), (1024 * 1024 * 1024), 2) + "G");
      // 当前交换区使用量
      monitorMap.put("swapUse", Common.div(swap.getUsed(), (1024 * 1024 * 1024), 2) + "G");
      // 当前交换区剩余量
      monitorMap.put("swapFree", Common.div(swap.getFree(), (1024 * 1024 * 1024), 2) + "G");
      monitorMap.put("swapUsage", Common.div(swap.getUsed(), swap.getTotal(), 2)); //

    } catch (Exception e) {
    }
    return monitorMap;
  }
 public static ServerInfoFormMap SystemProperty() {
   ServerInfoFormMap monitorMap = new ServerInfoFormMap();
   Runtime r = Runtime.getRuntime();
   Properties props = System.getProperties();
   InetAddress addr = null;
   String ip = "";
   String hostName = "";
   try {
     addr = InetAddress.getLocalHost();
   } catch (UnknownHostException e) {
     ip = "无法获取主机IP";
     hostName = "无法获取主机名";
   }
   if (null != addr) {
     try {
       ip = addr.getHostAddress();
     } catch (Exception e) {
       ip = "无法获取主机IP";
     }
     try {
       hostName = addr.getHostName();
     } catch (Exception e) {
       hostName = "无法获取主机名";
     }
   }
   monitorMap.put("hostIp", ip); // 本地ip地址
   monitorMap.put("hostName", hostName); // 本地主机名
   monitorMap.put("osName", props.getProperty("os.name")); // 操作系统的名称
   monitorMap.put("arch", props.getProperty("os.arch")); // 操作系统的构架
   monitorMap.put("osVersion", props.getProperty("os.version")); // 操作系统的版本
   monitorMap.put("processors", r.availableProcessors()); // JVM可以使用的处理器个数
   monitorMap.put("javaVersion", props.getProperty("java.version")); // Java的运行环境版本
   monitorMap.put("vendor", props.getProperty("java.vendor")); // Java的运行环境供应商
   monitorMap.put("javaUrl", props.getProperty("java.vendor.url")); // Java供应商的URL
   monitorMap.put("javaHome", props.getProperty("java.home")); // Java的安装路径
   monitorMap.put("tmpdir", props.getProperty("java.io.tmpdir")); // 默认的临时文件路径
   return monitorMap;
 }