You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rm...@apache.org on 2013/08/01 14:22:30 UTC
svn commit: r1509201 - in /commons/sandbox/monitoring/trunk:
core/src/main/java/org/apache/commons/monitoring/configuration/
core/src/main/java/org/apache/commons/monitoring/counter/
reporting/src/main/java/org/apache/commons/monitoring/reporting/web/p...
Author: rmannibucau
Date: Thu Aug 1 12:22:30 2013
New Revision: 1509201
URL: http://svn.apache.org/r1509201
Log:
hooking a JVM plugin (to implement)
Added:
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMHandler.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMPlugin.java
commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jvm/
commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jvm/jvm.vm
- copied, changed from r1509184, commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm
Modified:
commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java
commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Role.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java
Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java?rev=1509201&r1=1509200&r2=1509201&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java Thu Aug 1 12:22:30 2013
@@ -83,7 +83,7 @@ public final class Configuration {
if (m.getAnnotation(Created.class) != null) {
m.invoke(instance);
} else if (m.getAnnotation(Destroying.class) != null) {
- if (is("org.apache.commons.monitoring.shutdown.hook", false) && shutdownHook == null) {
+ if (shutdownHook == null == is(COMMONS_MONITORING_PREFIX + ".shutdown.hook", false)) {
shutdownHook = new Thread() {
@Override
public void run() {
Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Role.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Role.java?rev=1509201&r1=1509200&r2=1509201&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Role.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Role.java Thu Aug 1 12:22:30 2013
@@ -27,7 +27,7 @@ import static org.apache.commons.monitor
*/
public class Role implements Comparable<Role> {
public static final Role WEB = new Role("web", NANOSECOND);
- public static final Role JSP = new Role("web", NANOSECOND);
+ public static final Role JSP = new Role("jsp", NANOSECOND);
public static final Role JDBC = new Role("jdbc", NANOSECOND);
public static final Role PERFORMANCES = new Role("performances", NANOSECOND);
public static final Role FAILURES = new Role("failures", Unit.UNARY);
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java?rev=1509201&r1=1509200&r2=1509201&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java Thu Aug 1 12:22:30 2013
@@ -41,7 +41,7 @@ public class PluginRepository {
final Class<? extends Handler> handler = plugin.handler();
if (mapping != null && handler != null) {
try {
- final Handler handlerInstance = new PluginDecoratorHandler(handler.newInstance(), name);
+ final Handler handlerInstance = new PluginDecoratorHandler(Configuration.newInstance(handler), name);
PLUGIN_INFO.add(new PluginInfo(mapping, handlerInstance, name));
} catch (final Exception e) {
throw new MonitoringException(e);
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java?rev=1509201&r1=1509200&r2=1509201&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java Thu Aug 1 12:22:30 2013
@@ -117,7 +117,7 @@ public class JMXHandler extends HandlerR
@Override
protected String getTemplate() {
- return "jmx/main.vm";
+ return "jmx/jvm.vm";
}
@Override
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMHandler.java?rev=1509201&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMHandler.java Thu Aug 1 12:22:30 2013
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.monitoring.reporting.web.plugin.jvm;
+
+import org.apache.commons.monitoring.reporting.web.handler.HandlerRendererAdapter;
+import org.apache.commons.monitoring.reporting.web.template.MapBuilder;
+import org.apache.commons.monitoring.repositories.Repository;
+
+import java.util.Map;
+
+public class JVMHandler extends HandlerRendererAdapter {
+ protected String getTemplate() {
+ return "jvm/jvm.vm";
+ }
+
+ protected Map<String,?> getVariables() {
+ return new MapBuilder<String, Object>()
+ .set("cpu", Repository.INSTANCE.getCounter(JVMPlugin.CPU_KEY).getMean())
+ .set("memory", Repository.INSTANCE.getCounter(JVMPlugin.MEMORY_KEY).getMean())
+ .build();
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMPlugin.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMPlugin.java?rev=1509201&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMPlugin.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jvm/JVMPlugin.java Thu Aug 1 12:22:30 2013
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.monitoring.reporting.web.plugin.jvm;
+
+import org.apache.commons.monitoring.configuration.Configuration;
+import org.apache.commons.monitoring.counter.Counter;
+import org.apache.commons.monitoring.counter.Role;
+import org.apache.commons.monitoring.counter.Unit;
+import org.apache.commons.monitoring.reporting.web.handler.Handler;
+import org.apache.commons.monitoring.reporting.web.plugin.Plugin;
+import org.apache.commons.monitoring.repositories.Repository;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryMXBean;
+import java.lang.management.OperatingSystemMXBean;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class JVMPlugin implements Plugin {
+ public static final Counter.Key CPU_KEY = new Counter.Key(new Role("cpu", Unit.Time.MILLISECOND), "CPU");
+ public static final Counter.Key MEMORY_KEY = new Counter.Key(new Role("memory", Unit.Time.MILLISECOND), "Memory");
+
+ private static final OperatingSystemMXBean SYSTEM_MX_BEAN = ManagementFactory.getOperatingSystemMXBean();
+ private static final MemoryMXBean MEMORY_MX_BEAN = ManagementFactory.getMemoryMXBean();
+
+ private final Timer timer;
+
+ // TODO: limit size + make it accessible to the jvm handler
+ private final Collection<Double> cpuHistory = new ArrayList<Double>();
+ private final Collection<Long> memHistory = new ArrayList<Long>();
+
+ public JVMPlugin() {
+ // TODO: save values in a sized list (= historical values)
+ final Counter cpu = Repository.INSTANCE.getCounter(CPU_KEY);
+ final Counter memory = Repository.INSTANCE.getCounter(MEMORY_KEY);
+
+ timer = new Timer("monitoring-jvm", true);
+ timer.scheduleAtFixedRate(new TimerTask() {
+ @Override
+ public void run() {
+ final double systemLoadAverage = SYSTEM_MX_BEAN.getSystemLoadAverage();
+ cpu.add(systemLoadAverage);
+ cpuHistory.add(systemLoadAverage);
+
+ final long used = MEMORY_MX_BEAN.getHeapMemoryUsage().getUsed();
+ memory.add(used);
+ memHistory.add(used);
+ }
+ }, 0L, Long.parseLong(Configuration.getProperty(Configuration.COMMONS_MONITORING_PREFIX + "jvm.rate", "60000")));
+ }
+
+ @Configuration.Destroying
+ public void stop() {
+ timer.cancel();
+ }
+
+ @Override
+ public String name() {
+ return "JVM";
+ }
+
+ @Override
+ public Class<? extends Handler> handler() {
+ return JVMHandler.class;
+ }
+
+ @Override
+ public String mapping() {
+ return "jvm";
+ }
+}
Copied: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jvm/jvm.vm (from r1509184, commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm)
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jvm/jvm.vm?p2=commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jvm/jvm.vm&p1=commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm&r1=1509184&r2=1509201&rev=1509201&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jvm/jvm.vm Thu Aug 1 12:22:30 2013
@@ -14,52 +14,5 @@
See the License for the specific language governing permissions and
limitations under the License.
*#
-#macro ( tree $tree )
- <ul class="jmx">
- #foreach( $node in $tree.children )
- #if ( $node.isLeaf() )
- <li id="$node.base64" class="jmx leaf">
- #else
- <li class="jmx">
- #end
- $node.name
- #tree ( $node )
- </li>
- #end
- </ul>
-#end
-
-<div class="container-fluid">
- <div class="row-fluid">
- <div id="jmx-tree" class="span2">
- #tree ( $jmxTree )
- </div>
- <div id="jmx-info" class="span10">
- Click on the left tree to select a leaf to show the attributes of a MBean.
- </div>
- </div>
-</div>
-
-<script type="text/javascript" src="$mapping/resources/js/bootstrap-tab.js"></script>
-<script type="text/javascript">
- $(function() {
- $('li > ul').each(function (i) {
- var parent_li = $(this).parent('li');
- parent_li.addClass('node');
-
- var sub_ul = $(this).remove();
- parent_li.wrapInner('<a class="nodeText" />').find('a').click(function() {
- sub_ul.toggle();
- });
- parent_li.append(sub_ul);
- });
- $('ul ul').hide();
-
- $('.leaf').click(function () {
- var url = '$mapping/jmx/' + $(this).attr("id");
- $.get(url, function(data) {
- $("#jmx-info").html(data);
- });
- });
- });
-</script>
+Memory mean: $memory
+CPU mean: $cpu