Task 3 of research activity JRA3 in GÉANT3 project is dedicated to developing GEMBus, a multi-domain bus that uses the Enterprise Service Bus (ESB) concept to offer a platform for deploying and composing services across several administrative domains [1].
One of the core services available in GEMBus is the Accounting, on which our team in i2CAT has been working. This service provides aggregated information on service usage, in order to support monitoring and troubleshooting. The architecture of this service consists of a common accounting repository, where all collected data from each ESB instance is stored, and an Accounting Module, which is deployed at every participating ESB.
The Accounting Module consists of the following main building blocks:
1. Data Collection: this block is in charge of collecting basic, “raw” data about the services. Data collection is done at the ESB level. This is an asynchronous operation, as it is triggered each time a service is being called. The function of this block is to capture every message exchanged between services, as these messages are precisely the source of information to evaluate GEMBus services behavior and performance.
2. Data Storage: this component stores the raw data in the common accounting repository. This operation occurs in conjunction with data collection; in other words, the collection operation is always followed by the operation of storing the collected raw data. Consequently, this is an asynchronous operation as well.
3. Data Processing: this block computes the metrics of interest related to each service. In order to fulfill this operation, the Accounting Module must be aware of the metrics it should compute for each of the services registered with the system. Which metrics are appropriate for a particular service or how to define them is out-of-scope of our work. Instead, we assume the metrics are either part of a basic set provided by the Accounting module itself, or they are specified by the service provider. Data processing occurs asynchronously; by that we refer to the fact that the raw data is processed only when a request is received.
4. Information Reporting: this component is responsible for producing a report in a human-readable format. Once the data processing has been concluded, the information reporting block produces a report containing a complete view, including data obtained across all available ESBs.
Let us give a short example to explain the workflow in the Accounting Module, also illustrated in the figure below. We consider a situation when a system user or system administrator would like to get information on a certain service, therefore he will issue a request to the Accounting Module (Step 1 from the figure). Next, the Data Processing component will retrieve the raw data collected so far, from the Data Storage (steps 2 and 3), and it will compute the metrics of interest, which are passed to the Information Reporting component (step 4). This block will further produce a report, to be delivered to the system user or system administrator who issued the request in the first place (step 5).
Currently, the Accounting service supports three operations: configuration of the data storage, listing all services about which accounting data is available, and generating an accounting report for a specific service.
This post was written by Steluta Gheorghiu
[1] GEMBus provides easy access to GÉANT services across the GÉANT Service Area