[infinispan-dev] a nice HTML5 console for Infinispan & a question on MBean names...

Dennis Reed dereed at redhat.com
Tue Mar 19 13:55:21 EDT 2013


This is an invalid use of the MBean names.

The keys in an ObjectName are unordered.  It is a bug to depend on a 
specific ordering of the keys.

-Dennis

On 03/19/2013 10:07 AM, Manik Surtani wrote:
> Hi James.
>
> Strange that no one else has responded to you on this list as yet; I'm all for reorganising the JMX names to suit Hawt.io, but not by default since it will affect our JON/RHQ plugins.
>
> Care to create a JIRA in Infinispan to allow a JVM system parameter to swap the JMX name components around as you propose?
>
> Regarding a Hawt.io plugin for Infinispan, I'd love to see this.  What additional operations are you suggesting?
>
> Cheers
> Manik
>
>
> On 27 Feb 2013, at 15:54, James Strachan <james.strachan at gmail.com> wrote:
>
>> Howdy folks!
>>
>> I'm working on a HTML5 web console called hawtio (http://hawt.io)
>> which is a pluggable & modular console for various Java libraries,
>> frameworks and containers. e.g. today it has plugins for Apache Camel,
>> ActiveMQ, Fuse Fabric as well as JMX, OSGi & Logging - then plugins
>> for containers like Tomcat, Jetty, JBoss, Karaf/ServiceMix. We've a
>> cute dashboard & wiki which uses git to store its configuration/files
>> too.
>>
>> Anyway the reason I bring this up is yesterday we had our first
>> Infinispan issue with hawtio:
>> https://github.com/hawtio/hawtio/issues/134
>>
>> its now fixed; but it got me thinking if we could have a nice little
>> hawtio plugin for Infinispan so folks could make dashboards of real
>> time metrics of caches, browse caches etc.
>>
>>
>> I enabled metrics and managed to get a basic JMX tree going with real
>> time metrics on attributes/charts on a single Cache using vanilla JMX
>> in hawtio with Infinispan. I've attached an example of how it looks if
>> you're interested.
>>
>> The thing is, there's no way to easily click on a folder and get all
>> the MBeans for the Statistics. If that were the case then hawtio would
>> show a sortable table of all the metrics of all the caches in one
>> table view; or we could easily chart any of the metrics of all the
>> caches in one real time chart easily.
>>
>> It'd be a fairly minor change; we'd just need to change the ObjectName
>> used for the Cache mbeans from this naming convention:
>>
>> Infinispan:type=Cache,name="drink(local)",manager="DefaultCacheManager",component=Statistics
>>
>> to this (just moving the "name" property to the end)
>>
>> Infinispan:type=Cache,manager="DefaultCacheManager",component=Statistics,name="drink(local)"
>>
>> then in the hawtio JMX tree we could select the "Statistics" folder
>> and see all of the mbeans in a table and so you could sort the table
>> by metric, see all the values on a single screen & create real time
>> charts of any permutation of cache & metric.
>>
>> I wondered if folks fancied either adopting this naming convention
>> (putting the name last and the component kind before it) or adding a
>> configuration flag so we could enable this kind of JMX naming
>> convention style? It'd make things much more hawt when using hawtio
>> and infinispan! :). You'd get nice HTML5 statistics in hawtio
>> instantly on all caches.
>>
>>
>> I also wondered if folks fancied adding a few more operations to the
>> Cache mbean so that we could build a little console in hawtio for
>> Infinispan; to view/update contents of the caches or flush them etc?
>>
>> As a background; since JMX is usually the lowest common denominator,
>> hawtio defaults to using it to detect whats in a JVM. If we discover a
>> particular kind of MBean we then enable/disable different parts of the
>> hawtio UI dynamically. e.g. if you're viewing a JVM then you deploy
>> some Apache Camel, hey presto, the Camel UI in hawtio appears as a
>> tab.
>>
>>>  From a technology perspective hawtio is all static HTML5 / JavaScript
>> on the client; it then communicates with the MBeans via an awesome
>> library called jolokia (http://jolokia.org/) which exposes JMX over
>> HTTP/JSON.
>>
>> So hawtio could totally use the Infinispan REST API (but it'd be nice
>> if there was an mbean registered to indicate the REST API is running
>> and where to find it so hawtio could discover it). However you can
>> usually rely more on JMX being there (folks don't always deploy
>> Infinispan inside a web container with a REST API). So I wondered if
>> folks fancied adding a simple little JMX API to query / update / flush
>> the cache that we could then use to build a little HTML5 console in
>> hawtio?
>>
>> e.g something valuely like:
>>
>> interface CacheMBean {
>>   ...
>>
>>   String getJson(String key)
>>
>>   void setJson(String key, String value);
>>
>>    // lets browse the keys - in a simple paginated way some how..
>>   Set<String> getCacheKeys( String from, int count);
>> }
>>
>> You could return Objects; jolokia automarshalls things to JSON; though
>> maybe having a specific JSON reading/writing mbean (using
>> jolokia/jackson under the covers) might be neater as it'd work with
>> all JMX tools?
>>
>>
>> So in summary, I'm happy to help hack a little hawtio plugin for
>> infinispan if anyone's interested. Making the cache ObjectName change
>> would be a nice quick win & if more operations get added to the MBeans
>> we can then easily build a better hawtio plugin for Infinispan.
>>
>> Thoughts?
>>
>> --
>> James
>> -------
>> Red Hat
>>
>> Email: jstracha at redhat.com
>> Web: http://fusesource.com
>> Twitter: jstrachan, fusenews
>> Blog: http://macstrac.blogspot.com/
>>
>> Open Source Integration
>> <hawtio-infinispan.png>_______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> --
> Manik Surtani
> manik at jboss.org
> twitter.com/maniksurtani
>
> Platform Architect, JBoss Data Grid
> http://red.ht/data-grid
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
T


More information about the infinispan-dev mailing list