4.4. Monitoring¶
This section provides documentation on Recording Service remote monitoring.
Note
Recording Service monitoring is based on the Monitoring Distribution Platform described in Section 6.3. We recommend that you read Section 6.3 before using Recording Service monitoring.
4.4.1. Overview¶
4.4.1.1. Enabling Service Monitoring¶
By default, monitoring is disabled in Recording Service. To enable monitoring you can use
the <monitoring>
tag (see Section 3.2.5) or the
-remoteMonitoringDomainId
command-line parameter, which enables
remote monitoring and sets the domain ID for data publication
(see Section 3.1.3).
4.4.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 4.20. The complete type relationship is shown in Figure 4.5.
Keyed Resource Class | Config | Event | Periodic |
---|---|---|---|
Service | ServiceConfig |
ServiceEvent |
ServicePeriodic |
Session | SessionConfig |
SessionEvent |
SessionPeriodic |
TopicGroup | TopicGroupConfig |
TopicGroupEvent |
TopicGroupPeriodic |
Topic | TopicConfig |
TopicEvent |
TopicPeriodic |

Figure 4.5 Keyed Resource Types for Recording Service monitoring
All the type definitions for Recording Service monitoring information are in
[NDDSHOME]/resource/idl/ServiceCommon.idl
and
[NDDSHOME]/resource/idl/RecordingServiceMonitoring.idl
.
Recording Service creates a DataWriter for each distribution Topic. All DataWriters are created from a single Publisher, which is created from a dedicated DomainParticipant. See Section 3.2.5 for details on configuring the QoS for these entities.
4.4.2. Monitoring Metrics Reference¶
This section provides a reference to all the monitoring metrics Recording Service distributes, organized by service resource class.
4.4.2.1. Service¶
@mutable @nested
struct SqliteDatabaseConfig {
Service::FilePath db_directory;
@optional Service::FilePath execution_directory_expression;
@optional Service::FilePath user_data_file_expression;
};
@mutable @nested
struct SqliteDatabaseEvent {
@optional Service::FilePath current_db_directory;
@optional Service::FilePath current_file;
@optional int32 rollover_count;
};
@mutable @nested
struct SqliteDatabasePeriodic {
@optional Service::FilePath current_file;
@optional uint64 current_file_size;
int32 current_timestamp_sec;
uint32 current_timestamp_nanosec;
};
@mutable @nested
struct ParticipantInfo {
Service::BoundedString name;
};
@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;
@optional SqliteDatabaseConfig builtin_sqlite;
@optional sequence<ParticipantInfo> participants;
};
@mutable @nested
struct ServiceEvent : Service::Monitoring::EntityEvent {
//to avoid unused variable warnings
@optional SqliteDatabaseEvent builtin_sqlite;
};
@mutable @nested
struct ServicePeriodic {
@optional Service::Monitoring::HostPeriodic host;
@optional Service::Monitoring::ProcessPeriodic process;
@optional SqliteDatabasePeriodic builtin_sqlite;
};
Field Name | Description |
---|---|
Inherited fields from EntityConfig |
See Table 6.13. |
application_name | Name of the Recording Service instance. The application name is provided through:
|
application_guid | GUID of the Recording Service instance. Unique across all service instances. |
host | See Table 6.9. |
process | See Table 6.11. |
builtin_sqlite | See Table 4.22 |
participants | Sequence of ParticipantInfo objects, one for each DomainParticipant
inside the Recording Service. See Table 4.23. |
Field Name | Description |
---|---|
db_directory | Path to the base directory where the database files live. |
execution_directory_expression | This value is not set when running Replay Service. See Section 3.2.10 |
user_data_file_expression | This value is not set when running Replay Service. |
Field Name | Description |
---|---|
name | Name of the DomainParticipant instance, as specified in the name
attribute of the corresponding configuration tag. |
Field Name | Description |
---|---|
Inherited fields from EntityEvent |
See Table 6.14. |
builtin_sqlite | See Table 4.25 |
Field Name | Description |
---|---|
current_db_directory | Path to the current directory where files are being replayed from. |
current_file | This value is not set when running Replay Service. |
rollover_count | This value is not set when running Replay Service. |
Field Name | Description |
---|---|
host | See Table 6.10. |
process | See Table 6.12. |
builtin_sqlite | See Table 4.27 |
Field Name | Description |
---|---|
current_file_size | This value is not set when running Replay Service. |
current_timestamp_sec | The seconds part of the timestamp at which data is being replayed,
relative to recorded time. |
current_timestamp_nanosec | The nanoseconds part of the timestamp at which data is being replayed, relative to recorded time. |
4.4.2.2. Session¶
@mutable @nested
struct SessionConfig : Service::Monitoring::EntityConfig {
Service::BoundedString default_participant_name;
};
@mutable @nested
struct SessionEvent : Service::Monitoring::EntityEvent {
//to avoid unused variable warnings
int32 _dummy;
};
@mutable @nested
struct SessionPeriodic {
@optional Service::Monitoring::NetworkPerformance network_performance;
};
Field Name | Description |
---|---|
Inherited fields from EntityConfig |
See Table 6.13. |
default_participant_name | The name of the default participant configuration. |
Field Name | Description |
---|---|
Inherited fields from EntityEvent |
See Table 6.14. |
Field Name | Description |
---|---|
network_performance | Provides network performance metric as an aggregation of the same metric
across the contained Topic and TopicGroups. See Section 6.3.4.5. |
4.4.2.3. TopicGroup¶
@mutable @nested
struct TopicGroupConfig : Service::Monitoring::EntityConfig {
Service::BoundedString participant_name;
};
@mutable @nested
struct TopicGroupEvent : Service::Monitoring::EntityEvent {
//to avoid unused variable warnings
int32 _dummy;
};
@mutable @nested
struct TopicGroupPeriodic {
@optional Service::Monitoring::NetworkPerformance network_performance;
int64 topic_count;
};
Field Name | Description |
---|---|
Inherited fields from EntityConfig |
See Table 6.13. |
participant_name | Name of the DomainParticipant from which the Topic is created. |
Field Name | Description |
---|---|
Inherited fields from EntityEvent |
See Table 6.14. |
Field Name | Description |
---|---|
network_performance | Provides network performance metric as an aggregation of the same metric
across the contained Topic. See Section 6.3.4.5. |
topic_count | Current number of Topic created from this TopicGroup. |
4.4.2.4. Topic¶
@mutable @nested
struct TopicConfig : Service::Monitoring::EntityConfig {
Service::BoundedString topic_name;
Service::BoundedString registered_type_name;
Service::BoundedString participant_name;
Service::Monitoring::ResourceGuid topic_group;
};
@mutable @nested
struct TopicEvent : Service::Monitoring::EntityEvent {
//to avoid unused variable warnings
int32 _dummy;
};
@mutable @nested
struct TopicPeriodic {
@optional Service::Monitoring::NetworkPerformance network_performance;
@optional Service::Monitoring::CountStatus matched_status;
};
Field Name | Description |
---|---|
Inherited fields from EntityConfig |
See Table 6.13. |
topic_name | Topic name as specified in the configuration. |
registered_type_name | Topic registered type name as specified in the configuration. |
paritcipant_name | Name of the DomainParticipant from which the Topic is created. |
topic_group | GUID of the TopicGroup from which this Topic was created. This field is set to zero for standalone Topic. |
Field Name | Description |
---|---|
Inherited fields from EntityEvent |
See Table 6.14. |
Field Name | Description |
---|---|
network_performance | Provides network performance metric as an aggregation of the same metric
across the contained Topic. See Section 6.3.4.5. |
matched_status | Provides information about the matched endpoints associated with this Topic. |