[collectd] JVM statistics collection?

Brian Long brian at dotspots.com
Thu Sep 11 07:59:29 CEST 2008

Hi Steve,
I've integrated collectd with JMX in our systems. We use it to poll the JVM
as well as any other relevant metrics we want from our applications.

What I ended up doing was creating a MonitoredResource and
MonitoredAttribute annotation (similar to ManagedResource and
ManagedAttribute) which can be applied to any bean and getter. Then I have a
MonitoredAnnotationBeanPostProcessor which registers all beans and their
attributes which wish to be monitored. A MonitoringAgent bean is constructed
which emits a single JMX operation, getMonitoredBeans. This returns a
collection of object names and attributes which have been decorated by the
Monitored* annotations and registered via the post processor. (And since
there are no beans to annotate for JVM metrics, I just hand-register all the
interesting JVM objects/attributes in code...)

I have a bridge process with is invoked by the exec plugin which connects to
an app and retrieves all monitored beans by invoking getMonitoredBeans (via
JMX obviously). It proceeds to then retrieve all the monitored attributes by
retrieving each attribute for each object name emitted in getMonitoredBeans.
The bridge is responsible for turning object names and attributes into
plugin/type/instance/data source labels that are posted by PUTVAL.

Everything about this works fine... the only thing we had to revisit was
launching the bridge app at every iteration. We eventually turned it into a
long-running process which never exits, just to avoid the overhead of
bringing up a new JVM each time.

This is obviously very specific to a system which is based around Spring,
but I found it very simple to emit new metrics this way - all you need to do
is apply the annotations and everything works completely automatically.


On Wed, Sep 10, 2008 at 5:59 AM, steve hillier <shillier at halogensoftware.com
> wrote:

>        Hi,
>        I've read through the docs and faq, and done a few test builds
>        from
>        source, but did not find any answers to my question(s).
>        I'm prototyping a statistics collection package that includes
>        system,
>        network, and JVM statistics collection. I see that collectd can
>        do most
>        of what I want already (great!), but I don't see anything that
>        might
>        point towards someone else having used it to gather JVM
>        statistics.
>        I'm not averse to writing my own plugin, but I don't want to
>        reinvent
>        the wheel either, so my question is: Has anyone ever tried to
>        implement
>        JVM statistics collection, specifically via JMX or some such
>        method?
>        If not, what barriers might I encounter trying to code up a
>        plugin to
>        add this functionality?
>        Thanks,
>        Steve.
> _______________________________________________
> collectd mailing list
> collectd at verplant.org
> http://mailman.verplant.org/listinfo/collectd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.verplant.org/pipermail/collectd/attachments/20080910/b1e62a30/attachment.htm 

More information about the collectd mailing list