<%@page contentType="text/html;charset=UTF-8"%> <%@page import="java.lang.management.*"%> <%@page import="java.net.*"%> <%@page import="java.util.*"%> <%@page import="javax.management.*"%> <%@page import="javax.management.openmbean.CompositeData"%> <%@page import="javax.management.openmbean.TabularData"%> <%! public static class EntryBean { private Object key; private Object value; public EntryBean(Object key, Object value) { this.key = key; this.value = value; } public Object getKey() { return key; } public Object getValue() { return value; } } Object getJmxObject(String objectNameString, String attributeNameString) throws Exception { ObjectName objectName = ObjectName.getInstance(objectNameString); Object value = ManagementFactory.getPlatformMBeanServer().getAttribute(objectName, attributeNameString); return value; } Object getJmxDate(String objectNameString, String attributeNameString) throws Exception { Object value = getJmxObject(objectNameString, attributeNameString); Date startTime = new Date((Long) value); return startTime; } Object getJmxComposite(String objectNameString, String attributeNameString) throws Exception { Object value = getJmxObject(objectNameString, attributeNameString); CompositeData compositeData = (CompositeData) value; StringBuffer buff = new StringBuffer(); for (String key : compositeData.getCompositeType().keySet()) { buff.append(key) .append("=") .append(compositeData.get(key)) .append(","); } return buff.toString(); } %> system info

server

host name <%=InetAddress.getLocalHost().getHostName()%>
host address <%=InetAddress.getLocalHost().getHostAddress()%>
os <%=(System.getProperty("os.name") + " " + System.getProperty("os.version"))%>
java <%=System.getProperty("java.version")%>

jvm statistics

<% { %> <% } %>
Start Time <%=getJmxDate("java.lang:type=Runtime", "StartTime")%>
Memory(total / free) <%=getJmxObject("java.lang:type=OperatingSystem", "TotalPhysicalMemorySize")%> / <%=getJmxObject("java.lang:type=OperatingSystem", "FreePhysicalMemorySize")%>
Heap Memory <%=getJmxComposite("java.lang:type=Memory", "HeapMemoryUsage")%>
Non Heap Memory <%=getJmxComposite("java.lang:type=Memory", "NonHeapMemoryUsage")%>
System Load Average <%=getJmxObject("java.lang:type=OperatingSystem", "SystemLoadAverage")%>
Loaded Classes (currently / total / unloaded) <%=getJmxObject("java.lang:type=ClassLoading", "LoadedClassCount")%> / <%=getJmxObject("java.lang:type=ClassLoading", "TotalLoadedClassCount")%> / <%=getJmxObject("java.lang:type=ClassLoading", "UnloadedClassCount")%>
Threads (total / peak / daemon) <%=getJmxObject("java.lang:type=Threading", "TotalStartedThreadCount")%> / <%=getJmxObject("java.lang:type=Threading", "PeakThreadCount")%> / <%=getJmxObject("java.lang:type=Threading", "DaemonThreadCount")%>

system info

<% { Map sortedMap = new TreeMap(System.getProperties()); for (Map.Entry entry : sortedMap.entrySet()) { pageContext.setAttribute("entry", entry); if ("line.separator".equals(entry.getKey())) { Object key = entry.getKey(); Object value = entry.getValue(); value = value.toString() .replace("\n", "\\n") .replace("\r", "\\r"); pageContext.setAttribute("entry", new EntryBean(key, value)); } %> <% } } %>
${entry.key} ${entry.value}

env info

<% { Map sortedMap = new TreeMap(System.getenv()); for (Map.Entry entry : sortedMap.entrySet()) { pageContext.setAttribute("entry", entry); if ("line.separator".equals(entry.getKey())) { Object key = entry.getKey(); Object value = entry.getValue(); value = value.toString() .replace("\n", "\\n") .replace("\r", "\\r"); pageContext.setAttribute("entry", new EntryBean(key, value)); } %> <% } } %>
${entry.key} ${entry.value}