- 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.

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 projectList of Extended Plugins
Please find the list of extended plugins provided into the APM libraryMonitored 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:
Loggers Categorization
APM loggers could be categorized as follows:Data loading
TheMonitoredDataLoadingConfig class provides the bean messageHandler() which creates the implementation of the IMessageHandler.
In your source Spring config class you could do the following:
- 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.typeto select the type of the message handler: ** if set toDEFAULT, simply logs detailed information about loading file ** if set toLOG, logs the feed loading in an external file (CSV style) upon completion using the loggercom.activeviam.apm.loaded.feed** if set toWEBHOOK, call a webhook (external service) upon completion of the file loading
The import of the Spring Config classMonitoredDataLoadingConfigimplicitly brings the Spring ConfigMonitoredDataLoadingCacheConfigandMonitoredDataLoadingRestServicesConfig.
MonitoredDataLoadingCacheConfigcreates 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.MonitoredDataLoadingRestServicesConfigexposes 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.