How to monitor a deployed Vaadin app?

What options do I have for monitoring a deployed Vaadin app?

For a static web site running in Tomcat, I use the
UptimeRobot
service to regularly do a GET for a tiny web page. I assume this would not be a good idea for a Vaadin app as a big Vaadin session would be needlessly instantiated, and the relatively large JavaScript files would be sent to the monitoring service.

How do you guys and gals sleep soundly knowing your 24x7 Vaadin app is running?

–Basil Bourque

I suppose it depends a lot on what level of certainty you want. If you use the UptimeRobot or a similar service to get a static HTML page in the Vaadin application, you at least know that the server is running and the application is deployed properly. That’s maybe enough for many non-business-critical cases.

To see that the Vaadin servlet is responding properly, you could catch such calls in the service() method of the Vaadin servlet. Perhaps easier, also loading resources served by the Vaadin servlet, such as the styles.css file for the theme, would also give that certainty, and also verify that the theme(s) has been compiled properly before deployment. Note that that would not work if you are serving the themes statically, that is, without the servlet, which is actually recommended for high-load production use. You could also verify that widget set(s) have been compiled properly in the same way.

Higher level of certainty would then require loading a UI and thereby creating a session. For highest certainty, to make sure that the app is in all ways healthy state and database connections are OK, etc, you could use TestBench or Selenium to load the UI and verify it.


Netflix 'Hystrix
’ may be an overkill for your use case, but I am currently evaluating it with the intention of using it in our currently developing web application which uses Vaadin among other tools.

Hystrix is open source and provides the following:

1 Latency and Fault Tolerancy
2 Realtime Operations
3 Concurrency

Hystrix goals includes:

1 Protection from and control over latency and failure.
2 Stop cascading failures in a complex distributed system.
3 Fail fast and rapidly recover.
4 Fallback and gracefully degrade when possible.
5 The Hystrix ‘Dashboard’ provides near real-time monitoring, alerting and operational control of your application.

5 above: used in combination with Netflix servo.

Most of the application servers also come with extensive monitoring suite. In addition you can also add custom (JMX) Mbeans to monitor/control app specific metrics.

It all depends on what your SLA is …