Monitoring
Dossier Organizer provides a comprehensive set of metrics that allow monitoring and analyzing the performance and health of your application. You can use this information to identify bottlenecks, optimize resource usage, and ensure the overall reliability of your system.
Exposure takes place via Spring Boot Actuator standards and also includes standard metrics such as startup time, resource utilization, JVM metrics, Tomcat sessions, and more.
Configuration
To enable metrics, use the appropriate settings in the Helm values:
values.yml
management:
endpoints:
web.exposure.include: health, prometheus, metrics
prometheus:
metrics:
export:
enabled: true
jmx:
metrics:
export:
enabled: true
This example enables the health, prometheus and metrics endpoints.
Access Metrics
Prometheus
If prometheus is enabled, the metrics will be propagated under the http://localhost:8080/actuator/prometheus endpoint and is scraped by the Prometheus server.
The metrics can be visualized, e.g. with Grafana by adding the prometheus adapter.
JMX
The JMX exposure exposes the metrics via a default Java MBean server handling the jmx request. Depending on the JVM Vendor there are specific Java Mission Control Derivatives which can be used to access the JVM and read the metrics.
By default, most JDKs come with the JConsole-Tool, which provides the most basic access to the metrics.
Application Metrics
Basic application metrics like CPU usage, JVM memory will be provided via the default actuator. In addition, application-specific metrics are provided to gain measurements specific to the application.
The metrics will be propagated under the http://localhost:8080/actuator/metrics endpoint.
Metrics recommended to be included in monitoring and alerting are written in bold.
Organizer ("fusion")
The most important metric here are response times to retrieve collections and their elements.
Metric Name | Description |
---|---|
fusion.collection-type.get | Duration to get collection type by id |
fusion.collection-type.all | Duration to get all collection types |
fusion.collection-type.save | Duration to save a collection type |
fusion.collection.element.permissions | Duration to retrieve collection element permissions |
fusion.collection.get | Duration to retrieve a collection (current version) |
fusion.collection.get-version | Duration to get collection (version specified by timestamp) |
fusion.collection.get-version-list | Duration to get version list |
fusion.collection.get-version-list-with-metadata | Duration to get history with metadata |
fusion.collection.permissions | Duration to get collection permissions |
fusion.collection.create | Duration to update collections |
fusion.collection.layout | Duration to get collection type by id |
fusion.element.permissions | Duration to get collection element permissions |
fusion.content.get | Duration to get element content as a multipart stream |
fusion.index.rebuild | Duration to rebuild index |
fusion.index.query | Duration to query current collections and get resulting collection IDs |
fusion.lock.extend | Duration to extend a lock |
fusion.lock.get | Duration to get lock status |
fusion.lock.acquire | Duration to acquire a lock |
fusion.lock.release | Duration to release a lock |
fusion.lock.contest | Duration to contest a lock |
fusion.lock.contest.resolve | Duration to resolve a lock contest |
fusion.seen.get | Duration to get seen/unseen info (current principal) |
fusion.seen.persist | Duration to persist seen/unseen |
fusion.seen.delete | Duration to delete seen/unseen |
Viewer
Actually serving documents and rendering their content is performed by the viewer. Caching is also an important topic here when encountering performance issues.
Metric Name | Description |
---|---|
jwt.fusion.document.load | Duration of a complete document load |
jwt.fusion.document.load.firstpage | Loading a document up to its first page |
jwt.fusion.content.stream.request | Response time for content requests |
jwt.fusion.content.stream.download | Download time for content streams |
jwt.fusion.document.load.success | Number of successful document loads |
jwt.fusion.document.load.load.failed | Number of failed document loads |
Miscellaneous | Some of the viewer metrics are listed here: |
Tile Rendering Metrics | see jadice webtoolkit monitoring - tile-rendering |
Cache Metrics | see jadice webtoolkit monitoring - cache |
Document Loading Metrics | see jadice webtoolkit monitoring - loading-documents |