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 SDK Input Metrics
name type possible tags description
framesubmitted counter stream Number of frames submitted to the SDK.
framesizesubmitted counter 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 Delta in ms between time codes of frames submitted.
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
Table 2 Genvid SDK Output Metrics
name type possible tags description
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 gauge stream, streamtype Number of extra frames that were sent to keep the expected rate up following missing submits.
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
Table 3 Compose Metrics
name type possible tags description
Prefix: genvid.compose-backend.
framesent counter stream, streamtype Number of frames sent to gvencode
framesizesent gauge stream, streamtype Size in bytes of frames sent to gvencode
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.
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
Table 4 Gvencode Metrics
name type possible tags description
Prefix: genvid.gvencode-compose.
blendingtime timing filtername Time to blind 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.
receive-frame-time timing filtername How many time frames take to be decoded.
rtmspMessageQueue timing filtername Input buffering channel for messages.
rtmspMessageQueueCount timing 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 Number of frames sent from the sink per second
framesizereceived counter 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 counter 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.
Table 5 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 6 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 7 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
Table 8 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.