diff --git a/@rbv b/@rbv index cb1aa7e10..9aa4b1071 160000 --- a/@rbv +++ b/@rbv @@ -1 +1 @@ -Subproject commit cb1aa7e1063bfae9e969ea25e00c2bc8e8b8235a +Subproject commit 9aa4b107148f51f8fd499373c6eddfcac6df871d diff --git a/src/main/java/com/rebuild/core/ServerStatus.java b/src/main/java/com/rebuild/core/ServerStatus.java index 4e51f010e..2d18228a8 100644 --- a/src/main/java/com/rebuild/core/ServerStatus.java +++ b/src/main/java/com/rebuild/core/ServerStatus.java @@ -19,6 +19,7 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import oshi.SystemInfo; import oshi.hardware.GlobalMemory; +import oshi.hardware.NetworkIF; import java.io.File; import java.io.FileWriter; @@ -193,11 +194,11 @@ public final class ServerStatus { private static final SystemInfo SI = new SystemInfo(); /** - * 内存用量 + * OS 内存用量 * * @return [总计M, 已用%] */ - public static double[] getHeapMemoryUsed() { + public static double[] getOsMemoryUsed() { GlobalMemory memory = SI.getHardware().getMemory(); long memoryTotal = memory.getTotal(); double memoryUsage = (memoryTotal - memory.getAvailable()) * 1.0 / memoryTotal; @@ -207,6 +208,23 @@ public final class ServerStatus { }; } + /** + * JVM 内存用量 + * + * @return [总计M, 已用%] + */ + public static double[] getJvmMemoryUsed() { + Runtime runtime = Runtime.getRuntime(); + long memoryTotal = runtime.totalMemory(); + long memoryFree = runtime.freeMemory(); + double memoryUsage = (memoryTotal - memoryFree) * 1.0 / memoryTotal; + return new double[] { + (int) (memoryTotal / MemoryInformationBean.MEGABYTES), + ObjectUtils.round(memoryUsage * 100, 2) + }; + } + + /** * CPU 负载 * @@ -216,4 +234,20 @@ public final class ServerStatus { double[] loadAverages = SI.getHardware().getProcessor().getSystemLoadAverage(2); return ObjectUtils.round(loadAverages[1], 2); } + + /** + * 本机 IP + * + * @return + */ + public static String getLocalIp() { + List nets = SI.getHardware().getNetworkIFs(); + if (nets.isEmpty()) return "localhost"; + + for (NetworkIF net : nets) { + String[] ipsv4 = net.getIPv4addr(); + if (ipsv4.length > 0) return ipsv4[0]; + } + return "127.0.0.1"; + } } diff --git a/src/main/java/com/rebuild/web/admin/frontjs/FrontjsAdminController.java b/src/main/java/com/rebuild/web/admin/frontjs/FrontjsAdminController.java index e68e2bf46..11bba772a 100644 --- a/src/main/java/com/rebuild/web/admin/frontjs/FrontjsAdminController.java +++ b/src/main/java/com/rebuild/web/admin/frontjs/FrontjsAdminController.java @@ -1,5 +1,8 @@ /* -Copyright (c) Ruifang Tech and/or its owners. All rights reserved. +Copyright (c) REBUILD and/or its owners. All rights reserved. + +rebuild is dual-licensed under commercial and open source licenses (GPLv3). +See LICENSE and COMMERCIAL in the project root for license information. */ package com.rebuild.web.admin.frontjs; diff --git a/src/main/java/com/rebuild/web/commons/ErrorPageView.java b/src/main/java/com/rebuild/web/commons/ErrorPageView.java index 42152eba3..d84393110 100644 --- a/src/main/java/com/rebuild/web/commons/ErrorPageView.java +++ b/src/main/java/com/rebuild/web/commons/ErrorPageView.java @@ -57,7 +57,7 @@ public class ErrorPageView extends BaseController { ModelAndView mv = createModelAndView("/error/server-status"); mv.getModel().put("ok", ServerStatus.isStatusOK() && Application.isReady()); mv.getModel().put("status", ServerStatus.getLastStatus(realtime)); - mv.getModel().put("MemoryUsage", ServerStatus.getHeapMemoryUsed()); + mv.getModel().put("MemoryUsage", ServerStatus.getJvmMemoryUsed()); mv.getModel().put("SystemLoad", ServerStatus.getSystemLoad()); mv.getModelMap().put("isAdminVerified", AppUtils.isAdminVerified(request)); return mv; @@ -76,7 +76,7 @@ public class ErrorPageView extends BaseController { for (ServerStatus.Status item : ServerStatus.getLastStatus(realtime)) { status.put(item.name, item.success ? true : item.error); } - status.put("MemoryUsage", ServerStatus.getHeapMemoryUsed()[1]); + status.put("MemoryUsage", ServerStatus.getJvmMemoryUsed()[1]); status.put("SystemLoad", ServerStatus.getSystemLoad()); ServletUtils.writeJson(response, s.toJSONString()); diff --git a/src/main/resources/web/error/server-status.html b/src/main/resources/web/error/server-status.html index e68a3fad8..3e2d963eb 100644 --- a/src/main/resources/web/error/server-status.html +++ b/src/main/resources/web/error/server-status.html @@ -81,6 +81,10 @@ JVM [[${T(org.apache.commons.lang.SystemUtils).JAVA_VM_NAME}]] ([[${T(org.apache.commons.lang.SystemUtils).JAVA_VERSION}]]) + + Local IP + [[${T(com.rebuild.core.ServerStatus).getLocalIp()}]] + System Time [[${T(cn.devezhao.commons.CalendarUtils).now()}]] diff --git a/src/test/java/com/rebuild/core/ServerStatusTest.java b/src/test/java/com/rebuild/core/ServerStatusTest.java new file mode 100644 index 000000000..06262fb89 --- /dev/null +++ b/src/test/java/com/rebuild/core/ServerStatusTest.java @@ -0,0 +1,18 @@ +package com.rebuild.core; + +import org.junit.jupiter.api.Test; + +class ServerStatusTest { + + @Test + void oshi() { + double[] osMemory = ServerStatus.getOsMemoryUsed(); + System.out.println(osMemory[0] + ", " + osMemory[1]); + + double[] vmMemory = ServerStatus.getJvmMemoryUsed(); + System.out.println(vmMemory[0] + ", " + vmMemory[1]); + + System.out.println(ServerStatus.getSystemLoad()); + System.out.println(ServerStatus.getLocalIp()); + } +} \ No newline at end of file diff --git a/src/test/java/com/rebuild/core/privileges/UserHelperTest.java b/src/test/java/com/rebuild/core/privileges/UserHelperTest.java index 35b7ce547..b13eb65fe 100644 --- a/src/test/java/com/rebuild/core/privileges/UserHelperTest.java +++ b/src/test/java/com/rebuild/core/privileges/UserHelperTest.java @@ -44,7 +44,7 @@ public class UserHelperTest extends TestSupport { public void generateAvatar() throws Exception { for (int i = 0; i < 100; i++) { UserHelper.generateAvatar("你好", true); - System.out.println(ServerStatus.getHeapMemoryUsed()[1]); + System.out.println(ServerStatus.getJvmMemoryUsed()[1]); } } diff --git a/src/test/java/com/rebuild/support/I18nGettextParser.java b/src/test/java/com/rebuild/support/I18nGettextParser.java index 3c44e2e5d..f12bfdeac 100644 --- a/src/test/java/com/rebuild/support/I18nGettextParser.java +++ b/src/test/java/com/rebuild/support/I18nGettextParser.java @@ -1,5 +1,8 @@ /* -Copyright (c) Ruifang Tech and/or its owners. All rights reserved. +Copyright (c) REBUILD and/or its owners. All rights reserved. + +rebuild is dual-licensed under commercial and open source licenses (GPLv3). +See LICENSE and COMMERCIAL in the project root for license information. */ package com.rebuild.support;