From ddc46f88fd5f67204e1c65bdb665991e43d767e1 Mon Sep 17 00:00:00 2001 From: Kenyon Ralph Date: Mon, 5 Mar 2012 00:18:19 -0800 Subject: [PATCH] readd jmx (extracted) because it seems to be different from the jmx in the main munin distribution --- plugins/java/jmx/examples/java/java_cpu.conf | 22 ++++++ .../examples/java/java_process_memory.conf | 46 ++++++++++++ .../java/jmx/examples/java/java_threads.conf | 14 ++++ .../examples/tomcat/catalina_requests.conf | 16 +++++ .../jmx/examples/tomcat/catalina_threads.conf | 12 ++++ .../jmx/examples/tomcat/catalina_times.conf | 32 +++++++++ .../jmx/examples/tomcat/catalina_traffic.conf | 18 +++++ plugins/java/jmx/plugin/jmx_ | 54 ++++++++++++++ plugins/java/jmx/plugin/jmxquery.jar | Bin 0 -> 8977 bytes plugins/java/jmx/readme.txt | 66 ++++++++++++++++++ 10 files changed, 280 insertions(+) create mode 100644 plugins/java/jmx/examples/java/java_cpu.conf create mode 100644 plugins/java/jmx/examples/java/java_process_memory.conf create mode 100644 plugins/java/jmx/examples/java/java_threads.conf create mode 100644 plugins/java/jmx/examples/tomcat/catalina_requests.conf create mode 100644 plugins/java/jmx/examples/tomcat/catalina_threads.conf create mode 100644 plugins/java/jmx/examples/tomcat/catalina_times.conf create mode 100644 plugins/java/jmx/examples/tomcat/catalina_traffic.conf create mode 100755 plugins/java/jmx/plugin/jmx_ create mode 100644 plugins/java/jmx/plugin/jmxquery.jar create mode 100644 plugins/java/jmx/readme.txt diff --git a/plugins/java/jmx/examples/java/java_cpu.conf b/plugins/java/jmx/examples/java/java_cpu.conf new file mode 100644 index 00000000..1e56cd34 --- /dev/null +++ b/plugins/java/jmx/examples/java/java_cpu.conf @@ -0,0 +1,22 @@ +graph_args --upper-limit 100 -l 0 +graph_scale no +graph_title CPU Usage +graph_vlabel 1000* CPU time % +graph_category Java +graph_order java_cpu_time java_cpu_user_time + +java_cpu_time.label cpu +java_cpu_time.jmxObjectName java.lang:type=Threading +java_cpu_time.jmxAttributeName CurrentThreadCpuTime +java_cpu_time.type DERIVE +java_cpu_time.min 0 +java_cpu_time.graph yes +java_cpu_time.cdef java_cpu_time,3000000,/ + +java_cpu_user_time.label user +java_cpu_user_time.jmxObjectName java.lang:type=Threading +java_cpu_user_time.jmxAttributeName CurrentThreadUserTime +java_cpu_user_time.type DERIVE +java_cpu_user_time.min 0 +java_cpu_user_time.graph yes +java_cpu_user_time.cdef java_cpu_user_time,3000000,/ \ No newline at end of file diff --git a/plugins/java/jmx/examples/java/java_process_memory.conf b/plugins/java/jmx/examples/java/java_process_memory.conf new file mode 100644 index 00000000..ddbdc4d0 --- /dev/null +++ b/plugins/java/jmx/examples/java/java_process_memory.conf @@ -0,0 +1,46 @@ +graph_title Process Memory +graph_vlabel Bytes +graph_category Java +graph_order java_memory_nonheap_committed java_memory_nonheap_max java_memory_nonheap_used java_memory_heap_committed java_memory_heap_max java_memory_heap_used os_memory_physical os_memory_vm + +java_memory_nonheap_committed.label non-heap committed +java_memory_nonheap_committed.jmxObjectName java.lang:type=Memory +java_memory_nonheap_committed.jmxAttributeName NonHeapMemoryUsage +java_memory_nonheap_committed.jmxAttributeKey committed + +java_memory_nonheap_max.label non-heap max +java_memory_nonheap_max.jmxObjectName java.lang:type=Memory +java_memory_nonheap_max.jmxAttributeName NonHeapMemoryUsage +java_memory_nonheap_max.jmxAttributeKey max + +java_memory_nonheap_used.label non-heap used +java_memory_nonheap_used.jmxObjectName java.lang:type=Memory +java_memory_nonheap_used.jmxAttributeName NonHeapMemoryUsage +java_memory_nonheap_used.jmxAttributeKey used + +java_memory_heap_committed.label heap committed +java_memory_heap_committed.jmxObjectName java.lang:type=Memory +java_memory_heap_committed.jmxAttributeName HeapMemoryUsage +java_memory_heap_committed.jmxAttributeKey committed + +java_memory_heap_max.label heap max +java_memory_heap_max.jmxObjectName java.lang:type=Memory +java_memory_heap_max.jmxAttributeName HeapMemoryUsage +java_memory_heap_max.jmxAttributeKey max + +java_memory_heap_used.label heap used +java_memory_heap_used.jmxObjectName java.lang:type=Memory +java_memory_heap_used.jmxAttributeName HeapMemoryUsage +java_memory_heap_used.jmxAttributeKey used + +os_memory_physical.label os free mem +os_memory_physical.jmxObjectName java.lang:type=OperatingSystem +os_memory_physical.jmxAttributeName FreePhysicalMemorySize +os_memory_physical.graph no + +os_memory_vm.label os vmem committed +os_memory_vm.jmxObjectName java.lang:type=OperatingSystem +os_memory_vm.jmxAttributeName CommittedVirtualMemorySize +os_memory_vm.graph no + + diff --git a/plugins/java/jmx/examples/java/java_threads.conf b/plugins/java/jmx/examples/java/java_threads.conf new file mode 100644 index 00000000..f8b64cd4 --- /dev/null +++ b/plugins/java/jmx/examples/java/java_threads.conf @@ -0,0 +1,14 @@ +graph_title Thread Count +graph_vlabel Thread Count +graph_category Java +graph_order java_thread_count java_thread_count_peak + +java_thread_count.label count +java_thread_count.jmxObjectName java.lang:type=Threading +java_thread_count.jmxAttributeName ThreadCount + +java_thread_count_peak.label peak +java_thread_count_peak.jmxObjectName java.lang:type=Threading +java_thread_count_peak.jmxAttributeName PeakThreadCount + + diff --git a/plugins/java/jmx/examples/tomcat/catalina_requests.conf b/plugins/java/jmx/examples/tomcat/catalina_requests.conf new file mode 100644 index 00000000..acb48175 --- /dev/null +++ b/plugins/java/jmx/examples/tomcat/catalina_requests.conf @@ -0,0 +1,16 @@ +graph_title Requests Per Second +graph_vlabel requests per second +graph_category Tomcat +graph_order catalina_request_count catalina_error_count + +catalina_request_count.label requests +catalina_request_count.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_request_count.jmxAttributeName requestCount +catalina_request_count.type DERIVE +catalina_request_count.min 0 + +catalina_error_count.label errors +catalina_error_count.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_error_count.jmxAttributeName errorCount +catalina_error_count.type DERIVE +catalina_error_count.min 0 diff --git a/plugins/java/jmx/examples/tomcat/catalina_threads.conf b/plugins/java/jmx/examples/tomcat/catalina_threads.conf new file mode 100644 index 00000000..32ab44c2 --- /dev/null +++ b/plugins/java/jmx/examples/tomcat/catalina_threads.conf @@ -0,0 +1,12 @@ +graph_title Thread Count +graph_vlabel Thread Count +graph_category Tomcat +graph_order catalina_threads_count catalina_threads_busy + +catalina_threads_busy.label busy +catalina_threads_busy.jmxObjectName Catalina:name=http-8080,type=ThreadPool +catalina_threads_busy.jmxAttributeName currentThreadsBusy + +catalina_threads_count.label current +catalina_threads_count.jmxObjectName Catalina:name=http-8080,type=ThreadPool +catalina_threads_count.jmxAttributeName currentThreadCount diff --git a/plugins/java/jmx/examples/tomcat/catalina_times.conf b/plugins/java/jmx/examples/tomcat/catalina_times.conf new file mode 100644 index 00000000..e3790259 --- /dev/null +++ b/plugins/java/jmx/examples/tomcat/catalina_times.conf @@ -0,0 +1,32 @@ +graph_title Response Time +graph_vlabel Time, ms +graph_category Rules Engine +graph_args --upper-limit 100 -l 0 +graph_scale no +graph_category Tomcat +graph_order catalina_request_count catalina_max_time catalina_proc_time catalina_proc_tpr + +catalina_request_count.label requests +catalina_request_count.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_request_count.jmxAttributeName requestCount +catalina_request_count.graph no +catalina_request_count.type DERIVE +catalina_request_count.min 0 + +catalina_proc_time.label time +catalina_proc_time.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_proc_time.jmxAttributeName processingTime +catalina_proc_time.type DERIVE +catalina_proc_time.min 0 +catalina_proc_time.graph no + +catalina_proc_tpr.label avg +catalina_proc_tpr.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_proc_tpr.jmxAttributeName processingTime +catalina_proc_tpr.cdef catalina_request_count,0,EQ,0,catalina_proc_time,catalina_request_count,/,IF + +catalina_max_time.label peak +catalina_max_time.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_max_time.jmxAttributeName maxTime + + diff --git a/plugins/java/jmx/examples/tomcat/catalina_traffic.conf b/plugins/java/jmx/examples/tomcat/catalina_traffic.conf new file mode 100644 index 00000000..f6d9498d --- /dev/null +++ b/plugins/java/jmx/examples/tomcat/catalina_traffic.conf @@ -0,0 +1,18 @@ +graph_title Traffic +graph_vlabel Bytes rec(-)/sent(+) per second +graph_category Tomcat +graph_order catalina_bytes_received catalina_bytes_sent + +catalina_bytes_sent.label bps +catalina_bytes_sent.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_bytes_sent.jmxAttributeName bytesSent +catalina_bytes_sent.type DERIVE +catalina_bytes_sent.min 0 +catalina_bytes_sent.negative catalina_bytes_received + +catalina_bytes_received.label received +catalina_bytes_received.jmxObjectName Catalina:name=http-8080,type=GlobalRequestProcessor +catalina_bytes_received.jmxAttributeName bytesReceived +catalina_bytes_received.type DERIVE +catalina_bytes_received.min 0 +catalina_bytes_received.graph no \ No newline at end of file diff --git a/plugins/java/jmx/plugin/jmx_ b/plugins/java/jmx/plugin/jmx_ new file mode 100755 index 00000000..9fe33f2f --- /dev/null +++ b/plugins/java/jmx/plugin/jmx_ @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Wildcard-plugin to monitor Java JMX (http://java.sun.com/jmx)attributes. +# To monitor a # specific set of JMX attributes, +# link to this file. E.g. +# +# ln -s /usr/share/plugins/jmx_ /etc/munin/plugins/jmx_java_threads +# + +# ...will monitor Java thread count, assuming java_threads.conf file is located in +# /etc/munin/plugins folder. +# +# For Java process to be monitored, it must expose JMX remote interface. +# With Java 1.5 it can be done by adding parameters as: +# +# -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false +# +# For Tomcat to be monitored, add the following line in catalina.bat script: +# set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false +# +# By default, the plugin monitors localhost on = 1616 using URL +# service:jmx:rmi:///jndi/rmi://localhost:1616/jmxrmi +# It can be changed by specifying parameters in /etc/munin/plugin-conf.d/munin-node +# +# [jmx_*] +# env.jmxurl service:jmx:rmi:///jndi/rmi://localhost:1616/jmxrmi +# +# Read more on JMX configuring at http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html +# $Log$ +# +LINK=`readlink $0` +CONFIGNAME=`basename $0 | sed 's/^jmx_//g'`.conf +RDIR=`dirname $LINK` + +if [ "$jmxurl" = "" ]; then +SERVICE=service:jmx:rmi:///jndi/rmi://localhost:1616/jmxrmi +else +SERVICE="$jmxurl" +fi + +if [ "$jmxuser" != "" ]; then +CREDS="--user=$jmxuser --pass=$jmxpass" +fi + +# checks +test -z $CONFIGNAME || test -z "$RDIR" && exit 1 + +JMXQUERY="java -cp $RDIR/jmxquery.jar org.munin.JMXQuery --url=$SERVICE $CREDS --conf=$RDIR/$CONFIGNAME" + + +case $1 in + (config) $JMXQUERY config;; + (*) $JMXQUERY ;; +esac diff --git a/plugins/java/jmx/plugin/jmxquery.jar b/plugins/java/jmx/plugin/jmxquery.jar new file mode 100644 index 0000000000000000000000000000000000000000..5c37d4bdec25e453d0891a5d12d899f30cecd157 GIT binary patch literal 8977 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/bin/jconsole.exe and connect to +the host/port you setup in your Java process. + +Some examples are: +* standard Java JMX implementation exposes memory, threads, OS, garbage collector parameters +* Tomcat exposes multiple parameters - requests, processing time, threads, etc.. +* spring framework allows to expose Java beans parameters to JMX +* your application may expose any attributes for JMX by declaration or explicitly. +* can monitor localhost or remote processes + +-------- Installation --------- + +Pre-requsisites are: +- installed munin-node +- Java version 5 JRE + +1) Files from "plugin" folder must be copied to /usr/share/munin/plugins (or another - where your munin plugins located) +2) Make sure that jmx_ executable : chmod a+x /usr/share/munin/plugins/jmx_ +3) Copy configuration files that you want to use, from "examples" folder, into /usr/share/munin/plugins folder +4) create links from the /etc/munin/plugins folder to the /usr/share/munin/plugins/jmx_ +The name of the link must follow wildcard pattern: +jmx_, +where configname is the name of the configuration (config filename without extension), for example: +ln -s /usr/share/munin/plugins/jmx_ /etc/munin/plugins/jmx_process_memory +5) optionally specify the environment variable for JMX URL. The default URL corresponds to localhost:1616. +If you have different port listening by JMX or different hostname to monitor, specify jmxurl parameter +in /etc/munin/plugin-conf.d/munin-node: + +[jmx_*] +env.jmxurl service:jmx:rmi:///jndi/rmi://localhost:1616/jmxrmi + +-------- Check Installation --------- + +To check that all installed properly, try invoke plugins from command line, using links like: + +root@re:/etc/munin/plugins# ./jmx_java_process_memory config +graph_category Java +... +root@re:/etc/munin/plugins# ./jmx_java_process_memory +java_memory_nonheap_committed.value 35291136 +... + +If you have configured environment for jmxurl, do not forget to export it before! + +-------- Configuration Files --------- + +Folder "examples" contains configuration files for Java and Tomcat monitoring examples. +The format of configuration file is a superset of Munin plugin "config" command output +(http://munin.projects.linpro.no/wiki/protocol-config) +It has the following additions: + +.jmxObjectName JMX object name, e.g. java.lang:type=Memory +.jmxAttributeName JMX attribute name, e.g. NonHeapMemoryUsage +.jmxAttributeKey If attribute is a composed data (structure), the name of the field in structure, e.g. max + +% separates comments in file + + +