Skip to content

DeviceQoSEvaluator

This Support System has the purpose of collecting and calculating Key Performance Indicators (KPIs) from the devices operating within a Local Cloud. Based on the calculated KPIs this system can assist in finding the best service provider system(s) to fulfill specific requirements.

Learn more:
Abstract System Description (SysD)

Services

qualityEvaluation

The purpose of this service is to filter or sort systems based on a specified KPI set with associated weighting factors over a defined time window. The service is offered for both application and Core/Support systems.

Learn more:
Abstract Service Description (SD)
generic_http (IDD) | generic_https (IDD)
generic_mqtt (IDD) | generic_mqtts (IDD)
since: v5.2.0

Service metadata:

{
    "evaluationType": "basic-device-kpi"
}

filter

This service operation filters out any systems from a given list whose calculated QoS scores exceed a specified threshold.

Example: generic_http | generic_https
Example: generic_mqtt | generic_mqtts

sort

This service operation sorts a given list of systems according to their calculated QoS scores.

Example: generic_http | generic_https
Example: generic_mqtt | generic_mqtts


deviceQualityDataManagement

The purpose of this service is to query the measurement metric values and also to trigger the synchronization with ServiceRegistry Core System manually. This service is offered for Core/Support systems.

Learn more:
Abstract Service Description (SD)
generic_http (IDD) | generic_https (IDD)
generic_mqtt (IDD) | generic_mqtts (IDD)
since: v5.2.0

query

This service operation queries raw measurement data using the specified filters.

Example: generic_http | generic_https
Example: generic_mqtt | generic_mqtts

reload

This service operation initiates the synchronization of system and device entities

Example: generic_http | generic_https
Example: generic_mqtt | generic_mqtts


generalManagement

Its purpose is to get some information about the hosting system’s behavior, such as log entries and configuration settings. The service is offered for administrative Support systems.

Learn more:
Abstract Service Description (SD)
generic_http (IDD) | generic_https (IDD)
generic_mqtt (IDD) | generic_mqtts (IDD)
since: v5.2.0

get-log

This service operation lists the log entries of the system that match the filtering requirements.

Example: generic_http | generic_https
Example: generic_mqtt | generic_mqtts

get-config

This service operation lists the current values of the specified configuration settings.

Example: generic_http | generic_https
Example: generic_mqtt | generic_mqtts

Measurement Routines

Basic

Round-Trip Time (RTT) measurements are performed towards the Local Cloud’s devices without requiring any additional effort. For detailed information about the RTT measurement process, refer to the SysD document.

In order to calculating proper RTT based KPIs, a reasonable rtt.measurement.timeout shall be configured. This timeout defines the maximum allowed duration for a connection attempt and is treated as the upper bound of the measurement window, meaning that all RTT measurements are normalized relative to this value. Also, this timeout must be always less than the augmented.measurement.job.interval.

Augmented

Augmented measurement groups and types are uniquely identified by hierarchical, OID-like unique identifiers.

Performing augmented measurements requires two thing:

  • Installing a device agent on the hosting devices (hardwares, virtual machines or containers).
  • Specifying the supported measurements on system level by using system metadata.

Device Agent

The device-side agent is a lightweight monitoring server implemented in Python. It continuously samples the current performance in every second per OID sub-groups and caches the collected values in a 30-second time window. The DeviceQoSEvaluator system periodically retrieves these samples and computes the corresponding OID statistical values, which are then stored for a configurable retention period. Operators can enable or disable specific OID sub-groups through the agent’s configuration.

System Metadata

If a system of the Local Cloud is being hosted on a device that running the device agent, it shall advertiese its enabled OID sub-groups through the ServiceRegistry Core System by using the system metadata the following way:

{
    "qos": {
        "deviceAugmented": [ "1.4", "2.1", "3.1", "3.2" ]
    }
}

Configuration

The system configuration properties can be found in the application.properties file located at /src/main/resources folder.

Note: During the build process this file is going to be built into the executable JAR, but also going to be copied next to the JAR file. Any modification in the configuration file located next to the executable JAR file will override the built in configuration property value.

General parameters

See the general configuration properties.

Database parameters

spring.datasource.url

URL to the database.

spring.datasource.username

Username to the database.

spring.datasource.password

Password to the database.

spring.datasource.driver-class-name

The driver provides the connection to the database and implements the protocol for transferring the query and result between client and database.

spring.jpa.show-sql

Set to true in order to log out the SQL queries.

spring.jpa.properties.hibernate.format sql

Set to true to log out SQL queries in pretty format. (Effective only when 'spring.jpa.show-sql' is 'true')

spring.jpa.hibernate.ddl-auto

Auto initialization of database tables. Value must be always 'none'.

Custom parameters

authenticator.credentials

The credentials that this system will use for performing the login operation when the authentication policy is outsourced.

authenticator.credentials={\
    '<credential-name>': '<credential-value>' \
}

enable.management.filter

Enable or disable authorization for accessing the management services. Can be true of false.

management.policy

Way of authorizing the management service requester systems. Can be:

  • sysop-only, when the authenticated requester system has system-operator role that ensures overall management permission.
  • whitelist, sysop-only and when the authenticated requester system is whitelisted in the management.whitelist configuration property that ensures overall management permission.
  • authorization, sysop-only and whitelist and when the authenticated requester system has appropriate service permission according to the ConsumerAuthorization Core system.

management.whitelist

Name of the systems which can access to management services in case of whitelist policy is effective.

enable.blacklist.filter

Enable/disable automatic service requester system name verification against to cloud level blacklist. Can be true or false.

force.blacklist.filter

Whether or not the service requests should be refused when the blacklist server is not responding. Can be true or false.

blacklist.check.exclude.list

Comma-separated list that contains systems whose requests are served without checking the cloud level blacklist, even if blacklist is enabled.

max.page.size

Specifies the maximum number of records a page can contain in case of pageable service responses.

measurement.organizer.job.interval

Specifies the interval (in seconds) at which the device and system tables are synchronized by querying the ServiceRegistry Core System, and the measurements are reorganized. The interval cannot be less than 10 seconds.

rtt.measurement.job.interval

Specifies the frequency (in seconds) for measuring the round-trip time to the devices. The frequency cannot be less than 5 seconds.

rtt.measurement.timeout

Specifies how long to wait (in milliseconds) for a response during a round-trip time measurement. This value cannot be less then 3000 milliseconds, must be less than the rtt.measurement.job.interval and is also treated as 100% (worst case) when scaling during the evaluation process.

augmented.measurement.job.interval

Specifies the frequency (in seconds) of fetching the augmented measurement results from the devices. The frequency cannot be less than 5 seconds.
Note: The device agent caches measurements within a 30-second time window. Any frequency higher than 30 seconds will result measurement loss.

evaluation.time.window

Specifies the duration (in seconds) of the time window to be evaluated. The duration must be less than raw.measurement.data.max.age.

cleaning.job.interval

Specifies the interval (in seconds) at which the cleaning job is executed. The interval cannot be less than 60 seconds.

raw.measurement.data.max.age

Specifies after how many minutes the raw measurement data is removed from the database.

inactive.device.max.age

Specifies after how many minutes inactive devices are removed from the database. Removal occurs only if no raw measurement data is available for the device.

Logging configuration

The logging configuration properties can be found in the log4j2.xml file located at src/main/resources folder.

Note: During the build process this file is going to be built into the executable JAR, but it is also possible to override it by an external file. For that use the following command when starting the system:

java -jar arrowhead-device-qos-evaluator-x.x.x.jar
     -Dlog4j.configurationFile=path-to-external-file

JDBC_LEVEL

Set this to change the level of log messages in the database. Levels: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.

CONSOLE FILE LEVEL

Set this to change the level of log messages in consol and the log file. Levels: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.

LOG_DIR

Set this to change the directory of log files.