Metrics & Health
Endpoints de telemetria — players online, TPS, CPU/RAM, economia agregada e probes de saúde.
/elite-saas/health🔒 authHealthcheck super rápido. Não toca em adapters nem em DB — só responde para confirmar que o resource está vivo e responde com o tenant correto.
{
"ok": true,
"tenantId": "elite-city",
"serverTime": 1716587411,
"gameTimerMs": 32483004
}/elite-saas/system🔒 authMetadados estáticos do servidor: nome configurado, ID interno, lista de resources iniciados, runtime do FX.
{
"tenantId": "elite-city",
"serverName": "Elite City RP",
"saasTenantId": "ckxxx",
"runtime": { "fxVersion": "cerulean", "hostname": "fx-br-01" },
"resourcesStarted": ["oxmysql", "vrp", "mtg_inventory", "elite_saas_api", "..."]
}/elite-saas/metrics🔒 authSnapshot ao vivo. Consultado pelo painel a cada 15s no Overview e KPIs.
200 OK
{
"available": true,
"tenantId": "elite-city",
"syncedAt": 1716587411,
"playersOnline": 42,
"tpsApprox": 58.4,
"eventsPerMinute": 1240,
"cpuPercent": 31.2,
"ramUsedPercent": 64.0,
"ramUsedMb": 5120,
"ramTotalMb": 8000,
"loadAvg1": null,
"hostSampleSource": "windows_sidecar",
"hostError": null,
"players": [
{ "serverId": 7, "userId": 4823, "name": "João", "ping": 42 },
{ "serverId": 9, "userId": 9012, "name": "Maria", "ping": 87 }
],
"peakPlayersRecord": 64,
"peakPlayers24h": 58,
"economyTotalMoney": 184500000,
"economyDailyPeaks7d": [
{ "day": "2026-05-18", "peak": 180000000 },
{ "day": "2026-05-19", "peak": 181500000 },
{ "day": "2026-05-24", "peak": 184500000 }
],
"httpRequestsPerSecond": 3.2,
"httpErrorRateLastHour": 0.04
}Campos-chave
players[].userIdvRP.getUserId(source). Pode ser null em momentos onde o source ainda não foi mapeado (early boot do player). Use para abrir perfil direto.tpsApproxhostSampleSourcelinux_proc, windows_wmic, windows_sidecar ou none.economyDailyPeaks7dConfig.EconomyDailyPeakTableName. Mais antigo primeiro; até Config.EconomyGraphMaxDays entradas.economyTotalMoney é o valor atual (SUM de wallet + bank + paypal). economyDailyPeaks7d são os máximos diários gravados periodicamente — bom para tendência.Como o painel usa
O backend Nest combina /metrics com latência das probes (/health, /system, oxmysql) e gera o snapshot ServerHealth que o frontend consome em React Query com refetch de 15s. As páginas Overview e KPIs usam exatamente o mesmo payload.
Métricas internas (HTTP)
O resource conta requests e erros (status >= 400) para reportar httpRequestsPerSecond e httpErrorRateLastHour. Outros resources podem incrementar o contador de eventos:
exports['elite_saas_api']:RecordEvent(1) -- soma 1 evento para o EPM