RuntimeUtil.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. package com.nosum.deliver.monitor.util;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.nosum.common.base.domain.Result;
  5. import java.net.InetAddress;
  6. import java.util.Map;
  7. import java.util.Properties;
  8. public class RuntimeUtil {
  9. /**
  10. * 获取系统属性
  11. */
  12. public static Result<JSONObject> getProperty() {
  13. JSONObject obj = new JSONObject();
  14. try {
  15. Runtime r = Runtime.getRuntime();
  16. Properties props = System.getProperties();
  17. InetAddress addr = InetAddress.getLocalHost();
  18. Map<String, String> map = System.getenv();
  19. obj.put("ip", addr.getHostName());
  20. obj.put("hostName", InetAddress.getLocalHost());
  21. obj.put("userName", map.get("USERNAME"));
  22. obj.put("computerName", map.get("COMPUTERNAME"));
  23. obj.put("userDomain", map.get("USERDOMAIN"));
  24. obj.put("totalMemory", r.totalMemory());//JVM可以使用的总内存
  25. obj.put("freeMemory", r.freeMemory());// JVM可以使用的剩余内存
  26. obj.put("availableProcessors", r.availableProcessors()); // JVM可以使用的处理器个数
  27. obj.put("javaVersion", props.getProperty("java.version")); // Java的运行环境版本
  28. obj.put("javaVendor", props.getProperty("java.vendor")); // Java的运行环境供应商
  29. obj.put("javaVendorUrl", props.getProperty("java.vendor.url")); // Java供应商的URL
  30. obj.put("javaHome", props.getProperty("java.home")); // Java的安装路径
  31. obj.put("java.vm.specification.version", props.getProperty("java.vm.specification.version")); // Java的虚拟机规范版本
  32. // obj.put("javaClassPath",props.getProperty("java.class.path"));// Java的类路径
  33. // obj.put("javaLibraryPath",props.getProperty("java.library.path"));// 加载库时搜索的路径列表
  34. obj.put("javaIoTmpdir", props.getProperty("java.io.tmpdir"));// 默认的临时文件路径
  35. obj.put("javaExtDirs", props.getProperty("java.ext.dirs")); // 一个或多个扩展目录的路径
  36. obj.put("osName", props.getProperty("os.name")); // 操作系统的名称
  37. obj.put("osArch", props.getProperty("os.arch")); // 操作系统的构架
  38. obj.put("osVersion", props.getProperty("os.version")); // 操作系统的版本
  39. obj.put("fileSeparator", props.getProperty("file.separator")); // 文件分隔符
  40. obj.put("pathSeparator", props.getProperty("path.separator"));// 路径分隔符
  41. obj.put("lineSeparator", props.getProperty("line.separator"));// 行分隔符
  42. obj.put("userNameDir", props.getProperty("user.name"));// 用户的账户名称
  43. obj.put("userHome", props.getProperty("user.home"));// 用户的主目录
  44. obj.put("userDir", props.getProperty("user.dir")); // 用户的当前工作目录
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. return Result.createWithModel(obj);
  49. }
  50. /**
  51. * 获取内存信息
  52. */
  53. public static Result<JSONObject> getMemory() {
  54. JSONObject obj = new JSONObject();
  55. try {
  56. //Sigar sigar = new Sigar();
  57. //Mem mem = sigar.getMem();
  58. //BigDecimal total = BigDecimal.valueOf(mem.getTotal()).divide(BigDecimal.valueOf(1024 * 1024 * 1024), BigDecimal.ROUND_HALF_UP);
  59. //BigDecimal used = BigDecimal.valueOf(mem.getUsed()).divide(BigDecimal.valueOf(1024 * 1024 * 1024), BigDecimal.ROUND_HALF_UP);
  60. //BigDecimal free = BigDecimal.valueOf(mem.getFree()).divide(BigDecimal.valueOf(1024 * 1024 * 1024), BigDecimal.ROUND_HALF_UP);
  61. //// 内存总量
  62. //obj.put("total",total);
  63. //// 当前内存使用量
  64. //obj.put("used", used);
  65. //// 当前内存剩余量
  66. //obj.put("free", free);
  67. //// 使用率
  68. //obj.put("usedRatio",(used.divide(total,3, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
  69. //Swap swap = sigar.getSwap();
  70. //obj.put("swapTotal",swap.getTotal() / 1024L / 1024L);// 交换区总量
  71. //obj.put("swapUsed",swap.getUsed() / 1024L / 1024L);// 当前交换区使用量
  72. //obj.put("swapFree",swap.getFree() / 1024L / 1024L);// 当前交换区剩余量
  73. } catch (Exception e) {
  74. e.printStackTrace();
  75. }
  76. return Result.createWithModel(obj);
  77. }
  78. public static Result<JSONArray> getCpu() {
  79. JSONArray obj = new JSONArray();
  80. //try{
  81. // Sigar sigar = new Sigar();
  82. // CpuInfo infos[] = sigar.getCpuInfoList();
  83. // CpuPerc cpuList[] = null;
  84. // cpuList = sigar.getCpuPercList();
  85. // for (int i = 0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用
  86. // CpuInfo info = infos[i];
  87. // JSONObject cpuObj=new JSONObject();
  88. // cpuObj.put("Mhz",info.getMhz());// CPU的总量MHz
  89. // cpuObj.put("vendor",info.getVendor());// 获得CPU的卖主,如:Intel
  90. // cpuObj.put("model",info.getModel());// 获得CPU的类别,如:Celeron
  91. // cpuObj.put("cacheSize",info.getCacheSize());// 缓冲存储器数量
  92. // cpuObj.putAll(getCpuPerc(cpuList[i]));
  93. // obj.add(cpuObj);
  94. // }
  95. //}catch (Exception e){
  96. // e.printStackTrace();
  97. //}
  98. return Result.createWithModel(obj);
  99. }
  100. ///**
  101. // * 获取CPU信息
  102. // */
  103. //private static JSONObject getCpuPerc(CpuPerc cpu) {
  104. // JSONObject obj = new JSONObject();
  105. // obj.put("user", CpuPerc.format(cpu.getUser()));// 用户使用率
  106. // obj.put("sys", CpuPerc.format(cpu.getSys()));// 系统使用率
  107. // obj.put("wait", CpuPerc.format(cpu.getWait()));// 当前等待率
  108. // obj.put("nice", CpuPerc.format(cpu.getNice()));// 当前错误率
  109. // obj.put("idle", CpuPerc.format(cpu.getIdle()));// 当前空闲率
  110. // obj.put("combined", CpuPerc.format(cpu.getCombined()));// 总的使用率
  111. // return obj;
  112. //}
  113. //public static Result<JSONObject> getFile() {
  114. // JSONObject obj = new JSONObject();
  115. // try {
  116. // Sigar sigar = new Sigar();
  117. // FileSystem fslist[] = sigar.getFileSystemList();
  118. // JSONArray jsonArray = new JSONArray();
  119. // for (int i = 0, len = fslist.length; i < len; i++) {
  120. // FileSystem fs = fslist[i];
  121. // JSONObject jso = new JSONObject();
  122. // jso.put("dev.name", fs.getDevName()); //分区盘符名称
  123. // jso.put("dir.name", fs.getDirName()); //分区盘符名称
  124. // jso.put("flags", fs.getFlags()); //分区盘符类型
  125. // jso.put("sys.type.name", fs.getSysTypeName()); //文件系统类型
  126. // jso.put("type.name", fs.getTypeName()); //分区盘符类型名
  127. // jso.put("type", fs.getType()); //分区盘符文件系统类型
  128. // FileSystemUsage usage = null;
  129. // try {
  130. // usage = sigar.getFileSystemUsage(fs.getDirName());
  131. // } catch (Exception e) {
  132. // e.printStackTrace();
  133. // }
  134. // if (usage == null) {
  135. // continue;
  136. // }
  137. // switch (fs.getType()) {
  138. // case 0: // TYPE_UNKNOWN :未知
  139. // break;
  140. // case 1: // TYPE_NONE
  141. // break;
  142. // case 2: // TYPE_LOCAL_DISK : 本地硬盘
  143. // jso.put("usage.totle", usage.getTotal() / 1024); // 分区总大小
  144. // jso.put("usage.free", usage.getFree() / 1024); // 分区剩余大小
  145. // jso.put("usage.avail", usage.getAvail() / 1024); // 分区可用大小
  146. // jso.put("usage.used", usage.getUsed() / 1024); // 分区已经使用量
  147. // jso.put("usage.use.percent", usage.getUsePercent() * 100D); // 分区资源的利用率
  148. // break;
  149. // case 3:// TYPE_NETWORK :网络
  150. // break;
  151. // case 4:// TYPE_RAM_DISK :闪存
  152. // break;
  153. // case 5:// TYPE_CDROM :光驱
  154. // break;
  155. // case 6:// TYPE_SWAP :页面交换
  156. // break;
  157. // }
  158. // jso.put("disk.reads", usage.getDiskReads()); // 读出
  159. // jso.put("disk.writes", usage.getDiskWrites()); // 写入
  160. // jsonArray.add(jso);
  161. // }
  162. // obj.put("file.system", jsonArray);
  163. // } catch (Exception e) {
  164. // e.printStackTrace();
  165. // }
  166. // return Result.createWithModel(obj);
  167. //}
  168. ///**
  169. // * 获取网络信息
  170. // */
  171. //public static Result<JSONObject> getNet() {
  172. // JSONObject jsonObject = new JSONObject();
  173. // try {
  174. // Sigar sigar = new Sigar();
  175. // String ifNames[] = sigar.getNetInterfaceList();
  176. // JSONArray jsonArray = new JSONArray();
  177. // for (int i = 0, len = ifNames.length; i < len; i++) {
  178. // String name = ifNames[i];
  179. // JSONObject jso = new JSONObject();
  180. // NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);
  181. // jso.put("name", name); // 网络设备名
  182. // jso.put("address", ifconfig.getAddress()); // IP地址
  183. // jso.put("mask", ifconfig.getNetmask()); // 子网掩码
  184. // if ((ifconfig.getFlags() & 1L) <= 0L) {
  185. // continue;
  186. // }
  187. // NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);
  188. // jso.put("rx.packets", ifstat.getRxPackets());// 接收的总包裹数
  189. // jso.put("tx.packets", ifstat.getTxPackets());// 发送的总包裹数
  190. // jso.put("rx.bytes", ifstat.getRxBytes());// 接收到的总字节数
  191. // jso.put("tx.bytes", ifstat.getTxBytes());// 发送的总字节数
  192. // jso.put("rx.errors", ifstat.getRxErrors());// 接收到的错误包数
  193. // jso.put("tx.errors", ifstat.getTxErrors());// 发送数据包时的错误数
  194. // jso.put("rx.dropped", ifstat.getRxDropped());// 接收时丢弃的包数
  195. // jso.put("tx.dropped", ifstat.getTxDropped());// 发送时丢弃的包数
  196. // jsonArray.add(jso);
  197. // }
  198. // jsonObject.put("net", jsonArray);
  199. // } catch (Exception e) {
  200. // e.printStackTrace();
  201. // }
  202. // return Result.createWithModel(jsonObject);
  203. //}
  204. ///**
  205. // * 获取网卡信息
  206. // */
  207. //public static Result<JSONObject> getEthernet() {
  208. // JSONObject jsonObject = new JSONObject();
  209. // try {
  210. // Sigar sigar = new Sigar();
  211. // String[] ifaces = sigar.getNetInterfaceList();
  212. // JSONArray jsonArray = new JSONArray();
  213. // for (int i = 0, len = ifaces.length; i < len; i++) {
  214. // NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);
  215. // if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress()) || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0 || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {
  216. // continue;
  217. // }
  218. // JSONObject jso = new JSONObject();
  219. // jso.put("address", cfg.getAddress());// IP地址
  220. // jso.put("broad.cast", cfg.getBroadcast());// 网关广播地址
  221. // jso.put("hwaddr", cfg.getHwaddr());// 网卡MAC地址
  222. // jso.put("net.mask", cfg.getNetmask());// 子网掩码
  223. // jso.put("description", cfg.getDescription());// 网卡描述信息
  224. // jso.put("type", cfg.getType());// 网卡类型
  225. // jsonArray.add(jso);
  226. // }
  227. // jsonObject.put("ethernet", jsonArray);
  228. // } catch (Exception e) {
  229. // e.printStackTrace();
  230. // }
  231. // return Result.createWithModel(jsonObject);
  232. //}
  233. }