One of my customers moved their persistence from “old” relational style to modern in-memory data grid and tasked me to think on how we could integrate this into our monitoring. So here I am writing about Gemfire / Apache Geode monitoring.
The project uses AppDynamics as APM solution to monitor every user request from the frontend all the way to the backends. AppDynamics is one of the leading APM solutions on the market, and a long term partner of NovaTec APM consulting group. AppDynamics does provide a wide range of technologies out of the box. For (nearly) everything else it offers add-on plugins (see https://www.appdynamics.com/community/exchange/). Nearly everything, Gemfire/Geode is still missing, or should I say was missing 🙂
Gemfire built-in monitoring was not enough
GemFire/Geode comes with two built-in options to monitoring. The first is built-in JMX metrics that are collected as the core of the platform. It gets even better. The guys did a great job of integrating it. As long as you have one node within the system, you get the metrics of all servers. You can easily query the MBeans using a tool like jconsole (which comes with every JDK distribution).
The second option is a webbased UI called “Pulse”. Pulse reads information from the JMX sources. Actually I liked pulse quite a lot. But it had one major drawback: It is another tool. I like to have my metrics together within one tool.
AppDynamics monitoring extension
Thus I built an extension based on the plugin mechanism of the AppDynamics machine agent to read the metrics provided by the JMX system and to provide it within the AppDynamics ecosystem. This allows to easily set alertings (so-called health rules) on the gathered metrics, visualize them in dashboard, etc.
Please feel free to use this extension if you have the same challenges as we had. You can find it at https://github.com/stefansiegl/appdynamics-gemfire-monitoring-extension. Installing the extension is a piece of cake: Simply unzip it to an AppDynamics machine agent, configure where your Gemfire cluster is located and you see metrics in AppDynamics.
AppDynamics monitoring extension in action
So that’s it for now.I am currently on the task to integrate Gemfire as Backend into the AppDynamics Flowmap. I will get back to you once this is done. What do you use to monitor GemFire? What metrics are key metrics for you and what threshold would you put on them?
PS: If you are not using AppDynamics and want to monitor GemFire I found another nice project that allows to read data from GemFire, store them in Influx and visualize them in Grafana. Have a look at: https://github.com/tzolov/geode-dashboard
Update: AppDynamics approved my extension. You can now also find it on the community portal: https://www.appdynamics.com/community/exchange/appdynamics-monitoring-extension-for-pivotal-gemfire-apache-geode/