Fixat bug #7
Showing
12 changed files
with
152 additions
and
9 deletions
| ... | @@ -33,4 +33,11 @@ | ... | @@ -33,4 +33,11 @@ |
| 33 | <nature>org.eclipse.jdt.core.javanature</nature> | 33 | <nature>org.eclipse.jdt.core.javanature</nature> |
| 34 | <nature>org.eclipse.wst.jsdt.core.jsNature</nature> | 34 | <nature>org.eclipse.wst.jsdt.core.jsNature</nature> |
| 35 | </natures> | 35 | </natures> |
| 36 | <linkedResources> | ||
| 37 | <link> | ||
| 38 | <name>jetty/lilom.jar</name> | ||
| 39 | <type>1</type> | ||
| 40 | <locationURI>PROJECT_LOC/WebContent/WEB-INF/lib/lilom.jar</locationURI> | ||
| 41 | </link> | ||
| 42 | </linkedResources> | ||
| 36 | </projectDescription> | 43 | </projectDescription> | ... | ... |
| 1 | <%@page import="se.lil.om.Registry"%> | ||
| 1 | <%@page import="se.lil.om.OraMon"%> | 2 | <%@page import="se.lil.om.OraMon"%> |
| 2 | <%@page import="se.lil.jm.JmxMon"%> | 3 | <%@page import="se.lil.jm.JmxMon"%> |
| 3 | <%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> | 4 | <%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> |
| ... | @@ -13,14 +14,21 @@ | ... | @@ -13,14 +14,21 @@ |
| 13 | // Handling of actions | 14 | // Handling of actions |
| 14 | boolean error = false; | 15 | boolean error = false; |
| 15 | String errMsg = ""; | 16 | String errMsg = ""; |
| 17 | boolean info = false; | ||
| 18 | String infMsg = ""; | ||
| 19 | |||
| 16 | if(request.getParameter("action") != null) { | 20 | if(request.getParameter("action") != null) { |
| 17 | if(request.getParameter("action").equals("add")) { | 21 | if(request.getParameter("action").equals("remove")) { |
| 18 | if(request.getParameter("data") != null && request.getParameter("data").length() != 0) { | 22 | if(request.getParameter("omconstr") != null && request.getParameter("omconstr").length() != 0) { |
| 19 | //se.lil.om.Registry.getList().add(new OraMon()); | 23 | se.lil.om.Registry.remove(request.getParameter("omconstr")); |
| 20 | } else { | 24 | info = true; |
| 21 | error = true; | 25 | infMsg = "Removed OraMon " + request.getParameter("omconstr"); |
| 22 | errMsg = "Data is empty. Nothing added."; | 26 | } |
| 23 | } | 27 | if(request.getParameter("jmconstr") != null && request.getParameter("jmconstr").length() != 0) { |
| 28 | se.lil.jm.Registry.remove(request.getParameter("jmconstr")); | ||
| 29 | info = true; | ||
| 30 | infMsg = "Removed JmxMon " + request.getParameter("jmconstr"); | ||
| 31 | } | ||
| 24 | } | 32 | } |
| 25 | } | 33 | } |
| 26 | %> | 34 | %> |
| ... | @@ -29,6 +37,10 @@ if(request.getParameter("action") != null) { | ... | @@ -29,6 +37,10 @@ if(request.getParameter("action") != null) { |
| 29 | <div style="background: Salmon; padding: 10px;">Error: <%= errMsg %></div> | 37 | <div style="background: Salmon; padding: 10px;">Error: <%= errMsg %></div> |
| 30 | <% } %> | 38 | <% } %> |
| 31 | 39 | ||
| 40 | <% if(info) { %> | ||
| 41 | <div style="background: Aquamarine; padding: 10px;">Info: <%= infMsg %> <form><input type="submit" value="OK"></form></div> | ||
| 42 | <% } %> | ||
| 43 | |||
| 32 | <h1>OraMon Web 1.1 with JmxMon</h1> | 44 | <h1>OraMon Web 1.1 with JmxMon</h1> |
| 33 | 45 | ||
| 34 | <h2>Status Oracle Monitors</h2> | 46 | <h2>Status Oracle Monitors</h2> |
| ... | @@ -46,6 +58,7 @@ if(request.getParameter("action") != null) { | ... | @@ -46,6 +58,7 @@ if(request.getParameter("action") != null) { |
| 46 | <th>Last Exception</th> | 58 | <th>Last Exception</th> |
| 47 | <th>Age</th> | 59 | <th>Age</th> |
| 48 | <th>RT</th> | 60 | <th>RT</th> |
| 61 | <th>Action</th> | ||
| 49 | </tr> | 62 | </tr> |
| 50 | <% for (OraMon mon : se.lil.om.Registry.getList()) { %> | 63 | <% for (OraMon mon : se.lil.om.Registry.getList()) { %> |
| 51 | <tr> | 64 | <tr> |
| ... | @@ -57,6 +70,7 @@ if(request.getParameter("action") != null) { | ... | @@ -57,6 +70,7 @@ if(request.getParameter("action") != null) { |
| 57 | <td><%= mon.getLastEx() %></td> | 70 | <td><%= mon.getLastEx() %></td> |
| 58 | <td><%= mon.getAgeTs() %>s</td> | 71 | <td><%= mon.getAgeTs() %>s</td> |
| 59 | <td><%= mon.getLastRTms() %>ms</td> | 72 | <td><%= mon.getLastRTms() %>ms</td> |
| 73 | <td><form method="POST"><input type="submit" name="action" value="remove" ><input type="hidden" name="omconstr" value="<%= mon.getConString() %>"></form></td> | ||
| 60 | </tr> | 74 | </tr> |
| 61 | <% } %> | 75 | <% } %> |
| 62 | </table> | 76 | </table> |
| ... | @@ -77,6 +91,7 @@ if(request.getParameter("action") != null) { | ... | @@ -77,6 +91,7 @@ if(request.getParameter("action") != null) { |
| 77 | <th>Last Exception</th> | 91 | <th>Last Exception</th> |
| 78 | <th>Age</th> | 92 | <th>Age</th> |
| 79 | <th>RT</th> | 93 | <th>RT</th> |
| 94 | <th>Action</th> | ||
| 80 | </tr> | 95 | </tr> |
| 81 | <% for (JmxMon mon : se.lil.jm.Registry.getList()) { %> | 96 | <% for (JmxMon mon : se.lil.jm.Registry.getList()) { %> |
| 82 | <tr> | 97 | <tr> |
| ... | @@ -88,6 +103,7 @@ if(request.getParameter("action") != null) { | ... | @@ -88,6 +103,7 @@ if(request.getParameter("action") != null) { |
| 88 | <td><%= mon.getLastEx() %></td> | 103 | <td><%= mon.getLastEx() %></td> |
| 89 | <td><%= mon.getAgeTs() %>s</td> | 104 | <td><%= mon.getAgeTs() %>s</td> |
| 90 | <td><%= mon.getLastRTms() %>ms</td> | 105 | <td><%= mon.getLastRTms() %>ms</td> |
| 106 | <td><form method="POST"><input type="submit" name="action" value="remove" ><input type="hidden" name="jmconstr" value="<%= mon.getConString() %>"></form></td> | ||
| 91 | </tr> | 107 | </tr> |
| 92 | <% } %> | 108 | <% } %> |
| 93 | </table> | 109 | </table> | ... | ... |
No preview for this file type
No preview for this file type
JavaMonWeb/WebContent/viewJmxMon.html
0 → 100644
| 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
| 2 | <html> | ||
| 3 | <head> | ||
| 4 | <title>LIL JMX Monitor</title> | ||
| 5 | <script type="text/javascript" src="https://www.google.com/jsapi"></script> | ||
| 6 | <script type="text/javascript"> | ||
| 7 | var ac_data = null; | ||
| 8 | var ac_chart = null; | ||
| 9 | |||
| 10 | google.load("visualization", "1", { packages: ["corechart"] }); | ||
| 11 | google.setOnLoadCallback(getData); | ||
| 12 | |||
| 13 | var ac_options = { | ||
| 14 | title: 'Current Real User Activity', | ||
| 15 | hAxis: { title: 'Timeline', titleTextStyle: { color: '#333'}, format: 'HH:mm:ss' }, | ||
| 16 | vAxis: { minValue: 0 }, | ||
| 17 | isStacked: false | ||
| 18 | }; | ||
| 19 | |||
| 20 | function createChart(nvarray) { | ||
| 21 | ac_data = new google.visualization.DataTable(); | ||
| 22 | |||
| 23 | ac_data.addColumn('datetime', 'Time'); | ||
| 24 | |||
| 25 | for(var i=0; i < nvarray.length; i++) { | ||
| 26 | ac_data.addColumn('number', nvarray[i].name); | ||
| 27 | } | ||
| 28 | |||
| 29 | ac_chart = new google.visualization.LineChart(document.getElementById('ac_div')); | ||
| 30 | ac_chart.draw(ac_data, ac_options); | ||
| 31 | |||
| 32 | } | ||
| 33 | |||
| 34 | function getData() { | ||
| 35 | var client = new XMLHttpRequest(); | ||
| 36 | client.onreadystatechange = handler; | ||
| 37 | if(location.search != '') | ||
| 38 | { | ||
| 39 | client.open("GET", "/JmxMonREST/getMetrics?connectionString=" + location.search.substring(1)); | ||
| 40 | client.setRequestHeader('Cache-Control', 'no-cache'); | ||
| 41 | client.setRequestHeader('Pragma', 'no-cache'); | ||
| 42 | client.send(); | ||
| 43 | } else { | ||
| 44 | // Error, no monitor specified | ||
| 45 | ac_div.innerHTML = "<p>No monitor specified in URL QueryString (use ?enter uri encoded con string)</p>"; | ||
| 46 | } | ||
| 47 | |||
| 48 | } | ||
| 49 | |||
| 50 | function handler() { | ||
| 51 | var cT = new Date(); | ||
| 52 | if (this.readyState == 4) { | ||
| 53 | if (this.status == 200 && | ||
| 54 | this.responseText != null) { | ||
| 55 | addData(this.responseText); | ||
| 56 | return; | ||
| 57 | } | ||
| 58 | } | ||
| 59 | } | ||
| 60 | |||
| 61 | function addData(data) { | ||
| 62 | var res = eval('(' + data + ')'); | ||
| 63 | |||
| 64 | if (ac_data == null) { | ||
| 65 | createChart(res.nvarray); | ||
| 66 | } | ||
| 67 | |||
| 68 | var dataRow = []; | ||
| 69 | dataRow.push(new Date()); | ||
| 70 | for(var i=0; i < res.nvarray.length; i++) { | ||
| 71 | dataRow[i+1] = res.nvarray[i].value; | ||
| 72 | } | ||
| 73 | |||
| 74 | if (ac_data.getNumberOfRows() > 1000) ac_data.removeRow(0); | ||
| 75 | |||
| 76 | ac_data.addRow(dataRow); | ||
| 77 | ac_chart.draw(ac_data, ac_options); | ||
| 78 | |||
| 79 | window.setTimeout('getData()', 5000); | ||
| 80 | } | ||
| 81 | |||
| 82 | </script> | ||
| 83 | </head> | ||
| 84 | <body> | ||
| 85 | <h1>LIL JMX Monitor</h1> | ||
| 86 | <div id="ac_div" style="width: 99%; height: 80%; "></div> | ||
| 87 | </body> | ||
| 88 | </html> |
No preview for this file type
JavaMonWeb/jetty/lilom.jar
deleted
100644 → 0
No preview for this file type
| ... | @@ -68,7 +68,7 @@ public class JmxMonRESTgetMetrics extends HttpServlet { | ... | @@ -68,7 +68,7 @@ public class JmxMonRESTgetMetrics extends HttpServlet { |
| 68 | sb.append("{\"error\":false,\"nvarray\":"); | 68 | sb.append("{\"error\":false,\"nvarray\":"); |
| 69 | sb.append("["); | 69 | sb.append("["); |
| 70 | 70 | ||
| 71 | sb.append(",{\"name\":\"Number of processors #\",\"value\":" + mon.getNumberOfCPUs() + "}"); | 71 | sb.append("{\"name\":\"Number of processors #\",\"value\":" + mon.getNumberOfCPUs() + "}"); |
| 72 | sb.append(",{\"name\":\"Process CPU Used %\",\"value\":" + mon.getCPUPercent() + "}"); | 72 | sb.append(",{\"name\":\"Process CPU Used %\",\"value\":" + mon.getCPUPercent() + "}"); |
| 73 | sb.append(",{\"name\":\"Process Threads #\",\"value\":" + mon.getThreads() + "}"); | 73 | sb.append(",{\"name\":\"Process Threads #\",\"value\":" + mon.getThreads() + "}"); |
| 74 | sb.append(",{\"name\":\"Process Loaded Classes #\",\"value\":" + mon.getLoadedClassCount() + "}"); | 74 | sb.append(",{\"name\":\"Process Loaded Classes #\",\"value\":" + mon.getLoadedClassCount() + "}"); | ... | ... |
LILJM/lib/jconsole_KVmK20_S2.bat
0 → 100644
| 1 | javaw.exe -Dcom.sun.management.jmxremote.ssl=false -cp "wls-10.3.6.0.161018.2/wljmxclient.jar;jconsole.1.8.0_91.jar" sun.tools.jconsole.JConsole "service:jmx:rmi:///jndi/iiop://u30030:28392/weblogic.management.mbeanservers.runtime" | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -25,4 +25,19 @@ public class Registry { | ... | @@ -25,4 +25,19 @@ public class Registry { |
| 25 | jmxList.add(monitor); | 25 | jmxList.add(monitor); |
| 26 | return monitor; | 26 | return monitor; |
| 27 | } | 27 | } |
| 28 | |||
| 29 | public static synchronized void remove(String conStr) { | ||
| 30 | JmxMon mon = null; | ||
| 31 | for (JmxMon item : getList()) { | ||
| 32 | if(item.getConString().equals(conStr)) { | ||
| 33 | mon = item; | ||
| 34 | } | ||
| 35 | } | ||
| 36 | if(mon != null) { | ||
| 37 | try { | ||
| 38 | mon.close(); | ||
| 39 | } catch (Throwable t) {} | ||
| 40 | getList().remove(mon); | ||
| 41 | } | ||
| 42 | } | ||
| 28 | } | 43 | } | ... | ... |
| ... | @@ -21,11 +21,12 @@ public class TestRunner { | ... | @@ -21,11 +21,12 @@ public class TestRunner { |
| 21 | 21 | ||
| 22 | //JmxMon mon1 = new JmxMon("service:jmx:iiop:///jndi/iiop://u30457:29722/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 | 22 | //JmxMon mon1 = new JmxMon("service:jmx:iiop:///jndi/iiop://u30457:29722/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 |
| 23 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30128:23032/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 | 23 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30128:23032/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 |
| 24 | JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30009:26732/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.12.1 | 24 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30009:26732/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.12.1 |
| 25 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30009:2673/weblogic.management.mbeanservers.runtime"); // Fel port | 25 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30009:2673/weblogic.management.mbeanservers.runtime"); // Fel port |
| 26 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u02878.ht.kap.rsv.se:17040/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 PS | 26 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u02878.ht.kap.rsv.se:17040/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 PS |
| 27 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u01891.ef.kap.rsv.se:17020/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 CMS | 27 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u01891.ef.kap.rsv.se:17020/weblogic.management.mbeanservers.runtime"); // 10.3.6.0.161018.2 CMS |
| 28 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30450:34502/weblogic.management.mbeanservers.runtime"); // CMS | 28 | //JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30450:34502/weblogic.management.mbeanservers.runtime"); // CMS |
| 29 | JmxMon mon1 = new JmxMon("service:jmx:rmi:///jndi/iiop://u30030:28392/weblogic.management.mbeanservers.runtime"); | ||
| 29 | //mon1.open(); | 30 | //mon1.open(); |
| 30 | //mon2.open(); | 31 | //mon2.open(); |
| 31 | jmxList.add(mon1); | 32 | jmxList.add(mon1); | ... | ... |
| ... | @@ -24,4 +24,19 @@ public class Registry { | ... | @@ -24,4 +24,19 @@ public class Registry { |
| 24 | oraList.add(monitor); | 24 | oraList.add(monitor); |
| 25 | return monitor; | 25 | return monitor; |
| 26 | } | 26 | } |
| 27 | |||
| 28 | public static synchronized void remove(String conStr) { | ||
| 29 | OraMon mon = null; | ||
| 30 | for (OraMon item : getList()) { | ||
| 31 | if(item.getConString().equals(conStr)) { | ||
| 32 | mon = item; | ||
| 33 | } | ||
| 34 | } | ||
| 35 | if(mon != null) { | ||
| 36 | try { | ||
| 37 | mon.close(); | ||
| 38 | } catch (Throwable t) {} | ||
| 39 | getList().remove(mon); | ||
| 40 | } | ||
| 41 | } | ||
| 27 | } | 42 | } | ... | ... |
-
Please register or sign in to post a comment