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:

Table 1 Genvid Compatibility Layer Function Calls
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.
Table 2 Genvid SDK Function Calls
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.
Table 3 Genvid SDK Input Metrics
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.
Table 4 Genvid SDK Output Metrics
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.
Table 5 Compose Metrics
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.
Table 6 Gvencode Metrics
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.
Table 7 Studio Metrics
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
Table 8 Leaf Metrics
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
Table 9 Command Metrics
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}}”
Table 10 Client Metrics
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, or annotations.
  • 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.