I've been working with Jamon in the past, which served us very well during perfomance improvements and day to day monitoring. We used a quite old version there, that had no web interface etc. but we logged the aggregated results every five minutes and used Splunk to analyse the results. This helped us a lot (together with some other datasources also available in Splunk).
I am on a different project now, and as usual there is a need to get more insight into the applications hot spot. We are horizontally scaling an application, but also want to improve on the hotspots. There is no Splunk and we just want global insights initially on the beans performance, as this is easy to do and will probably give good starting points for further investigation.
However, after downloading JAMon, adding the jar to our grails application, and installing the jamon.war file on a separate tomcat instance, I found no documentattion specifying HOW to access the JVM's running the application we want to monitor.
The video shows that it should be possible as the Jamon monitoring page shows both the Jetty and Tomcat data from different JVM's. But the video does not tell how to configure it so you get those multiple hosts.
Is there documentation (tutorial perhaps) that shows how to configure the Jamon webapp to be able to display data from my application running on a different jvm ? And do I need to do something for the jvm's to be monitored as well ?
Regards,
Wim Veldhuis,
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I will type something shorter this time and wait for follow on questions from you.
1) Jamon allows you to look at various jvm instances jamon stats with the war if you use have hazelcast in your classpath. See this page for more info. There is also a video link that talks about configuration at the end of the video: http://jamonapi.sourceforge.net/distributed_jamon.html
2) Alternatively you can take advantage of the fact that jamon statistics are serializable. The jamon war can look in the 'jjamonDataPersister.directory' for any jamon serialized files of the format *.ser and your war can display them. JAMon can save these on a timer or you can yourself. You can move these serialized files to whereever you are running the jamon war and they can be displayed.
Regrettably I do not want to use hazelcast at this moment. This has to do with network topology, infra structure support and a low as possible impact.
It looks like the best intial route to take will be to write a reporter (if it is not in the library) that writes out the data in CSV format in fixed intervals, which we then can initially analyse with excel or different tooling. From its name, LocalJamonFilePersister might be a good example to work from, but will look into that later this week (this is voluntary work at the moment, to improve my knowledge of monitoring and the application).
Regards,
Wim Veldhuis.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Sounds good. The library doesn't write data as csv, but the web application can. LocalJamonFilePersister would probably be a good place to work from. Still it might be useful to serialize the jamon data as it will give you the whole web of jamon objects including stack traces as well as all the other data. You could write both the serialized data and the csv. The advantage of the jamon serialized data is you can move it to the jvm that has jamon war and view all of the jamon data without doing any extra code.
If you have any further questions don't hesitate to ask.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I've been working with Jamon in the past, which served us very well during perfomance improvements and day to day monitoring. We used a quite old version there, that had no web interface etc. but we logged the aggregated results every five minutes and used Splunk to analyse the results. This helped us a lot (together with some other datasources also available in Splunk).
I am on a different project now, and as usual there is a need to get more insight into the applications hot spot. We are horizontally scaling an application, but also want to improve on the hotspots. There is no Splunk and we just want global insights initially on the beans performance, as this is easy to do and will probably give good starting points for further investigation.
However, after downloading JAMon, adding the jar to our grails application, and installing the jamon.war file on a separate tomcat instance, I found no documentattion specifying HOW to access the JVM's running the application we want to monitor.
The video shows that it should be possible as the Jamon monitoring page shows both the Jetty and Tomcat data from different JVM's. But the video does not tell how to configure it so you get those multiple hosts.
Is there documentation (tutorial perhaps) that shows how to configure the Jamon webapp to be able to display data from my application running on a different jvm ? And do I need to do something for the jvm's to be monitored as well ?
Regards,
Wim Veldhuis,
Unfortunately I typed a long response to your question complete with links and sourceforge lost it when i posted.
I will type something shorter this time and wait for follow on questions from you.
1) Jamon allows you to look at various jvm instances jamon stats with the war if you use have hazelcast in your classpath. See this page for more info. There is also a video link that talks about configuration at the end of the video: http://jamonapi.sourceforge.net/distributed_jamon.html
2) Alternatively you can take advantage of the fact that jamon statistics are serializable. The jamon war can look in the 'jjamonDataPersister.directory' for any jamon serialized files of the format *.ser and your war can display them. JAMon can save these on a timer or you can yourself. You can move these serialized files to whereever you are running the jamon war and they can be displayed.
Here is the properties file: https://github.com/stevensouza/jamonapi/blob/master/jamon/src/test/resources/jamonapi.properties#L43
Here is a simple test that shows how to serialize jamon data: https://github.com/stevensouza/jamonapi/blob/master/jamon/src/test/java/com/jamonapi/MonitorCompositeTest.java#L60
Thanks for the speedy answer.
Regrettably I do not want to use hazelcast at this moment. This has to do with network topology, infra structure support and a low as possible impact.
It looks like the best intial route to take will be to write a reporter (if it is not in the library) that writes out the data in CSV format in fixed intervals, which we then can initially analyse with excel or different tooling. From its name, LocalJamonFilePersister might be a good example to work from, but will look into that later this week (this is voluntary work at the moment, to improve my knowledge of monitoring and the application).
Regards,
Wim Veldhuis.
Sounds good. The library doesn't write data as csv, but the web application can. LocalJamonFilePersister would probably be a good place to work from. Still it might be useful to serialize the jamon data as it will give you the whole web of jamon objects including stack traces as well as all the other data. You could write both the serialized data and the csv. The advantage of the jamon serialized data is you can move it to the jvm that has jamon war and view all of the jamon data without doing any extra code.
If you have any further questions don't hesitate to ask.