Remote-RTDS

Overview Copied

The Remote-RTDS plugin is a Collection Agent plugin that monitors Refinitiv Real Time Distributed System’s components like Real Time Connector (RTC), Advanced Distribution Server (ADS), and Advanced Distribution Hub (ADH).

The plugin connects to the Refinitiv component’s REST API to obtain the data to be published as datapoints. You can specify the data to collect by defining the data groups, key-value-records, and table-records in the config file.

Prerequisite Copied

Geneos environment Copied

The Remote-RTDS plugin requires the following versions of Geneos components:

The Remote-RTDS plugin jar file is packaged with Netprobe, and is stored in the collection_agent folder. Alternatively, you can download separate binaries for the Remote-RTDS plugin from ITRS Downloads.

Set up your Collection Agent plugin Copied

Set up your collector in the Gateway Setup Editor by adding the following configuration in Dynamic Entities > Collectors. For more information, see Collectors in Dynamic Entities.

Configuration reference Copied

Below is an example YAML file which may require some changes for your project’s configuration:

    # (Required) REST API base URL, in the format <http/https>://<host:port>
    baseUrl: http://127.0.0.1:8080

    # (Required) Security Key to connect to REST API
    securityKey: <securitykey>
    
    # (Required) hostname to be used as value of $host in instance names.
    # This will be used as a dimension.
    # This is normally the hostname of the machine running the RTDS component.
    hostname: <hostname>

    # (Required) Component instance to be used as value of $instance in instance names
    componentInstance: <instance number>

    #Example: $host.$instance.rtc.trlsManager will expand to geneos-lab3.1.rtc.trlsManager
    
    # List of data groups to monitor
    # Each group contains a set of data records.
    # This is ideally a group of related data that monitor a specific aspect of the system.
    dataGroups:
          # Each group can contain keyValueRecords and/or tableRecords. It is required to have either 1 or both.
          # (Required) Name of the data group. This will be used as a dimension for the datapoints.
        - name: "RTC Info"

          # keyValueRecords are records with fixed class names and instances, with a list of variables to publish as datapoints.
          # The dimensions of key-value-record datapoints are fixed to the hostname, component instance and data-group name.
          keyValueRecords:
            # (Required) The RTDS resource classname. This can be obtained from the RTDS monitoring tool (e.g. rtcmon, adsmon).
          - className: "ConsumerDb.SinkDist"
            # (Required) The RTDS resource instance. This can be obtained from the RTDS monitoring tool (e.g. rtcmon, adsmon).
            # instance names can use $host and $instance variables, which will expand to the actual hostname and component instance.
            # Example:  If hostname is defined as geneos-lab3, and componentInstance is 1,
            # $host.$instance.rtc.trlsManager will expand to geneos-lab3.1.rtc.trlsManager.
            instance: "$host.$instance.rtc.userDatabase"
            # (Required) A list of variables of the specified class and instance that will be published as datapoints.
            # variable names can also be obtained from the RTDS monitoring tool or via the REST API.
            variables:
            #   (Required) The variable name.
              - variable: activeSslMounts

            #   (Optional) The alias to be used for the variable.
            #   If defined, this will be the name of the datapoint.
            #   If not specified, the variable name will be used.
                alias : "Active SSL Mounts"

            #   (Optional) The datapoint type. Values can be: Gauge, EntityAttribute, StatusMetric, Counter
            #   If not specified, the data type will be deduced from the variable type, as specified in the Refinitiv data.
                dataType : Gauge

            #   (Optional) The unit of the variable, if defined as a Gauge or Counter.
            #   Format is the Unit description in Obcerv platform. If not specified, none will be used.
                unit: "per second"

            #   (Optional) When set to true, this will calculate the rate of change of the variable between sampling.
                publishAsRate: false
            
            #   (Optional) This is used to specify how to calculate the change, when the value has wrapped around
            #   (i.e. less than the previous collection value).
            #   Values can be: signed, unsigned. Default is signed. 
                wrappingType: unsigned
            
            # (Optional) The children records from the parent instance.
            children:

            # instance name that will be appended to the record seed.
            # If instance name in the key-value-record is "geneos-lab3.1.rtc.userDatabase",
            # and the children instance name is "geneos-lab3.1.rtc.userDatabase.dataStreams"
            # the instanceSuffix should be set to ".dataStreams".
            - instanceSuffix: ".dataStreams"

              # (Required) Class name of the children record
              className: "ConsumerDataStream"

              # (Required) Same as variables in the parent key-value-record.
              variables:
              - variable: active

        # tableRecords are records with custom dimensions such that datapoints can appear in a table.
        - name: "RTC Users"
          tableRecords:
            # (Required) The record seed is the base instance name, in regex format.
            # When using $host and instance, the regex should be escaped.
            # Example: "\\$host\\.\\$instance\\.rtc\\.userDatabase\\.user([^.]+)$"
          - recordSeed: "geneos-lab3\\.1\\.rtc\\.userDatabase\\.user([^.]+)$"

            # (Required) The resource classname that will be used when obtaining instances to match the record seed.
            className: "GlobalUser"

            # A table-record is required to have either keyElements, variables, or children, or a combination of the three.

            # (Optional) Key elements, i.e. a portion of the instance name, that will be used as dimension or datapoint.
            keyElements:
              # (Required for key-element) Either a capture group number or capture group name defined in the record seed regex.

              # Capture group number from the record seed regex.
              # The matching value for the capture group will be used as the value for the dimension or datapoint, as defined in dataType.
            - captureGroupNum: 1

              # (Required, if captureGroupNum is defined) The name to be used as dimension key or datapoint name.
              alias: number

              # (Optional) The data type for this element. Can be dimension or datapoint to be published.
              # If this is set as dimension, this will be used as a dimension for all the datapoints in this record.
              # Values can be: Dimension, Gauge, EntityAttribute, Counter, StatusMetric.
              # If not defined, this will default to EntityAttribute.              
              dataType: Dimension

              # Capture group name as specified in the recordSeed regex. Example: geneos-lab3\\.1\\.rtc\\.userDatabase\\.user(?<user>[^.]+)$
            - captureGroupName: "user"

              # (Optional for captureGroupName) The name to be used as dimension key or datapoint name, depending on the dataType.
              # If not defined, the captureGroupName will be used.
              alias: dimension name

              # (Optional for captureGroupName) The data type for this element. Can be dimension or datapoint to be published.
              dataType: EntityAttribute

            # (Optional) A list of variables of the class, with instance matching the record seed that will be used as dimension or datapoints.
            # Same as variable config in keyValueRecords. But, dataType can also be set to Dimension in table-record variables.
            variables:
              variable: name

            # (Optional) The children records from the parent record seed.
            children:

              # instance name that will be appended to the record seed
            - instanceSuffix: ".datastream"

              # (Required) Class name of the children record
              className: "ConsumerDataStream"

              # (Required) Same as variables in keyValueRecords, but dataType can also be set as Dimension.
              variables:
              - variable: opensFromOverflowQueue
              - variable: uniqueitems

Configure your mappings Copied

Select one of the options listed below to configure your dynamic mappings.

HTTPS connection Copied

It will use the default Java trust store and key store for HTTPS connections.

Data type conversion Copied

The table below shows the conversion of RTDS variable types to the published datapoint type, if data-type is not defined in the configuration.

RTDS Variable Type Datapoint Type
Gauge, Gauge Config Gauge
Numeric, Numeric Config Gauge
Counter Counter
All others Status Metric

Gateway setup template for RTC monitoring Copied

A Remote-RTDS Collector template file is packaged with the Gateway to monitor different aspects of the RTC component using the Remote-RTDS plugin. This is similar to the samplers offered in RTDS integration.

These include all relevant runtime monitoring information, as agreed between ITRS and Refinitiv.

The template file is located in <gateway package>/templates/remote_rtds_collector_tmpl.xml. To use the template, follow these steps:

  1. Open the Gateway Setup Editor.
  2. In the Gateway Setup Editor, right-click on the Includes folder and then select New Include.
  3. Change the Priority to any value other than 1.
  4. In the Location field, enter the path of the include file (e.g. <gateway package>/templates/remote_rtds_collector_tmpl.xml).
  5. Load the file. Go to Dynamic Entities > Collectors > RTC and set the correct values for baseUrl, securityKey, hostname, and componentInstance.
["Geneos"] ["User Guide"]

Was this topic helpful?