One problem we consistently see at Alfresco clients is the inability of IT support resources to respond to user complaints that “the system is slow”. Performance is a complicated factor and can depend on many different components typically outside of the control of the Alfresco support resources (network, browser, workstation….). This post will present our thoughts on including an Application Performance Monitoring tool along with Alfresco to proactively be able to address the health of the Alfresco system.
Application Performance Monitoring – What is it?
To effectively address user issues or complaints requires a systematic approach. Application Performance Monitoring (APM) tools are a critical component for keeping track of the health of a system from an end-user perspective. APM tools can watch for errors and send out notifications when certain errors are encountered as well give insight into how the system is performing by visualizing overall resource utilization and fine-grain call statistics. Many of our large clients purchase enterprise-grade software such as Dynatrace or Splunk, but, as an opensource alternative, the Elastic APM tool is a great low or no cost alternative. This post will detail how TSG has used Elastic APM to gain insight into the performance of Alfresco installations as part of our OpenContent Administration Suite.
Elastic APM provides an open source tool to quickly and easily visualize the health of our Alfresco installations by utilizing a few components:
- APM java agent to gather application statistics
- APM server to receive statistics and ship them to ElasticSearch
- ElasticSearch to create easily searchable indices
- Kibana for visualization of the data
Installing these services is simple and provide a host of helpful data right out of the box. For example, the Kibana APM tab provides a view of the most frequently used transactions by Controller as well as a high level view of overall transaction durations and requests per minute.
Clicking on any of these Controllers will give a more detailed view of transaction duration distribution. Clicking on transactions gives low level information such as the query that Alfresco runs when making calls with the Alfresco Java API.
Because this data lives in the Elastic Stack, it is easy to make custom searches and dashboards in Kibana. The below screenshot shows a few sample visualizations for Opencontent RESTAnnotation calls to provide quick insight into the most frequently used calls as well as their average duration. These graphs illustrate that the calls used most frequently are also the fastest.
The Elastic APM is a great tool for gathering both high and low level data on the health of a system. This is especially helpful when used in conjunction with performance reporting in OCMS, which tracks durations of common user stories to gain insight into real-world performance from a user perspective. A future post will dive further into how TSG uses the Elastic Stack to achieve this.