Concepts Guide

SRS Daemon Statistics

This section contains details on the SRS's Daemon Statistics feature. You should already be familiar with the general information contained in daemonstatistics.

The SRS Daemon Statistics are published in the form of JSON messages. These are ASCII text messages which represent internal SRS data structures containing statistical and configuration information.

The following sub-sections describe the content of the messages. Note that while the sample messages shown are "beautified" (whitespace inserted for readability), a receiver of these messages should make no assumption about the presence or absence of whitespace. Also, as it true generally with JSON, the order of the fields is not fixed and can vary.

The message types are:

- Message Type: SRS_STATS
- Message Type: SRS_ERROR_STATS
- Message Type: UM_CLIENT_STATS
- Message Type: UM_CLIENT_ERROR_STATS
- Message Type: CONNECTION_EVENTS
- Message Type: CONFIG_OPTS
- Message Type: INTERNAL_CONFIG_OPTS
- Request Type: REPORT_SRS_VERSION
- Request Type: REPORT_MONITOR_INFO
- Request Type: SET_PUBLISHING_INTERVAL

# Message Type: SRS_STATS <-

Message type SRS_STATS contains information about the overall state of the SRS service.

EXAMPLE:

{
"monitorInfoCategory": "SRS_STATS",
"stats": [
{
"name": "clients.inactive.SIR.count",
"value": 0
},
{
"name": "clients.next.client.ID",
"value": 17
}
]
}

This example has two statistics. Be aware that a given message can have any number of statistic entries.

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "SRS_STATS".
stats | Array of sub-structures, one per statistic. The number and order of the contained statistics is not fixed.
. . stats[].name | Name of statistic (see below).
. . stats[].value | Value of statistic.

Meaning of each statistic:

Statistic | Description
--- | ---
clients.next.client.ID | Unique session ID that will be assigned to the next context to connect.
active.clients.count | Number of currently connected contexts.
clients.connects.count | Number of contexts that have connected since this SRS started.
clients.disconnects.count | Number of contexts that have disconnected since this SRS started.
clients.max.concurrent.connections.count | High water mark of simultaneous connections since the SRS service was started.
clients.active.SIR.count | Number of sources being maintained from connected contexts.
clients.active.RIR.count | Number of receivers being maintained from connected contexts.
clients.active.WIR.count | Number of wildcard receivers being maintained from connected contexts.
clients.active.DIR.count | Number of Domain Information Records (DIRs) being maintained from connected DRO endpoints.
clients.inactive.SIR.count | Number of sources being temporarily maintained from disconnected contexts. These get cleaned up after the state lifetime expires.
clients.inactive.RIR.count | Number of receivers being temporarily maintained from disconnected contexts. These get cleaned up after the state lifetime expires.
clients.inactive.WIR.count | Number of wildcard receivers being temporarily maintained from disconnected contexts. These get cleaned up after the state lifetime expires.
clients.inactive.DIR.count | Number of Domain Information Records (DIRs) being temporarily maintained from disconnected DRO endpoints. These get cleaned up after the state lifetime expires.
clients.expired.SIR.count | Number of times the SRS deleted source records due to the state lifetime being expired. This will happen when applications exit without deleting their sources, which is not recommended. If this number increases frequently, consider modifying your applications to clean up before exiting.
clients.expired.RIR.count | Number of times the SRS deleted receiver records due to the state lifetime being expired. This will happen when applications exit without deleting their receivers, which is not recommended. If this number increases frequently, consider modifying your applications to clean up before exiting.
clients.expired.WIR.count | Number of times the SRS deleted wildcard receiver records due to the state lifetime being expired. This will happen when applications exit without deleting their receivers, which is not recommended. If this number increases frequently, consider modifying your applications to clean up before exiting.
clients.expired.DIR.count | Number of times the SRS deleted Domain Information Records (DIRs) due to the state lifetime being expired. This will happen when DROs exit abnormally. Informatica support should be informed if this count increments frequently.
clients.expired.CNIR.count | Number of times the SRS deleted Context Name Information Records (CNIRs) due to the state lifetime being expired. This will happen when Stores exit abnormally. Informatica support should be informed if this count increments frequently.
clients.DR.inactive.SIR.count | If DROs are involved, it is normal for this count to increment. Otherwise, this should not increment, and Informatica support should be informed if it does. (A context disconnected while it has SIRs that were inactive.)
clients.SLR.no.OTID.match.count | If the system is otherwise behaving normally, increments in this count are most likely harmless. (A receiver sent a source leave record for a source that the SRS does not know about.)
clients.active.RTIR.count | Number of Route Information Records (RTIR) being maintained from all connected DRO endpoint contexts. Should be equal to the number of active DRO endpoints in this TRD.
clients.inactive.RTIR.count | Number of Route Information Records (RTIR) being temporarily maintained from disconnected DRO endpoint contexts.
clients.expired.RTIR.count | Number of inactive Route Information Records (RTIR) deleted due to expiration of their state lifetimes. This value is cumulative since the SRS was started.
clients.active.CNIR.count | Number of Context Name Information Records (CNIRs) being maintained from connected contexts. This is for Stores identified by their context names; see Identifying Persistent Stores.
clients.inactive.CNIR.count | Number of Context Name Information Records (CNIRs) being temporarily maintained from disconnected contexts. Currently, this is only for Stores identified by their context names; see Identifying Persistent Stores.
clients.duplicate.CNIR.count | Number of duplicate Context Name Information Records (CNIRs) received from all Store endpoints. While not a fatal condition, Informatica support should be informed if this is non-zero.

All of the above statistics are included in a snapshot. Only the changed statistics are included during a periodic update.

# Message Type: SRS_ERROR_STATS <-

Message type SRS_ERROR_STATS contains counters for errors detected by the SRS service. These types of errors should not be happening in a properly configured network; contact UM Support if the counters are increasing frequently.

EXAMPLE:

{
"monitorInfoCategory": "SRS_ERROR_STATS",
"stats": [
{
"name": "clients.duplicate.SIR.count",
"value": 0
},
{
"name": "clients.invalid.SDR.no.OTID.match.count",
"value": 17
}
]
}

This example has two statistics. Be aware that a given message can have any number of statistic entries.

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "SRS_ERROR_STATS".
stats | Array of sub-structures, one per statistic. The number and order of the contained statistics is not fixed.
. . stats[].name | Name of statistic (see below).
. . stats[].value | Value of statistic.

Meaning of each statistic:

Statistic | Description
--- | ---
clients.duplicate.SIR.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (Number of times that the SRS is informed about a source when it didn't need to be informed because the SRS already knew about it.)
clients.duplicate.RIR.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (Number of times that the SRS is informed about a receiver when it didn't need to be informed because the SRS already knew about it.)
clients.duplicate.WIR.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (Number of times that the SRS is informed about a wildcard receiver when it didn't need to be informed because the SRS already knew about it.)
clients.invalid.SDR.no.topic.match.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (A context deleted a source that the SRS does not know about, which should never happen.)
clients.invalid.SDR.no.OTID.match.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (A context deleted a source that the SRS does not know about, which should never happen.)
clients.invalid.SDR.no.transport.match.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (A context deleted a source that the SRS does not know about, which should never happen.)
clients.invalid.DR.no.topic.match.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (A source that the SRS does not know about disconnected, which should never happen.)
clients.invalid.DR.no.OTID.match.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (A context deleted a source that the SRS does not know about, which should never happen.)
clients.invalid.DR.no.transport.match.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (A context deleted a source that the SRS does not know about, which should never happen.)
clients.invalid.SLR.no.topic.match.count | While not a fatal condition, Informatica support should be informed if this count increments frequently. (A receiver notified source leave for a source that the SRS does not know about, which should never happen.)
clients.invalid.DR.inactive.SIR.count | This counter should never be greater than zero. While not a fatal condition, Informatica support should be informed if this count increments frequently. (A context disconnected while it has SIRs that were inactive, which should never happen.)
clients.duplicate.DIR.count | Number of duplicate Domain Information Records (DIRs) the SRS generated. This should never happen. While not a fatal condition, Informatica support should be informed if this is non-zero.
clients.mismatched.DIR.count | A non-zero count indicates that at least two DRO endpoints have reported different domain IDs, which is illegal. All DRO endpoints servicing the same TRD must be configured for the same domain ID value. If all DRO endpoints being services by this SRS are configured for the same <domain-id> value, contact UM Support.
clients.duplicate.RTIR.count | Number of duplicate Route Information Records (RTIRs) received from all DRO endpoints. While not a fatal condition, Informatica support should be informed if this is non-zero. See also statistic "client.duplicate.RTIR.received.count" in Message Type: UM_CLIENT_ERROR_STATS.
clients.invalid.CNIR.name.mismatch.count | Number of Context Name Information Records (CNIRs) received from a context that are different from the initial CNIR. This should never happen. While not a fatal condition, Informatica support should be informed if this is non-zero.

# Message Type: UM_CLIENT_STATS <-

Message type UM_CLIENT_STATS contains information related to an individual connected context. Multiple instances of this message can be sent, one per connected context.

EXAMPLE:

{
"monitorInfoCategory": "UM_CLIENT_STATS",
"srsRegistrationInfo": {
"ip": "10.29.3.43",
"port": "60681",
"sessionId": "0x9739b88f"
},
"stats": [
{
"name": "client.SIR.received.count",
"value": 1
},
{
"name": "client.SDR.received.count",
"value": 0
}
]
}

This example has two statistics. Be aware that a given message can have any number of statistic entries.

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "UM_CLIENT_STATS".
srsRegistrationInfo | Structure containing identifying information about the connected context.
. . srsRegistrationInfo.ip | IP address of the context.
. . srsRegistrationInfo.port | TCP "source port" the context used locally for its SRS connection. See resolver_service (context).
. . srsRegistrationInfo.sessionId | The unique identifier assigned by the SRS to this connection.
stats | Array of sub-structures, one per statistic. The number and order of the contained statistics is not fixed.
. . stats[].name | Name of statistic (see below).
. . stats[].value | Value of statistic.

Meaning of each statistic:

Statistic | Description
--- | ---
record.queue.depth | Snapshot of the context's SRS worker thread's work queue containing Topic Resolution updates that need to be sent to the context. This number should normally be zero. If it remains above zero for significant time contact UM Support.
client.SIR.sent.count | Number of sources that the SRS has informed the context of.
client.SER.sent.count | Number of source deletions that the SRS has informed the context of. Either the application explicitly deleted a source, or the context abnormally disconnected and the state lifetime expired.
client.RIR.sent.count | Number of receivers that the SRS has informed the context of.
client.RER.sent.count | Number of receiver deletions that the SRS has informed the context of. Either the application explicitly deleted a receiver, or the context abnormally disconnected and the state lifetime expired.
client.WIR.sent.count | Number of wildcard receivers that the SRS has informed the context of.
client.WER.sent.count | Number of wildcard receiver deletions that the SRS has informed the context of. Either the application explicitly deleted a receiver, or the context abnormally disconnected and the state lifetime expired.
client.SIR.received.count | Number of created sources that the context has informed the SRS. This number is not necessarily the current number of sources; for example, the counter does not decrease as sources are deleted.
client.SDR.received.count | Number of sources deleted that the context has informed the SRS.
client.RIR.received.count | Number of created receivers (one per topic even if more than one receivers on a topic) that the context has informed the SRS. This number is not necessarily the current number of receivers; for example the counter does not decrease as receivers are deleted.
client.WIR.received.count | Number of created wildcard receivers (one per pattern even if more than one receivers on a pattern) that the context has informed the SRS. This number is not necessarily the current number of wildcard receivers; for example the counter does not decrease as wildcard receivers are deleted.
client.RDR.received.count | Number of deleted receivers (one per topic even if more than one receivers on a topic) that the context has informed the SRS. This number is not necessarily the current number of receivers; for example the counter does not decrease as receivers are deleted.
client.WDR.received.count | Number of deleted wildcard receivers (one per pattern even if more than one receivers on a pattern) that the context has informed the SRS. This number is not necessarily the current number of wildcard receivers; for example the counter does not decrease as wildcard receivers are deleted.
client.SLR.received.count | Number of source leave records that the receiver context has informed the SRS.
client.active.SIR.count | Number of sources that currently exist in the context.
client.max.concurrent.SIR.count | High water mark of simultaneous sources managed since the SRS service started.
client.DIR.sent.count | Number of Domain Information Records (DIRs) that the SRS has sent to the context.
client.RTIR.sent.count | Number of Route Information Records (RTIRs) the SRS has sent to the context.
client.RTIR.received.count | Number of Route Information Records (RTIRs) the context has sent to the SRS.
client.RTER.sent.count | Number of Route End Records (RTERs) the SRS has sent to the context. This is incremented if a DRO disconnects from an SRS and that DRO's Route Information Record state lifetime expires.
client.CNIR.sent.count | Number of Context Name Information Records (CNIRs) sent to the context.
client.CNIR.received.count | Number of Context Name Information Records (CNIRs) received from the context. This should normally be 1 or 2.
client.CNQR.received.count | Number of Context Name Query Records (CNQRs) received from the context. This should normally be 1.
client.unexpected.CNER.received.count | Number of Context Name End Records (CNERs) received from the context. This should normally be 0, but if the client is UM version 6.14, this counter can increase.

# Message Type: UM_CLIENT_ERROR_STATS <-

Message type UM_CLIENT_ERROR_STATS contains error counters related to an individual connected context. Multiple instances of this message can be sent, one per connected context. These types of errors should not be happening in a properly configured network; contact UM Support if the counters are increasing frequently.

EXAMPLE:

{
"monitorInfoCategory": "UM_CLIENT_ERROR_STATS",
"srsRegistrationInfo": {
"ip": "10.29.3.43",
"port": "60681",
"sessionId": "0x9739b88f"
},
"stats": [
{
"name": "client.invalid.SRS.message.received.count",
"value": 1
},
{
"name": "client.invalid.SDR.received.count",
"value": 0
}
]
}

This example has two statistics. Be aware that a given message can have any number of statistic entries.

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "UM_CLIENT_ERROR_STATS".
srsRegistrationInfo | Structure containing identifying information about the connected context.
. . srsRegistrationInfo.ip | IP address of the context.
. . srsRegistrationInfo.port | TCP "source port" the context used locally for its SRS connection. See resolver_service (context).
. . srsRegistrationInfo.sessionId | The unique identifier assigned by the SRS to this connection.
stats | Array of sub-structures, one per statistic. The number and order of the contained statistics is not fixed.
. . stats[].name | Name of statistic (see below).
. . stats[].value | Value of statistic.

Meaning of each statistic:

Statistic | Description
--- | ---
client.duplicate.RIR.received.count | Number of created duplicate receivers that the context has informed the SRS.
client.duplicate.WIR.received.count | Number of created duplicate wildcard receivers that the context has informed the SRS.
client.invalid.SRS.message.received.count | This counter should never be greater than zero. While not a fatal condition, Informatica support should be informed if this count increments frequently. (Number of messages received from this context that could not be processed.)
client.invalid.SDR.received.count | This counter should never be greater than zero. While not a fatal condition, Informatica support should be informed if this count increments frequently. (Number of source delete messages received from this context which could not be processed correctly.)
client.duplicate.RTIR.received.count | Number of duplicate Route Information Records (RTIRs) received from this DRO endpoint. This should never happen. While not a fatal condition, Informatica support should be informed if this is non-zero. See also statistic "clients.duplicate.RTIR.count" in Message Type: SRS_ERROR_STATS.
client.unexpected.SRS.message.sent.count | Number of unexpected messages sent to the context. This should never happen. While not a fatal condition, Informatica support should be informed if this is non-zero.
client.duplicate.CNIR.received.count | Number of duplicate Context Name Information Records (CNIRs) received from this context. This should never happen. While not a fatal condition, Informatica support should be informed if this is non-zero.
client.duplicate.CNQR.received.count | Number of duplicate Context Name Query Records (CNQRs) received from this context. This should never happen. While not a fatal condition, Informatica support should be informed if this is non-zero.

# Message Type: CONNECTION_EVENTS <-

## Message Subtype: UM_CLIENT_CONNECT <-

Message type CONNECTION_EVENTS, sub-type UM_CLIENT_CONNECT, logs a single connect of a context to the SRS.

{
"monitorInfoCategory": "CONNECTION_EVENTS",
"srsRegistrationInfo": {
"ip": "10.29.3.42",
"port": "41873",
"sessionId": "0xaecbff98"
},
"connectionEventType": "UM_CLIENT_CONNECT",
"events": [
{
"connectionEventType": "UM_CLIENT_CONNECT",
"connectionEventTime": "Thu Jan 24 00:28:26 CET 2019",
}
]
}

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "CONNECTION_EVENTS".
srsRegistrationInfo | Structure containing identifying information about the connected context.
. . srsRegistrationInfo.ip | IP address of the context.
. . srsRegistrationInfo.port | TCP "source port" the context used locally for its SRS connection. See resolver_service (context).
. . srsRegistrationInfo.sessionId | The unique identifier assigned by the SRS to this connection.
connectionEventType | type of event contained in the `events` sub-structure. Set to "UM_CLIENT_CONNECT".
events | Technically `events` is constructed as an array of sub-structures, however each CONNECTION_EVENTS message contains exactly one event log.
. . events[].connectionEventType | type of event contained in the `events` sub-structure. Set to "UM_CLIENT_CONNECT".
. . events[].connectionEventTime | ASCII time/date stamp of event.

## Message Subtype: UM_CLIENT_DISCONNECT <-

Message type CONNECTION_EVENTS, sub-type UM_CLIENT_DISCONNECT, logs a single disconnect of a context to the SRS.

{
"monitorInfoCategory": "CONNECTION_EVENTS",
"srsRegistrationInfo": {
"ip": "10.29.3.42",
"port": "35350",
"sessionId": "0x0388cf20"
},
"connectionEventType": "UM_CLIENT_DISCONNECT",
"events": [
{
"srsRegistrationInfo": {
"ip": "10.29.3.42",
"port": "35350",
"sessionId": "0x0388cf20"
},
"connectionEventType": "UM_CLIENT_DISCONNECT",
"connectionEventTime": "Wed Jan 30 23:50:30 CET 2019",
}
]
}

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "CONNECTION_EVENTS".
srsRegistrationInfo | Structure containing identifying information about the connected context.
. . srsRegistrationInfo.ip | IP address of the context.
. . srsRegistrationInfo.port | TCP "source port" the context used locally for its SRS connection. See resolver_service (context).
. . srsRegistrationInfo.sessionId | The unique identifier assigned by the SRS to this connection.
connectionEventType | type of event contained in the `events` sub-structure. Set to "UM_CLIENT_DISCONNECT".
events | Technically `events` is constructed as an array of sub-structures, however each CONNECTION_EVENTS message contains exactly one event log.
. . events[].srsRegistrationInfo | Structure containing identifying information about the connected context.
. . . . events[].srsRegistrationInfo.ip | IP address of the context.
. . . . events[].srsRegistrationInfo.port | TCP "source port" the context used locally for its SRS connection. See resolver_service (context).
. . . . event[].srsRegistrationInfo.sessionId | The unique identifier assigned by the SRS to this connection.
. . events[].connectionEventType | type of event contained in the `events` sub-structure. Set to "UM_CLIENT_DISCONNECT".
. . events[].connectionEventTime | ASCII time/date stamp of event.

## Message Subtypes: SIR and SDR <-

Message type CONNECTION_EVENTS, sub-types SIR and SDR, log a single context source creation or deletion message to the SRS.

{
"monitorInfoCategory": "CONNECTION_EVENTS",
"srsRegistrationInfo": {
"ip": "10.29.3.43",
"port": "60809",
"sessionId": "0x1c668bad"
},
"connectionEventType": "SIR" or "SDR",
"events": [
{
"topic": "srs_topic",
"source": "LBTRM:10.29.3.43:24000:47b87920:225.11.28.85:14400",
"connectionEventType": "SIR" or "SDR",
"connectionEventTime": "Fri Feb 1 02:16:06 CET 2019",
}
]
}

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "CONNECTION_EVENTS".
srsRegistrationInfo | Structure containing identifying information about the connected context.
. . srsRegistrationInfo.ip | IP address of the context.
. . srsRegistrationInfo.port | TCP "source port" the context used locally for its SRS connection. See resolver_service (context).
. . srsRegistrationInfo.sessionId | The unique identifier assigned by the SRS to this connection.
connectionEventType | type of event contained in the `events` sub-structure. Set to "SIR" or "SDR".
events | Technically `events` is constructed as an array of sub-structures, however each CONNECTION_EVENTS message contains exactly one event log.
. . events[].connectionEventType | type of event contained in the `events` sub-structure. Set to "SIR" or "SDR".
. . events[].connectionEventTime | ASCII time/date stamp of event.

# Message Type: CONFIG_OPTS <-

Message type CONFIG_OPTS contains SRS configuration information.

EXAMPLE:

{
"monitorInfoCategory": "CONFIG_OPTS",
"configOptions": [
{
"name": "um-srs.daemon-monitor.lbm-attributes.context.context_name",
"value": "statsLbmContext",
},
{
"name": "um-srs.daemon-monitor.lbm-attributes.context.default_interface",
"value": "192.168.0.0/24",
}
]
}

This example has two options. Be aware that a given message can have any number of option entries.

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "CONFIG_OPTS".
configOptions | Array of sub-structures, one per configuration option. The number and order of the contained options is not fixed.
. . configOptions[].name | Name of option (see below).
. . configOptions[].value | Value of option.

Meaning of each option:

Option Name | Description
--- | ---
um-srs.version | Value for 'version' attribute to SRS configuration element <um-srs>.
um-srs.daemon.log | Value for the SRS configuration element <log>.
um-srs.daemon.log.type | Value for 'type' attribute to SRS configuration element <log>.
um-srs.daemon.log.frequency | Value for 'frequency' attribute to SRS configuration element <log>.
um-srs.daemon.log.size | Value for 'size' attribute to SRS configuration element <log>.
um-srs.daemon.log.max-history | Value for 'max-history' attribute to SRS configuration element <log>.
um-srs.daemon.log.total-size-cap | Value for 'total-size-cap' attribute to SRS configuration element <log>.
um-srs.daemon.log.compression | Value for 'compression' attribute to SRS configuration element <log>.
um-srs.daemon.pid-file | Value for the SRS configuration element <request-stream-max-msg-count>.
um-srs.srs.interface | Value for the SRS configuration element <interface> inside <srs>.
um-srs.srs.port | Value for the SRS configuration element <port> inside <srs>.
um-srs.srs.state-lifetime | Value for the SRS configuration element <state-lifetime>.
um-srs.srs.source-state-lifetime | Value for the SRS configuration element <source-state-lifetime>.
um-srs.srs.interest-state-lifetime | Value for the SRS configuration element <interest-state-lifetime>.
um-srs.srs.route-state-lifetime | Value for the SRS configuration element <context-name-state-lifetime>.
um-srs.srs.context-name-state-lifetime | Value for the SRS configuration element <context-name-state-lifetime>.
um-srs.srs.source-leave-backoff | Value for the SRS configuration element <source-leave-backoff>.
um-srs.srs.application-id | Value for the SRS configuration element <application-id>.
um-srs.srs.clientactor.request-stream-max-msg-count | Value for the SRS configuration element <request-stream-max-msg-count>.
um-srs.srs.clientactor.record-queue-service-interval | Value for the SRS configuration element <record-queue-service-interval>.
um-srs.srs.clientactor.batch-frame-max-record-count | Value for the SRS configuration element <batch-frame-max-record-count>.
um-srs.srs.clientactor.batch-frame-max-datagram-size | Value for the SRS configuration element <batch-frame-max-datagram-size>.
um-srs.debug-monitor.interface | Value for the SRS configuration element <interface> inside <debug-monitor>.
um-srs.debug-monitor.port | Value for the SRS configuration element <port> inside <debug-monitor>.
um-srs.debug-monitor.enabled | Value for the SRS configuration element <enabled>.
um-srs.debug-monitor.ping-interval | Value for the SRS configuration element <ping-interval> for debug-monitor.
um-srs.daemon-monitor.ping-interval | Value for the SRS configuration element <ping-interval> for daemon-monitor.
um-srs.daemon-monitor.topic | Value for 'topic' attribute to SRS configuration element <daemon-monitor>.
um-srs.daemon-monitor.publishing-interval.default | Value for the SRS configuration element <default>.
um-srs.daemon-monitor.publishing-interval.srs-stats | Value for the SRS configuration element <srs-stats>.
um-srs.daemon-monitor.publishing-interval.um-client-stats | Value for the SRS configuration element <um-client-stats>.
um-srs.daemon-monitor.publishing-interval.connection-events | Value for the SRS configuration element <connection-events>.
um-srs.daemon-monitor.publishing-interval.srs-error-stats | Value for the SRS configuration element <srs-error-stats>.
um-srs.daemon-monitor.publishing-interval.um-client-error-stats | Value for the SRS configuration element <um-client-error-stats>.
um-srs.daemon-monitor.publishing-interval.config-opts | Value for the SRS configuration element <config-opts>.
um-srs.daemon-monitor.publishing-interval.internal-config-opts | Value for the SRS configuration element <internal-config-opts>.
um-srs.daemon-monitor.publish-connection-events.allow | Value for 'allow' attribute to SRS configuration element <publish-connection-events>.
um-srs.daemon-monitor.remote-snapshot-request.allow | Value for 'allow' attribute to SRS configuration element <remote-snapshot-request>.
um-srs.daemon-monitor.remote-config-changes-request.allow | Value for 'allow' attribute to SRS configuration element <remote-config-changes-request>.
um-srs.daemon-monitor.monitor-format | Value for the SRS configuration element <monitor-format>.
um-srs.daemon-monitor.lbm-attributes.lbmConfigOptionScope.lbmConfigOptionName | A UM configuration option, as documented in Configuration Overview, where 'lbmConfigOptionScope' is the option scope ('context', 'source', etc) and 'lbmConfigOptionName' is the option name.

# Message Type: INTERNAL_CONFIG_OPTS <-

Message type INTERNAL_CONFIG_OPTS contains SRS internal configuration information. These options are not intended for application use.

EXAMPLE:

{
"monitorInfoCategory": "INTERNAL_CONFIG_OPTS",
"configOptions": [
{
"name": "um-srs.srs.otidmap.async-receiver-distribution",
"value": "false",
},
{
"name": "um-srs.srs.otidmap.shards",
"value": "4",
}
]
}

This example has two options. Be aware that a given message can have any number of option entries.

Overall structure of message:

Field | Description
--- | ---
monitorInfoCategory | Message type. Set to the string "INTERNAL_CONFIG_OPTS".
configOptions | Array of sub-structures, one per configuration option. The number and order of the contained options is not fixed.
. . configOptions[].name | Name of option (see below).
. . configOptions[].value | Value of option.

Meaning of each option:

Option Name | Description
--- | ---
um-srs.srs.otidmap.shards | Value for the SRS configuration element <shards> within element <otidmap>.
um-srs.srs.topicmap.shards | Value for the SRS configuration element <shards> within element <topicmap>.
um-srs.srs.routemap.shards | Value for the SRS configuration element <shards> within element <routemap>.
um-srs.srs.namemap.shards | Value for the SRS configuration element <shards> within element <namemap>.

# Request Type: REPORT_SRS_VERSION <-

Request type REPORT_SRS_VERSION is sent by a monitoring application to determine the software version of the SRS.

{
"commandMessageType": "REPORT_SRS_VERSION"
}

The SRS will send a response of the form:

    SRS Version 6.17.1

# Request Type: REPORT_MONITOR_INFO <-

Request type REPORT_MONITOR_INFO is sent by a monitoring application to initiate an immediate publishing of monitoring data.

The SRS will only process this request if the configuration contains <remote-snapshot-request allow="true"/>.

{
"commandMessageType": "REPORT_MONITOR_INFO",
"monitorInfoCategory": "SRS_STATS"
}

Where the `"monitorInfoCategory"` field is set to one of the following:

- SRS_STATS
- UM_CLIENT_STATS
- CONNECTION_EVENTS
- SRS_ERROR_STATS
- UM_CLIENT_ERROR_STATS
- CONFIG_OPTS
- INTERNAL_CONFIG_OPTS

The SRS will send a response of the form:

    snap SRS_STATS - OK!

Note that "SRS_STATS" is replaced by the requested category.

# Request Type: SET_PUBLISHING_INTERVAL <-

Request type SET_PUBLISHING_INTERVAL is sent by a monitoring application to Modify the publishing intervals for a running SRS. Note that SRS does not persist the new interval value; if the SRS is restarted, the value returns to the value configured via <daemon-monitor>.

The SRS will only process this request if the configuration contains <remote-config-changes-request allow="true"/>.

{
"commandMessageType": "SET_PUBLISHING_INTERVAL",
"monitorInfoCategory": "SRS_STATS",
"publishingInterval": 60000
}

Where the `"monitorInfoCategory"` field is set to one of the following:

- SRS_STATS
- UM_CLIENT_STATS
- CONNECTION_EVENTS
- SRS_ERROR_STATS
- UM_CLIENT_ERROR_STATS
- CONFIG_OPTS
- INTERNAL_CONFIG_OPTS

The SRS will send a response of the form:

    SRS_STATS 60000 - OK!

Note that "SRS_STATS" is replaced by the requested category.