2013-04-19

Apache Camel web dashboard with hawtio

I have been waiting patiently for James Strachan to write a blog to introduce us to his latest project - hawtio. This project surely has the potential to become as great or even greater than Apache Camel.

In a one liner, hawtio is:

hawtio is a lightweight and modular HTML5 web console for managing your Java stuff.

Today James is busy doing the release of the hawtio 1.1. This is a very hawt release, that has great functionality already, so we should start spread the word about this project. We have also talked about doing small videos, as recoding what you do in a web browser is easy.

Anyway this blog entry today of mine, is not to steal the thunder from James. I would let him do the introduction of hawtio, and his vision for creating this project.

So in hawtio we have a Camel plugin, that allows you to gain insight into your running Camel applications. So the screenshot below is from hawtio running as a plain web application deployed to JBoss AS 7.1.1. You can use any web container of choice, such as Tomcat, Jetty etc. Though I was tasked to give the JBoss AS a little test spin, and thus had the opportunity to take a screenshot. I have also deployed the Apache Camel example camel-example-servlet-tomcat in the container (its also just a WAR application).

Dashboard in hawtio, with a live Camel diagram and table, updating in real time.
hawtio allows you to create custom dashboards, where you can add any part of a view to the dashboard, and position the views as you please. So I created a Camel dashboard, which has a live diagram of the route from the camel-example-servlet-tomcat. As well a table with the running routes and their state and some key metrics. All the data on the dashboard updates in real time, which is very cool.

And the dashboards can be saved to a git repository, and you can share them with your team. And as its just a URL you can easily access the dashboard, by just copying the url from the browser address bar.

Anyway hawtio has a lot more cool stuff already. And we are having fun hacking on it. Its of course a 100% open source project, ASL licensed, and hosted at github. Everybody is welcome to contribute and hack on it.

Stay tuned, more blogs and videos should be coming in the future.

11 comments:

Eugene Polyhaev said...

Hi Claus!

Recently I started to wonder how to monitor my Camel application.
Here we go, you post this review on hawtio..

Is there any other nice monitoring tools for Camel applications the communitity should be aware of?

Claus Ibsen said...

There is a few links to external web consoles from this page: http://camel.apache.org/web-console

And you can look at the links from this page which talks about monitoring Camel:
http://camel.apache.org/articles.html

And you can hook existing monitoring tools to leverage the JMX API of Camel:
http://camel.apache.org/camel-jmx.html

And there is a little camel-nagios component to send checks to nagios:
http://camel.apache.org/nagios

Bevo said...

Hi Claus,

Very exciting development! We were looking to build a web console for displaying and monitoring Camel and found this project.

Questions:
1. Does this support route modification? Say something as simple as modifying the transform expression provided by the camel-example-servlet-tomcat example.
1a. Is the goal to extent the hawtio plug-in with the ability to modify routes using a web console or will this remain focused on monitoring only?
1b. If we needed business-friendly web console to modify the transform expression, what would you suggest?

Claus Ibsen said...

Yes in the upcoming 1.2 release you can edit Camel routes in XML and save them back.

There is also started the work on a mini Camel UI editor where you can design new Camel applications using forms and drag and drop. So down the road there will be a very business friendly web UI for developing and editing Camel routes.

Ramon Buckland said...

Really nice Claus - and really nice james!

This is definitely a big plus for the UI for Camel.

Ashutosh Kumar said...

Hi Claus
I have installed hawtio in JBoss Fuse 6.0.x . I get management console but camel does not appear. Do I need to install seperate plugin for camel?

Claus Ibsen said...

hawtio only shows plugins for what is installed and running currently in your JVM. So if you have NO Camel in the JVM then there is no Camel plugin.

If you install a bundle with a Camel application then hawtio should show a Camel plugin.

Abbas Zoher Attarwala said...

I'm trying to monitor my camel app started by spring boot on hawtio. I have enabled JMX on my camel-app. But hawtio needs a Jolokia agent for the same. How can I register a jolokia agent within my camel-app? Or does camel do that by default?

Abbas Zoher Attarwala said...

I'm trying to monitor my camel app started by spring boot on hawtio. I have enabled JMX on my camel-app. But hawtio needs a Jolokia agent for the same. How can I register a jolokia agent within my camel-app? Or does camel do that by default?

Claus Ibsen said...

I suggest to read about jolokia agents here: http://jolokia.org/agent.html

And then maybe the jolokia project could create a special spring boot agent if its needed. To make it easy to use jolokia with spring boot apps.

Claus Ibsen said...

For spring-boot apps, you may want to take a look at fabric8, as it can provision and mange spring-boot apps too, besides karaf/tomcat/java main/jetty/verx and others.

And fabric8 comes with hawtio out of the box.

We are currently working on some quickstart examples for spring-boot with fabric8 for the upcoming 1.1. release.

Keep an eye on: http://fabric8.io/ and https://github.com/fabric8io/fabric8/tree/master/quickstarts/camel-spring-boot