Skip to main content
ActivePivot APM (Application Performance Monitoring) is a solution for monitoring the healthiness and performance of ActivePivot instances. It provides several features easing the support work, and reducing the burden of maintaining and troubleshooting ActivePivot. ActivePivot APM provides the following main features:
  • Query monitoring: Monitor in-progress, successful or failed MDX queries, their associated execution logs, and the historical performances
  • Datastore monitoring: Display the trend of datastore sizes over time; Monitor the datastore transaction times; View successful and failed CSV loading, and their associated execution logs.
  • Netty monitoring: Monitor the size of data transferred between nodes, in terms of single query execution, all queries executed by a user, or all activities, etc.
  • Monitoring activities by user: Monitor activities (e.g. query execution) on a user level.
  • JVM monitoring: Overall JVM status, including CPU, heap and off-heap memory, threads, GC, etc.
APM is built with a number of open-source tools. Below is a high-level illustration of an end-to-end monitored ActivePivot relying on APM library, additional monitoring tools and their interaction.

Configuration

Adding APM in an ActivePivot project

The APM library relies on Extended Plugins or Types overriding to extend core component with monitoring capabilities. In order to load monitoring classes, grab the APM jar and add it as a dependency of your project

List of Extended Plugins

Please find the list of extended plugins provided into the APM library

Monitored Spring Configuration

APM library relies on Spring BeanPostProcessor to automatically customize and add monitoring capabilities within ActivePivot configuration classes.
Additionally, the library offers additional configuration classes detailed in the following table:
In case there is a need to wait for the APM stack to be started before triggering some action, one can use the following Spring annotation on the required bean:

Logging

APM relies on SLF4J with a Logback binding for the logging part.

ActivePivot IHealthEventHandler monitoring

The ActivePivot core code provides some monitoring features through health events. APM defines a specific QuartetType for the IHealthEventHandler class which overrides all the underlying health event handlers to make sure they are printed properly to SLF4J. Additionally, ActivePivot core forces the logs generated by the ILoggingHealthEventHandler implementations to be under the same logger name (com.activeviam.health.monitor.ILoggingHealthEventHandler). We do not think the best approach as it could be necessary, in some occasion, to split the logs into different files. This is why the library contains the following overrides:

Configuration

Logback supports custom conversion specifiers allowing to display specific information properly within the logs. APM defines three custom converter detailed below: Then, Logback configuration example can make use of these converters as follows:
If ELK setup is used, the library is ready for producing JSON logs for feeding Logstash and Elasticsearch. This can be done through an additional JSON appender as follows:

Loggers Categorization

APM loggers could be categorized as follows:

Data loading

The MonitoredDataLoadingConfig class provides the bean messageHandler() which creates the implementation of the IMessageHandler. In your source Spring config class you could do the following:
Depending on the properties, the bean allows to:
  • log start/end processing of some input data, as well as the errors, through the logger com.activeviam.apm.source
  • log the rejections of the input data through the logger com.activeviam.apm.source.rejection
  • specify the property feed.loading.message.handler.type to select the type of the message handler: ** if set to DEFAULT, simply logs detailed information about loading file ** if set to LOG, logs the feed loading in an external file (CSV style) upon completion using the logger com.activeviam.apm.loaded.feed ** if set to WEBHOOK, call a webhook (external service) upon completion of the file loading
The import of the Spring Config class MonitoredDataLoadingConfig implicitly brings the Spring Config MonitoredDataLoadingCacheConfig and MonitoredDataLoadingRestServicesConfig.
  • MonitoredDataLoadingCacheConfig creates a cache allowing to keep all the files loaded as well as their status. It is used later on by the REST service to return the loaded status of a file.
  • MonitoredDataLoadingRestServicesConfig exposes a REST service allowing the get the loading status of a file. The service is accessible alongside the ActivePivot core RESTful services, through the endpoint /cube/apm/dataloading.

Properties exposed

List of the properties exposed as well as their default value