Skip to content

Telemetry

GFN collects extensive telemetry for quality, performance, and usage analytics. Telemetry flows from both the client (JS) and the server (GCIS plugins via NvTelemetry).

Client Telemetry

TelemetryService

Located in main_beautified.js and 277_beautified.js.

Key methods:

  • telemetryService.setScreen(screenId) — tracks which screen the user is on
  • telemetryUtilService.sendClickEvent(telemetryId) — click tracking
  • telemetryService.sendEvent(event) — generic event

Session Telemetry Events

Emitted at session start/end (from vendor_beautified.js):

javascript
{
  // Session identifiers
  sessionId: string,
  subSessionId: string,
  cmsId: number,             // Game ID
  networkTestSessionId: string,

  // Streaming quality
  exitErrorCode: number,
  streamDuration: number,     // milliseconds
  frameCount: number,
  codec: string,              // "H264", "HEVC", "AV1"

  // Connection info
  zoneAddress: string,
  connectivityInfo: object,
  streamInfo: object,
  streamingProfile: string,   // GUID

  // Client info
  systemInfoGuid: string,

  // Flags
  isResume: boolean
}

Network Test Telemetry

javascript
NetworkTest.emit("NetworkTestCompleted", {
  sessionId: string,
  error: object | null,
  zone: string
})

getNetworkTestExceptionTelemetryEvent()
getNetworkTestHttpTelemetryEvent()

Screen Tracking

javascript
// Game library screens
telemetryService.setScreen(C.MCB.ScreenAllGames)

// UI events
telemetryUtilService.sendClickEvent("game_tile_click")
telemetryUtilService.sendClickEvent("deep_link_share")

Game Launch Events

From 277_beautified.js:

  • Game launch attempts (success/failure)
  • Quit game events
  • Layout error events with telemetry IDs
  • Deep link share events

Session Distributed Tracing

GameSessionDistributedTracingService integrates with LightStep for end-to-end session tracing:

Connection info from LightStepConnectionInfoDef protobuf
Trace spans across: client → GSG → PM → NGS → GCIS plugins

Server-Side Telemetry

NvTelemetry Framework

All GCIS plugins emit telemetry via NvTelemetry:

  • ElmPlugin: Security violation events, session lifecycle events
  • GciPlugin: File integrity events, process violations
  • UadMLPlugin: ML inference results, anomaly scores
  • LkmPlugin: Session management events

OpenTelemetry Export

json
{
  "OpenTelemetry": {
    "host": "prod.otel.kaizen.nvidia.com",
    "stagingHost": "stg.otel.kaizen.nvidia.com",
    "port": 8282,
    "enable": true,
    "isSslEnabled": true
  }
}

OpenTracing (LightStep)

json
{
  "OpenTracing": {
    "url": "https://ls.dtrace.nvidia.com",
    "port": 443
  }
}

Gameseat Telemetry Connector

A separate telemetry aggregator for game seat metrics:

json
{
  "GameseatTelemetryConnector": {
    "enable": false,
    "ngsSchema": "gfn-team.open.ngs:4",
    "ctmtSchema": "gfn-team.open.ctmt:2",
    "ngsCollector": "gfn-team.open.ngs",
    "telemetryAggregatorResponseTimeoutMs": 3000,
    "exclusiveMode": true
  }
}

Currently disabled.

Analytics

Performance monitoring enabled at seat level:

json
{
  "Analytics": {
    "enablePerfmon": true,
    "enablePerfmonEarlyStart": false
  }
}

End-of-session QoS telemetry for Windows/macOS native clients:

json
{
  "vqos[0].statsProcessorThread.flags": 255,
  "vqos[0].sendEndOfSessionQosTelemetry": 1
}

This captures detailed bitrate, packet loss, latency, and jitter statistics for the uplink channel.

Log-Based Telemetry

The GCIS plugin logs record timestamps and event data for every:

  • Session setup/teardown
  • Security violation detection
  • Process creation on the rig
  • DNS queries and registry modifications
  • ML inference scores

All logs are uploaded post-session to NVIDIA's backend with configurable consent levels.

admindesk.top — Reversed & documented from Asgard rig backups and GCIS plugin binaries.