Metrics¶
Warning
Genvid metrics are still under development. Future versions are likely to change and create some incompatibilities.
In This Section
Genvid Metrics¶
Genvid services are configured to publish metrics locally in the
Datadog’s extended statsd format via
UDP port 8125. You can override this setting in the
game by specifying the GENVID_STATSD_URL
. Please provide a URL with the shape
host:port.
You can deactivate metrics by setting the GENVID_STATSD_DISABLED
to “true”.
In addition to metrics coming from Nomad, Consul, and Vault, our services provide the following metrics:
name | type | possible tags | description |
---|---|---|---|
initialize1_count initialize1_us | count timing | The number of times the Genvid_Initialize function is called and the time spent in it. | |
terminate1_count terminate1_us | count timing | The number of times the Genvid_Terminate function is called and the time spent in it. | |
getcurrenttimecode1_count getcurrenttimecode1_us | count timing | The number of times the Genvid_GetCurrentTimecode function is called and the time spent in it. | |
getprevioustimecode1_count getprevioustimecode1_us | count timing | The number of times the Genvid_GetPreviousTimecode function is called and the time spent in it. | |
createstream1_count createstream1_us | count timing | The number of times the Genvid_CreateStream function is called and the time spent in it. | |
destroystream1_count destroystream1_us | count timing | The number of times the Genvid_DestroyStream function is called and the time spent in it. | |
setparameterint1_count setparameterint1_us | count timing | The number of times the Genvid_SetParameterInt function is called and the time spent in it. | |
setparameterfloat1_count setparameterfloat1_us | count timing | The number of times the Genvid_SetParameterFloat function is called and the time spent in it. | |
setparameterpointer1_count setparameterpointer1_us | count timing | The number of times the Genvid_SetParameterPointer function called and the time spent in it. | |
getparameterint1_count getparameterint1_us | count timing | The number of times the Genvid_GetParameterInt function is called and the time spent in it. | |
getparameterfloat1_count getparameterfloat1_us | count timing | The number of times the Genvid_GetParameterFloat function is called and the time spent in it. | |
getparameterpointer1_count getparameterpointer1_us | count timing | The number of times the Genvid_GetParameterPointer function called and the time spent in it. | |
getparameterutf81_count getparameterutf81_us | count timing | The number of times the Genvid_GetParameterUTF8 function is called and the time spent in it. | |
submitaaudiodata1_count submitaaudiodata1_us | count timing | The number of times the Genvid_SubmitAudioData function is called and the time spent in it. | |
submitvideodata1_count submitvideodata1_us | count timing | The number of times the Genvid_SubmitVideoData function is called and the time spent in it. | |
submitgamedata1_count submitgamedata1_us | count timing | The number of times the Genvid_SubmitGameData function is called and the time spent in it. | |
submitannotation1_count submitannotation1_us | count timing | The number of times the Genvid_SubmitAnnotation function is called and the time spent in it. | |
submitnotification1_count submitnotification1_us | count timing | The number of times the Genvid_SubmitNotification function is called and the time spent in it. | |
subscribeevent1_count subscribeevent1_us | count timing | The number of times the Genvid_Subscribe function is called and the time spent in it. | |
unsubscribeevent1_count unsubscribeevent1_us | count timing | The number of times the Genvid_Unsubscribe function is called and the time spent in it. | |
checkforevents1_count checkforevents1_us | count timing | The number of times the check for events part of the Genvid_CheckForEvents function is called and the time spent in it. | |
checkforcommands1_count checkforcommands1_us | count timing | The number of times the check for commands part of the Genvid_CheckForEvents function is called and the time spent in it. | |
subscribecommand1_count subscribecommand1_us | count timing | The number of times the Genvid_SubscribeCommand function is called and the time spent in it. | |
unsubscribecommand1_count unsubscribecommand1_us | count timing | The number of times the Genvid_UnsubscribeCommand function is called and the time spent in it. |
name | type | possible tags | description |
---|---|---|---|
reservetimeslot_count reservetimeslot_us | count timing | The number of times the Genvid2_ReserveTimeSlot function is called and the time spent in it. | |
reservesource_count reservesource_us | count timing | The number of times the Genvid2_ReserveSource function is called and the time spent in it. | |
releasesource_count releasesource_us | count timing | The number of times the Genvid2_ReleaseSource function is called and the time spent in it. | |
releasesources_us releasesources_us | timing timing | The number of times the Genvid2_ReleaseSources function is called and the time spent in it. | |
createvideostream_us createvideostream_us | timing timing | The number of times the Genvid2_CreateVideoStream function is called and the time spent in it. | |
createaudiostream_us createaudiostream_us | timing timing | The number of times the Genvid2_CreateAudioStream function is called and the time spent in it. | |
createdatastream_us createdatastream_us | timing timing | The number of times the Genvid2_CreateDataStream function is called and the time spent in it. | |
destroystream_us destroystream_us | timing timing | The number of times the Genvid2_DestroyStream function is called and the time spent in it. | |
submitnotification_us submitnotification_us | timing timing | The number of times the Genvid2_SubmitNotification function is called and the time spent in it. | |
subscribeevent_us subscribeevent_us | timing timing | The number of times the Genvid2_SubscribeEvent function is called and the time spent in it. | |
unsubscribeevent_us unsubscribeevent_us | timing timing | The number of times the Genvid2_UnsubscribeEvent function is called and the time spent in it. | |
getnexteventsize_us getnexteventsize_us | timing timing | The number of times the Genvid2_GetNextEventSize function is called and the time spent in it. | |
getnexteventdata_us getnexteventdata_us | timing timing | The number of times the Genvid2_GetNextEventData function is called and the time spent in it. | |
subscribecommand_us subscribecommand_us | timing timing | The number of times the Genvid2_SubscribeCommand function is called and the time spent in it. | |
unsubscribecommand_us unsubscribecommand_us | timing timing | The number of times the Genvid2_UnsubscribeCommand function is called and the time spent in it. | |
getnextcommandsize_us getnextcommandsize_us | timing timing | The number of times the Genvid2_GetNextCommandSize function is called and the time spent in it. | |
getnextcommanddata_us getnextcommanddata_us | timing timing | The number of times the Genvid2_GetNextCommandData function is called and the time spent in it. |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.sdk. | |||
framesubmitted | counter | stream | Number of frames submitted to the SDK. |
framesizesubmitted | gauge | stream, streamtype | Size in bytes of frames submitted to the SDK. |
framesubmitteddropped | counter | stream | Number of frames submitted to the SDK that were dropped. |
framesizesubmittedropped | counter | stream, streamtype | Size in bytes of frames submitted to the SDK that were dropped. |
framedropped | counter | stream, streamtype | Number of frames dropped by the the SDK |
framesizedropped | counter | stream, streamtype | Size in bytes of frames dropped by the the SDK |
submitdelta | gauge | stream streamtype | Delta in ms between time codes of frames submitted. |
submittime_us | timing | stream streamtype | Time spent in us in the SDK submit functions. |
inbandwidth | gauge | Number of bytes per second submitted to the SDK. | |
notificationdropped | count | notificationid | Number of notifications dropped by the SDK |
notificationsizedropped | gauge | notificationid | Size in bytes of notifications dropped by the SDK |
gcl.received.frame.rate | gauge | stream, streamtype | Number of configuration frames received by the sdk, per second. |
gcl.received.frame.count | gauge | stream, streamtype | Number of configuration frames received by the sdk since the last metric submission. |
gcl.received.frame.total | gauge | stream, streamtype | Total number of configuration frames received by the sdk over the lifetime of the session. |
gcl.received.frame.size | gauge | stream, streamtype | Size, in bytes, of configuration frames received by the sdk, per second. |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.sdk. | |||
compositionframesent | counter | stream, streamtype | Number of frames sent by the compostion and synchronization streams. |
compositionframesizesent | counter | stream, streamtype | The size, in bytes, of frames sent by the composition and synchronization. |
framesent | counter | stream, streamtype | Number of frames sent by the SDK. |
framesizesent | gauge | stream, streamtype | Size in bytes of frames sent by the SDK. |
frameadded | counter | stream, streamtype | Number of extra frames that were sent to keep the expected rate up. |
framemissed | counter | stream, streamtype | Number of frames that were sent as missing due to lack of available data. |
framedelta | gauge | stream, streamtype | Delta in ms between time codes of frames sent. |
outbandwidth | gauge | Number of bytes per second sent by the SDK. | |
streambandwidth | gauge | stream, streamtype | Per stream number of bytes per second sent by the SDK. |
notificationsent | counter | notificationid | Number of notifications succesfully sent by the the SDK |
notificationsizepublished | gauge | notificationid | Size in bytes of notifications succesfully sent by the the SDK |
gcl.sent.frame.rate | gauge | stream, streamtype | Number of frames sent per second by the sdk. |
gcl.sent.frame.count | gauge | stream, streamtype | Number of frames sent by the sdk since the last metric submission. |
gcl.sent.frame.missing | gauge | stream, streamtype | Number of frames flagged as missing sent by the SDK since the last metric submission. |
gcl.sent.frame.total | gauge | stream, streamtype | Total number of frames sent by the sdk over the lifetime of the session. |
gcl.sent.frame.size | gauge | stream, streamtype | Size, in bytes, of frames sent by the sdk, per second. |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.compose-backend. | |||
framesent | counter | stream, streamtype, messagetype, reason, session, source, stream | Number of frames sent to gvencode |
framesizesent | gauge | stream, streamtype messagetype, reason, session, source, stream | Size in bytes of frames sent to gvencode |
framediscarded | counter | stream, streamtype, messagetype, reason, session, source, stream | Number of frames that were not sent to gvencode |
framesizediscarded | gauge | stream, streamtype messagetype, reason, session, source, stream | Size in bytes of frames that were not sent to gvencode |
gcl.sent.frame.rate | gauge | stream, streamtype | Number of frames sent per second to gvencode. |
gcl.sent.frame.count | gauge | stream, streamtype | Number of frames sent to gvencode since the last metric submission. |
gcl.sent.frame.missing | gauge | stream, streamtype | Number of frames flagged as missing sent to gvencode since the last metric submission. |
gcl.sent.frame.total | gauge | stream, streamtype | Total number of frames sent to gvencode over the lifetime of the session. |
gcl.sent.frame.size | gauge | stream, streamtype | Size, in bytes, of frames sent to gvencode, per second. |
gcl.received.frame.rate | gauge | stream, streamtype | Number of frames received by the backend, per second. |
gcl.received.frame.count | gauge | stream, streamtype | Number of frames received by the backend since the last metric submission. |
gcl.received.frame.missing | gauge | stream, streamtype | Number of frames flagged as missing received from the backend since the last metric submission. |
gcl.received.frame.total | gauge | stream, streamtype | Total number of frames received by the backend over the lifetime of the session. |
gcl.received.frame.size | gauge | stream, streamtype | Size, in bytes, of frames received by the backend, per second. |
Prefix: genvid.compose-frontend. | |||
framemissed | counter | stream, streamtype, sessionname | Number of frames created by compose |
framereceived | counter | stream, streamtype, sessionname | Number of frames received |
framesizereceived | counter | stream, streamtype, sessionname | Size in bytes of frames received |
framedelayreceived_us | gauge | stream, streamtype, sessionname | Delay of the frame compare to its expected time. |
gcl.sent.frame.rate | gauge | stream, streamtype | Number of configuration frames sent, per second, by the frontend session. |
gcl.sent.frame.count | gauge | stream, streamtype | Number of configuration frames sent by the frontend session since the last metric submission. |
gcl.sent.frame.total | gauge | stream, streamtype | Total number of configuration frames sent by the frontend session over the lifetime of the session. |
gcl.sent.frame.size | gauge | stream, streamtype | Size, in bytes, of configuration frames sent by the frontend session, per second. |
gcl.received.frame.rate | gauge | stream, streamtype | Number of frames received by the frontend session, per second. |
gcl.received.frame.count | gauge | stream, streamtype | Number of frames received by the frontend session since the last metric submission. |
gcl.received.frame.missing | gauge | stream, streamtype | Number of frames flagged as missing received by the frontend since the last metric submission. |
gcl.received.frame.total | gauge | stream, streamtype | Total number of frames received by the frontend session over the lifetime of the session. |
gcl.received.frame.size | gauge | stream, streamtype | Size, in bytes, of frames received by the frontend session, per second, over lifetime of the session. |
Prefix: genvid.compose-gameframes. | |||
framesent | counter | stream, streamtype | Number of frames sent to replication nodes. |
framesizesent | gauge | stream, streamtype | Size in bytes of frames sent to replication nodes |
framedropped | counter | stream, streamtype | Number of frames rejected |
gcl.sent.frame.rate | gauge | stream, streamtype | Number of frames sent per second to replication nodes. |
gcl.sent.frame.count | gauge | stream, streamtype | Number of frames sent to replication nodes since the last metric submission. |
gcl.sent.frame.missing | gauge | stream, streamtype | Number of frames flagged as missing sent to replication nodes since the last metric submission. |
gcl.sent.frame.total | gauge | stream, streamtype | Total number of frames sent to replication nodes over the lifetime of the session. |
gcl.sent.frame.size | gauge | stream, streamtype | Size, in bytes, of frames sent to replication nodes, per second. |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.gvencode-compose. | |||
blendingtime | timing | filtername | Time to blend one video frame |
bytesent | counter | filtername, session | Number of bytes sent by a session |
compositionmonitortime | timing | filtername | Time taken to produce a studio monitor frame |
compositionpreviewtime | timing | filtername | Time taken to compose a frame of the preview stream. |
compositionprogramtime | timing | filtername | Broadcast stream frame composition time. |
compositionsent | counter | filtername, filterid | Counts the number of frames sent by composition and synchronization streams from GVEncode to Composed. |
compositionsizesent | gauge | filtername, streamid | The size of frames in bytes sent by composition and synchronization streams from GVEncode to Composed. |
receive-frame-time | timing | streamname | How many time frames take to be decoded. |
rtmspMessageQueue | timing | filtername | Input buffering channel for messages. |
rtmspMessageQueueCount | gauge | filtername | Amount of RTMSP messages added in gvencode input queue. |
compositiontotaltime | timing | filtername | Total time spent compositing all the streams. |
chromakeyingtime | timing | filtername | Time to compose a chroma key layout |
decodingtime | timing | filtername | Time to decode one frame |
delayedframe | counter | filtername, streamtype | Number of frames delayed |
delayedframesize | counter | filtername, streamtype | Size in bytes uses by delayed frames |
encodingtime | timing | filtername | Time to encode one frame |
fifoBufferNumFrames | gauge | filtername, streamtype | Number of frames in the fifo buffers |
framedropped | counter | filtername, streamtype | Number of dropped frames to preserve the frame rate |
frameduplicated | counter | filtername, streamtype | Number of duplicated frames to preserve the frame rate |
frameerror_fr | counter | filtername | frame error (frame) for sending frame to RTMP. This value should 0 |
framereceived | counter | filtername, streamtype | Number of frames received from compose |
framesent | counter | filtername, streamtype | Number of frames sent to broadcaster |
framesSentFromSinkHz | gauge | filtername, streamtype | Number of frames sent to broadcaster |
framesizesent | gauge | filtername, streamtype | Size of a frame sent from the sink |
framesizereceived | gauge | filtername, streamtype | Size in bytes of frames received from compose |
lowoutputbufferlevel | counter | filtername | Low output buffer level detection |
missingframecreatingtime | timing | filtername | Time to create a missing frame |
outputbufferlimit_us | gauge | filtername | frame duration (us) in output buffer |
runningtime | timing | filtername | Time to complete the execution of one frame by a filter |
scalingtime | timing | filtername | Time to scale one video frame |
session | counter | filtername, session | Number of sessions active |
audiopinnumframes | gauge | filtername pin name pin type | Number of audio frames in a given pin. |
videopinnumframes | gauge | filtername pin name pin type | Number of audio frames in a given pin. |
writeframe | counter | filtername outputtype error | Number of frames Gvencode attempted to send to the broadcast service or to the storage service. |
gcl.received.frame.rate | gauge | stream, streamtype | Number of frames received by gvencode, per second. |
gcl.received.frame.count | gauge | stream, streamtype | Number of frames received by gvencode since the last metric submission. |
gcl.received.frame.missing | gauge | stream, streamtype | Number of frames flagged as missing received by gvencode since the last metric submission. |
gcl.received.frame.total | gauge | stream, streamtype | Total number of frames received by gvencode over the lifetime of the session. |
gcl.received.frame.size | gauge | stream, streamtype | Size, in bytes, of frames received by gvencode, per second. |
gcl.sent.frame.rate | gauge | stream, streamtype | Number of frames sent per second by gvencode. |
gcl.sent.frame.count | gauge | stream, streamtype | Number of frames sent by gvencode since the last metric submission. |
gcl.sent.frame.missing | gauge | stream, streamtype | Number of frames flagged as missing sent by gvencode since the last metric submission. |
gcl.sent.frame.total | gauge | stream, streamtype | Total number of frames sent by gvencode over the lifetime of the the session. |
gcl.sent.frame.size | gauge | stream, streamtype | Size, in bytes, of frames sent by gvencode, per second. |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.studiod. | |||
messagebytereceived | counter | websocket | Size in bytes of messages received from a client with a Websocket |
messagebytesent | counter | websocket | Size in bytes of messages sent to client with a Websocket |
messageReceived | counter | websocket | Number of messages received from a client with a Websocket |
messageSent | counter | websocket | Number of messages sent to client with a Websocket |
websocketopened | gauge | websocket | Number of Websocket opens by studio |
Prefix: genvid.studio. | |||
monitor.video.element .seekable.size.seconds | gauge | Size of the video element’s seekable buffer in seconds | |
monitor.source.buffer .size.seconds | gauge | The source buffer’s size in seconds | |
monitor.playback.rate | gauge | The video element’s playback rate | |
monitor.play.rate | gauge | The time played per second. A value of 1 represents a constant play speed | |
monitor.segments.pushed.hz | gauge | The number of segments pushed to the source buffer per second | |
monitor.segment.size .kilobytes | gauge | The average size of a segment in kilobytes | |
monitor.latency.seconds | gauge | The time delta between the current playback time and the most recent seekable frame |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.leafd.reduce. | |||
collect | timing | reduceId | Duration of a collect call, used before sending a map reduce result |
processkeyvalue | timing | reduceId | Duration of a processkeyvalue call , part of a reduction execution |
reduce | timing | reduceId | Duration of a reduce call, part of a reduction execution |
sent | count | reduceId | Number of messages sent to nats on topic “events.nodes.results. {{msgId}}” |
size | count | reduceId | Size in bytes of messages sent to nats on topic “events.nodes. results.{{msgId}}” |
Prefix: genvid.leafd.map. | |||
accepted | count | mapId, success | Number of key values processed by a map |
processkeyvalues | timing | mapId, success | Duration of a processkeyvalues call, part of a map execution |
refused | count | Number of key values not processed by a map | |
Prefix: genvid.leafd.connection. | |||
current | gauge | The current number of clients connected to a leaf | |
currentdatacachelength | gauge | The current number of messages stored in the data cache | |
disconnected | count | The number of client disconnections from a leaf | |
elapsed | timing | The duration of a client session | |
initialsendtime | timing | Duration of a processkeyvalues call, part of a map reduce | |
sentdatacachelength | gauge | The number of message in the data cache being sent to a client | |
sentdatacachesize | gauge | The size of the data cache being sent to the client | |
sentpackets | count | The number of packets sent | |
sentpacketssize | count | The size of the packets sent | |
total | count | The number of client connections to a leaf | |
Prefix: genvid.leafd.root. | |||
receivedpackets | count | type | The number of packets received from rootd |
receivedpacketssize | count | type | The size of the packets received from rootd |
Prefix: genvid.leafd.event. | |||
count | count | The number of events sent by the clients | |
size | count | The size of the events sent by the clients |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.webgateway. | |||
game.received | counter | status | Number of game commands received |
notifications.received | counter | status | Number of notifications received |
events.received | counter | status | Number of events received |
events.processed | counter | status | Number of events processed |
batchevents.reduce.collect | timing | reduceId | Duration of a collect call, used before sending a map reduce result |
reduce.sent | count | reduceId | Number of messages sent to nats on topic “events.nodes.results. {{msgId}}” |
reduce.size | count | reduceId | Size in bytes of messages sent to nats on topic “events.nodes.results. {{msgId}}” |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.viewer. | |||
cached.bytes | gauge | stream | Client cache size in bytes |
cached.seconds | gauge | stream | Client cache size in content time |
deviation.from.latest.frame | gauge | Deviation between the current media player time and the most recent data in the source buffer | |
events.sent.Hz | gauge | Number of events sent per second | |
frame.decode.duration | timing | The time it takes to decode newly received frames | |
frame.decode.errors | gauge | The number of frame decoding errors | |
latency | timing | The stream latency | |
notification.decode.errors | gauge | Number of notification decoding errors | |
notification.decode. duration | timing | The amount of time it took to decode the received notifications | |
onDraw.duration.max | timing | The longest amount of time it took to process the onDraw call | |
onDraw.duration.mean | timing | The average ammount of time it took the onDraw callback to execute | |
onDraw.duration.min | timing | The shortest amount of time it took to process the onDraw call | |
onDraw.interval.max | timing | The longest amount of time between onDraw executions | |
onDraw.interval.mean | timing | The average amount of time between onDraw executions | |
onDraw.interval.min | timing | The shortest amount of time between onDraw executions | |
playback.rate | gauge | The player’s playback rate | |
received.annotation. bytes.Hz | gauge | stream | The amount of annotation bytes received per second |
received.annotation.frames. Hz | gauge | stream | The amount of annotation frames received per second |
received.data.bytes.Hz | gauge | stream | The amount of data bytes received per second |
received.data.frames.Hz | gauge | stream | The amount of frames received per second |
streams.interval | timing | The amount of time it took to receive new streams | |
streams.received.Hz | gauge | The number of streams received per second | |
sync.error.max | gauge | The max sync error | |
sync.error.mean | gauge | The average sync error | |
sync.error.min | gauge | The min sync error | |
videoTime | gauge | The video time in milliseconds |
These are the available tags:
- stream: The ID of the stream (string).
- streamtype: The type of the stream:
video
,audio
,data
, orannotations
. - sessionname: The name of the session.
- session: Session identifer (internal pointer value).
- filtername: The name of filter in composition graph.
- websocket: the address of the pointer of the Websocket.
- reduceId: The ID of the reduce definition.