8. Monitoring

This section provides documentation on Cloud Discovery Service remote monitoring.

Note

Cloud Discovery Service monitoring is based on the Monitoring Distribution Platform described in Monitoring Distribution Platform. We recommend that you read Monitoring Distribution Platform before using Cloud Discovery Service monitoring.

8.1. Overview

8.1.1. Enabling Service Monitoring

By default, monitoring is disabled in Cloud Discovery Service. To enable monitoring you can use the <monitoring> tag (see Monitoring) or the -remoteMonitoringDomainId command-line parameter, which enables remote monitoring and sets the domain ID for data publication (see Command-Line Options).

8.1.2. Monitoring Types

The available Keyed Resource classes and their types that can be present in the distribution monitoring topics are listed in Table 8.1. The complete type relationship is shown in Figure 8.1.

Table 8.1 Cloud Discovery Service Keyed Resources

Keyed Resource Class

Config

Event

Periodic

Service

ServiceConfig

ServiceEvent

ServicePeriodic

Forwarder

ForwarderConfig

ForwarderEvent

ForwarderPeriodic

Sender

SenderConfig

SenderEvent

SenderPeriodic

Receiver

ReceiverConfig

ReceiverEvent

ReceiverPeriodic

Database

DatabaseConfig

DatabaseEvent

DatabasePeriodic

_images/CdsMonitoringTypes.png

Figure 8.1 Keyed Resource Types for Cloud Discovery Service monitoring

All the type definitions for Cloud Discovery Service monitoring information are in [NDDSHOME]/resource/idl/ServiceCommon.idl and [NDDSHOME]/resource/idl/CdsMonitoring.idl.

Cloud Discovery Service creates a DataWriter for each distribution Topic. All DataWriters are created from a single Publisher, which is created from a dedicated DomainParticipant. See Cloud Discovery Service for details on configuring the QoS for these entities.

8.2. Monitoring Metrics Reference

This section provides a reference to all the monitoring metrics Cloud Discovery Service distributes, organized by service resource class.

8.2.1. Service

Listing 8.1 Cloud Discovery Service Types
            @mutable @nested
            struct ServiceConfig : Service::Monitoring::EntityConfig {
                Service::BoundedString application_name;
                Service::Monitoring::ResourceGuid application_guid;
                @optional Service::Monitoring::HostConfig host;
                @optional Service::Monitoring::ProcessConfig process;
            };

            @mutable @nested
            struct ServiceEvent : Service::Monitoring::EntityEvent {
            };

            @mutable @nested
            struct ServicePeriodic {
                @optional Service::Monitoring::HostPeriodic host;
                @optional Service::Monitoring::ProcessPeriodic process;
            };

Table 8.2 ServiceConfig

Field Name

Description

Inherited fields from EntityConfig

See Table 12.14.

application_name

Name of the Cloud Discovery Service instance. The application name is provided through:

  • appName command-line option when run as executable.

  • ServiceProperty::service_name field when run as a library.

application_guid

GUID of the Cloud Discovery Service instance. Unique across all service instances.

host

See Table 12.10.

process

See Table 12.12.


Table 8.3 ServiceEvent

Field Name

Description

Inherited fields from EntityEvent

See Table 12.15.


Table 8.4 ServicePeriodic

Field Name

Description

host

See Table 12.11.

process

See Table 12.13.

8.2.2. Forwarder

Listing 8.2 Forwarder Types
            @mutable @nested
            struct ForwarderConfig : Service::Monitoring::EntityConfig {
            };

            @mutable @nested
            struct ForwarderEvent : Service::Monitoring::EntityEvent {
            };

            @mutable @nested
            struct ForwarderPeriodic {
                @optional Service::Monitoring::NetworkPerformance 
                        new_participant_announcements;
                @optional Service::Monitoring::NetworkPerformance 
                        repeat_participant_announcements;
                @optional Service::Monitoring::NetworkPerformance 
                        change_participant_announcements;
                @optional Service::Monitoring::ThreadPoolPeriodic thread_pool;
            };

Table 8.5 ForwarderConfig

Field Name

Description

Inherited fields from EntityConfig

See Table 12.14.


Table 8.6 ForwarderEvent

Field Name

Description

Inherited fields from EntityEvent

See Table 12.15.


Table 8.7 ForwarderPeriodic

Field Name

Description

new_participant_announcements

Provides network performance metrics as an aggregation of the same metrics across the contained Sender and Receiver.
See Network Performance Metrics.

repeat_participant_announcements

Provides network performance metrics as an aggregation of the same metrics across the contained Sender and Receiver.
See Network Performance Metrics.

change_participant_announcements

Provides network performance metrics as an aggregation of the same metrics across the contained Sender and Receiver.
See Network Performance Metrics.

thread_pool

Sequence of ThreadPeriodic objects, one for each thread of the Forwarder’s thread pool. See Table 12.17.

8.2.3. Sender

Listing 8.3 Sender Types
            @mutable @nested
            struct SenderConfig : Service::Monitoring::EntityConfig {
            };

            @mutable @nested
            struct SenderEvent : Service::Monitoring::EntityEvent {
            };

            @mutable @nested
            struct SenderPeriodic {
                @optional Service::Monitoring::NetworkPerformance 
                        new_participant_announcements;
                @optional Service::Monitoring::NetworkPerformance 
                        repeat_participant_announcements;
                @optional Service::Monitoring::NetworkPerformance 
                        change_participant_announcements;
            };

Table 8.8 SenderConfig

Field Name

Description

Inherited fields from EntityConfig

See Table 12.14.


Table 8.9 SenderEvent

Field Name

Description

Inherited fields from EntityEvent

See Table 12.15.


Table 8.10 SenderPeriodic

Field Name

Description

new_participant_announcements

Provides network performance metrics for the new participant announcements class dispatched by the Sender.
See Network Performance Metrics.

repeat_participant_announcements

Provides network performance metrics for the repeat participant announcements class dispatched by the Sender.
See Network Performance Metrics.

change_participant_announcements

Provides network performance metrics for the change participant announcements class dispatched by the Sender.
See Network Performance Metrics.

8.2.4. Receiver

Listing 8.4 Receiver Types
            @mutable @nested
            struct ReceiverConfig : Service::Monitoring::EntityConfig {
            };

            @mutable @nested
            struct ReceiverEvent : Service::Monitoring::EntityEvent {
            };

            @mutable @nested
            struct ReceiverPeriodic {
                @optional Service::Monitoring::NetworkPerformance 
                        new_participant_announcements;
                @optional Service::Monitoring::NetworkPerformance 
                        repeat_participant_announcements;
                @optional Service::Monitoring::NetworkPerformance 
                        change_participant_announcements;
            };

Table 8.11 ReceiverConfig

Field Name

Description

Inherited fields from EntityConfig

See Table 12.14.


Table 8.12 ReceiverEvent

Field Name

Description

Inherited fields from EntityEvent

See Table 12.15.


Table 8.13 ReceiverPeriodic

Field Name

Description

new_participant_announcements

Provides network performance metrics for the new participant announcements class received by the Receiver.
See Network Performance Metrics.

repeat_participant_announcements

Provides network performance metrics for the repeat participant announcements class received by the Receiver.
See Network Performance Metrics.

change_participant_announcements

Provides network performance metrics for the change participant announcements class received by the Receiver.
See Network Performance Metrics.

8.2.5. Database

Listing 8.5 Database Types
            @mutable @nested
            struct DomainIdInfo {
                int32 domain_id;
                int32 locator_count;
            };

            @mutable @nested
            struct DatabaseConfig : Service::Monitoring::EntityConfig {
            };

            @mutable @nested
            struct DatabaseEvent : Service::Monitoring::EntityEvent {
            };

            @mutable @nested
            struct DatabasePeriodic {
                @optional sequence<DomainIdInfo> domain_id_info_seq;
                @optional Service::Monitoring::ThreadPoolPeriodic thread_pool;
            };

Table 8.14 DatabaseConfig

Field Name

Description

Inherited fields from EntityConfig

See Table 12.14.


Table 8.15 DatabaseEvent

Field Name

Description

Inherited fields from EntityEvent

See Table 12.15.


Table 8.16 DomainIdInfo

Field Name

Description

domain_id

Identifies the DDS domain ID

locator_count

Indicates the aggregate number of network locators present from all the DomainParticipants for a given DDS domain ID in the Cloud Discovery Service Database.


Table 8.17 DatabasePeriodic

Field Name

Description

domain_id_info_seq

Sequence of DomainIdInfo objects (See Table 8.16) for all the domain IDs currently known to Cloud Discovery Service.

thread_pool

Sequence of ThreadPeriodic objects, one for each thread of the Database’s thread pool. See Table 12.17.