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 |
---|---|---|---|
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 |
name | type | possible tags | description |
---|---|---|---|
framesent | counter | stream, streamtype | Number of frames sent by the SDK. |
framesizesent | counter | 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 |
name | type | possible tags | description |
---|---|---|---|
Prefix: genvid.compose-backend. | |||
framesent | counter | stream, streamtype | Number of frames sent to gvencode |
framesizesent | counter | 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 | counter | stream, streamtype | Size in bytes of frames sent to replication nodes |
framedropped | counter | stream, streamtype | Number of frames rejected |
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 | counter | 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. |
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.commandd. | |||
game.received | counter | status | Number of game commands received |
notifications.received | counter | status | Number of notifications received |
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.
Load-Tester Sample Metrics¶
The Load Tester provides the following metrics:
name | type | possible tags | description |
---|---|---|---|
Prefix: loadtest.session. | |||
drawReceived.elapsed | time | Time between the connection and the first draw received | |
error | counter | Number of web socket connection failures | |
retry | counter | Number of connection retries | |
streamReceived.elapsed | time | Time between the connection and the first stream received | |
success | counter | Number of sessions successfully authenticated on the first try | |
success.elapsed | time | Time between the connection and a successful authentication | |
successwitherror | counter | Number of sessions successfully authenticated after a failure | |
successwitherror.elapsed | time | Time between the connection and a successful authentication after a failure | |
total | counter | Number of sessions created |