[collectd] generic JMX plugin

Florian Forster octo at verplant.org
Tue Jul 28 08:54:15 CEST 2009

Hi Matt,

On 7/27/09 3:01 PM, matthew sporleder wrote:
> I have a pretty strong need to do some java monitoring and,
> unfortunately, I can't get all of the information I need through the
> jvm's built-in snmp interface.  (all the memory info is there, but I
> don't think I can get database thread pools, message queue depths,
> hibernate stats, etc)
> So what I would really like to see is an snmp-style plugin that spoke JMX.

I think there are two possible and elegant solutions:

  - jcollectd [0], a pure-Java implementation of the collectd network
    protocol. It can be attached to a Java process to transparently
    collect JMX information and submit it to a collectd instance. I'm
    CC'ing Doug, author of jcollectd, in case he has some clever advice
    for us :)

  - Write a generic JMX plugin in Java, using the collectd Java
    bindings [1]. My preferred solution would be to use the same
    configuration as jcollectd (or at least something very similar), so
    that they can share the configuration code.

> Define the<Data>  to collect in terms of the mbean domain, mbean name,
> and attribute name
> Then a type, obviously, and the Table feature would be pretty handy as
> well for getting values that come back in lists.  (although specifying
> the specific value to get would also be fine)
> committed=1532428288, init=1610612736, max=1532428288, used=974726808
> (just part of a javax.management.openmbean.CompositeData jmx answer
> from mx4j.  Don't even get me started on trying to use the curl plugin
> on that)

I have to admit I don't understand half of that. Unfortunately all those
Java technologies have their own slang that is impossible to understand
as an outsider. It took me like half a day to figure out a “service URL”
that worked for me when I was writing that “JMXMemory” sample plugin.

> <Data "javaoldgen">
>   Type "javax.management.openmbean.CompositeData"
>   Table true
>   MBdomain "java.lang"
>   MBname "type=MemoryPool,name=PS Old Gen"
>   MBattribute "Usage"
> </Data>

The jcollectd configuration looks somewhat like this (it's a Tomcat
example config):

-- 8< --
   <mbeans name="tomcat">
     <mbean name="Catalina:type=GlobalRequestProcessor,*" alias="GRP">
       <attribute name="bytesReceived" alias="received" units="bytes" type="counter"/>
       <attribute name="bytesSent" alias="sent" units="bytes" type="counter"/>
       <attribute name="errorCount" alias="errors" type="counter"/>
-- >8 --


[0] <http://support.hyperic.com/display/hypcomm/jcollectd>
[1] <http://collectd.org/wiki/index.php/Plugin:Java>
Florian octo Forster
Hacker in training
GnuPG: 0x91523C3D
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mailman.verplant.org/pipermail/collectd/attachments/20090728/a4369f21/attachment.pgp 

More information about the collectd mailing list