Concepts Guide
|
This section contains details on the SRS's Daemon Statistics feature. You should already be familiar with the general information contained in Daemon Statistics.
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 contains information about the overall state of the SRS service.
EXAMPLE:
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.inactive.SIR.count | Number of sources being temporarily maintained from disconnected contexts. 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. |
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 contains counters for errors detected by the SRS service. These types of errors should not be happening in a properly configured network; context support if the counters are increasing frequently.
EXAMPLE:
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; i.e. the SRS already knew about it.) |
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.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.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.) |
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:
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. I.e. number of 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 Informatica support. |
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; i.e. 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.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.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. |
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; context support if the counters are increasing frequently.
EXAMPLE:
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.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.) |
Message type CONNECTION_EVENTS, sub-type UM_CLIENT_CONNECT, logs a single connect of a context to the SRS.
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 type CONNECTION_EVENTS, sub-type UM_CLIENT_DISCONNECT, logs a single disconnect of a context to the SRS.
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 type CONNECTION_EVENTS, sub-types SIR and SDR, log a single context source creation or deletion message to the SRS.
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 contains SRS configuration information.
EXAMPLE:
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.clientactor.request-stream-max-msg-count | Value for the SRS configuration element <request-stream-max-msg-count>. |
um-srs.srs.clientactor.source-info-queue-service-interval | Value for the SRS configuration element <source-info-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>. |
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.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 contains SRS internal configuration information. These options are not intended for application use.
EXAMPLE:
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>. |
um-srs.srs.otidmap.async-receiver-distribution | Value for the SRS configuration element <async-receiver-distribution>. |
Request type REPORT_SRS_VERSION is sent by a monitoring application to determine the software version of the SRS.
The SRS will send a response of the form:
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"/>.
Where the "monitorInfoCategory"
field is set to one of the following:
The SRS will send a response of the form:
Note that "SRS_STATS" is replaced by the requested category.
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"/>.
Where the "monitorInfoCategory"
field is set to one of the following:
The SRS will send a response of the form:
Note that "SRS_STATS" is replaced by the requested category.