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

Manik Surtani msurtani at redhat.com
Tue Mar 19 11:07:04 EDT 2013


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




More information about the infinispan-dev mailing list