-
Notifications
You must be signed in to change notification settings - Fork 96
Proposal #3: adding auditing capabilities
The goal of this proposal is to add auditing capabilities to GeoStore. The terms auditing, monitoring and logging are often used interchangeably but they have different goals:
- auditing: allow us to understand how the external world interact with our application;
- monitoring: give us information related to the internal execution of our application;
- logging: produces very widespread information that can be very detailed about the whole execution;
That say, if we want to known which is the user that spend more time on a certain map, we will look a the auditing information. If we want to track some performance issue, we will look at the monitoring information. If I want to understand a crash or an unexpected behavior, we will look at the logging information.
In a typical system, auditing information is produced intercepting externals requests to the system. The auditing information is composed of the information contained in the request itself and the information produced during is execution, for example the result code for an HTTP request is only available after the request execution.
Auditing information is typically consumed by third-party applications that will produces reports or provide a user friendly visualization of the data. Keeping this in mind it can be useful to have a customizable output format.
The auditing capabilities should not have a significant impact on the application performance. Furthermore, it should be possible to enable or disable the auditing capabilities during runtime.
We propose to:
- intercept the requests to the REST endpoints and produce auditing information using the request data and available execution data;
- implement a non blocking file output strategy, i.e. the auditing module will not block on heavy load;
- implement a customizable output format based on templating;
- fine-grained configuration that will allow the activation or deactivation of auditing capabilities per REST endpoint;
External dependencies:
The auditing module of GeoServer can be viewed as an example.