Game Server Monitoring

Player counts, maps and performance for your game servers

What it does

Track your game servers like first-class citizens: player counts, current map, FPS and arbitrary custom metrics — shown on your status page with the same uptime, alerting and incident machinery as every other monitor.

Supported game types

game_type Server
fivem FiveM / RedM (GTA V, RDR2)
minecraft Minecraft (Java)
rust Rust
cs2 Counter-Strike 2
ark ARK: Survival Evolved/Ascended
valheim Valheim
custom Anything else — use push or tcp_connect

Query methods

query_method How it works
query We query the game's public query protocol on query_port
rest_api We poll an HTTP JSON endpoint on the server
tcp_connect Simple TCP reachability — server accepts connections = up
push Your server/plugin pushes metrics to us (below)

Push-based reporting

A plugin or script on your server pushes metrics — required for custom games and the most detailed data for all others:

POST https://api.shxrk.systems/api/v1/uptime/game-server/push
Authorization: Bearer <push_key>
Content-Type: application/json
{
  "player_count": 42,
  "max_players": 64,
  "fps": 59.7,
  "map_name": "de_dust2",
  "server_name": "ShxrkSystems #1",
  "resources": [
    { "name": "es_extended", "state": "started" },
    { "name": "ox_inventory", "state": "started" }
  ],
  "custom_metrics": { "tick_rate": 128 }
}
Field Type Description
player_count int Current players
max_players int Slot limit
fps float Server FPS / tick rate
map_name string Current map
server_name string Display name
resources object[] Running resources/plugins — { "name", "state" } (FiveM-style)
custom_metrics object Any additional numeric/string metrics

If pushes stop within expected_interval seconds, the monitor goes down — a crashed server is caught even when it can't report. A push also resets the staleness timer and records an up-check.

FiveM: drop-in resource

For FiveM/RedM there is a ready-made server resource — no Lua needed. Download shxrk-monitor:

Drop the folder into resources/, then add to server.cfg:

ensure shxrk-monitor
set shxrk_push_key "YOUR_PUSH_KEY"

It pushes player_count, max_players (sv_maxclients), server FPS (from tick timing), map_name, sv_hostname and every resource's state every 60 seconds — so you can alert when es_extended, ox_inventory or any critical resource leaves the started state. Optional convars: shxrk_push_interval (min 15s) and shxrk_push_endpoint.

Managing monitors

Method Path Description
GET /api/v1/uptime/game-server/monitors List game server monitors
GET /api/v1/uptime/game-server/monitors/:id Detail
PUT /api/v1/uptime/game-server/monitors/:id/config Update game_type, query_method, query_port, widgets, interval
GET /api/v1/uptime/game-server/monitors/:id/metrics Recent metrics
GET /api/v1/uptime/game-server/monitors/:id/plugin Download the server plugin
POST /api/v1/uptime/game-server/monitors/:id/regenerate-key Rotate the push key

The legacy push path POST /api/v2/uptime/game-server/push remains reachable for already-deployed scripts, but new code should use /api/v1.

The push key is scoped to the single monitor — rotating it never affects other monitors.

Widgets

The widgets config controls which metrics render publicly on your status page — players over time, current map, FPS — so players see server health without logging in.