Files
2013-11-14 01:20:49 +08:00

211 lines
5.4 KiB
Plaintext

<%@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();
}
%>
<html>
<head>
<meta charset="utf-8">
<title>system info</title>
<style type="text/css">
tbody tr:nth-child(odd) td,
tbody tr:nth-child(odd) th {
background-color: #f9f9f9;
}
td {
font-size: 12px;
}
</style>
</head>
<body>
<h1>server</h1>
<table border="1" width="100%">
<tbody>
<tr>
<td>host name</td>
<td><%=InetAddress.getLocalHost().getHostName()%></td>
</tr>
<tr>
<td>host address</td>
<td><%=InetAddress.getLocalHost().getHostAddress()%></td>
</tr>
<tr>
<td>os</td>
<td><%=(System.getProperty("os.name") + " " + System.getProperty("os.version"))%></td>
</tr>
<tr>
<td>java</td>
<td><%=System.getProperty("java.version")%></td>
</tr>
</tbody>
</table>
<!-- ====================================================================== -->
<br>
<!-- ====================================================================== -->
<h1>jvm statistics</h1>
<table border="1" width="100%">
<tbody>
<%
{
%>
<tr>
<td>Start Time</td>
<td><%=getJmxDate("java.lang:type=Runtime", "StartTime")%></td>
</tr>
<tr>
<td>Memory(total / free)</td>
<td>
<%=getJmxObject("java.lang:type=OperatingSystem", "TotalPhysicalMemorySize")%> /
<%=getJmxObject("java.lang:type=OperatingSystem", "FreePhysicalMemorySize")%>
</td>
</tr>
<tr>
<td>Heap Memory</td>
<td><%=getJmxComposite("java.lang:type=Memory", "HeapMemoryUsage")%></td>
</tr>
<tr>
<td>Non Heap Memory</td>
<td><%=getJmxComposite("java.lang:type=Memory", "NonHeapMemoryUsage")%></td>
</tr>
<tr>
<td>System Load Average</td>
<td><%=getJmxObject("java.lang:type=OperatingSystem", "SystemLoadAverage")%></td>
</tr>
<tr>
<td>Loaded Classes (currently / total / unloaded)</td>
<td>
<%=getJmxObject("java.lang:type=ClassLoading", "LoadedClassCount")%> /
<%=getJmxObject("java.lang:type=ClassLoading", "TotalLoadedClassCount")%> /
<%=getJmxObject("java.lang:type=ClassLoading", "UnloadedClassCount")%>
</td>
</tr>
<tr>
<td>Threads (total / peak / daemon)</td>
<td>
<%=getJmxObject("java.lang:type=Threading", "TotalStartedThreadCount")%> /
<%=getJmxObject("java.lang:type=Threading", "PeakThreadCount")%> /
<%=getJmxObject("java.lang:type=Threading", "DaemonThreadCount")%>
</td>
</tr>
<%
}
%>
</tbody>
</table>
<!-- ====================================================================== -->
<br>
<!-- ====================================================================== -->
<h1>system info</h1>
<table border="1" width="100%">
<tbody>
<%
{
Map<Object, Object> sortedMap = new TreeMap<Object, Object>(System.getProperties());
for (Map.Entry<Object, Object> 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));
}
%>
<tr>
<td>${entry.key}</td>
<td>${entry.value}</td>
</tr>
<%
}
}
%>
</tbody>
</table>
<!-- ====================================================================== -->
<br>
<!-- ====================================================================== -->
<h1>env info</h1>
<table border="1" width="100%">
<tbody>
<%
{
Map<Object, Object> sortedMap = new TreeMap<Object, Object>(System.getenv());
for (Map.Entry<Object, Object> 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));
}
%>
<tr>
<td>${entry.key}</td>
<td>${entry.value}</td>
</tr>
<%
}
}
%>
</tbody>
</table>
</body>
</html>