<div dir="ltr">Hi Steve,<div><br></div><div>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. </div><div><br class="webkit-block-placeholder">
</div><div>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...)</div>
<div><br class="webkit-block-placeholder"></div><div>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.</div>
<div><br class="webkit-block-placeholder"></div><div><div>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.</div>
<div><br class="webkit-block-placeholder"></div></div><div>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.</div>
<div><br></div><div>-B</div><div><br><div class="gmail_quote">On Wed, Sep 10, 2008 at 5:59 AM, steve hillier <span dir="ltr"><<a href="mailto:shillier@halogensoftware.com" target="_blank">shillier@halogensoftware.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi,<br>
<br>
I've read through the docs and faq, and done a few test builds<br>
from<br>
source, but did not find any answers to my question(s).<br>
<br>
I'm prototyping a statistics collection package that includes<br>
system,<br>
network, and JVM statistics collection. I see that collectd can<br>
do most<br>
of what I want already (great!), but I don't see anything that<br>
might<br>
point towards someone else having used it to gather JVM<br>
statistics.<br>
<br>
I'm not averse to writing my own plugin, but I don't want to<br>
reinvent<br>
the wheel either, so my question is: Has anyone ever tried to<br>
implement<br>
JVM statistics collection, specifically via JMX or some such<br>
method?<br>
<br>
If not, what barriers might I encounter trying to code up a<br>
plugin to<br>
add this functionality?<br>
<br>
Thanks,<br>
Steve.<br>
<br>
<br>
_______________________________________________<br>
collectd mailing list<br>
<a href="mailto:collectd@verplant.org" target="_blank">collectd@verplant.org</a><br>
<a href="http://mailman.verplant.org/listinfo/collectd" target="_blank">http://mailman.verplant.org/listinfo/collectd</a><br>
</blockquote></div><br></div></div>