Sessions and server health

Telemetry

What a session record holds, and what the heartbeat reports about each server.

The clip shows, in order:

  1. Each server sends a heartbeat.
  2. Online, TPS, MSPT and memory per server.
  3. Performance over time.

#What a session holds

A session is posted twice under the same sessionId: once when the player joins, with no quitAt or durationSeconds, and again when they leave, which completes the row with the whole visit.

FieldMeaning
username, uuid, bedrockXuidWho the player is
identityTypepremium_java, cracked_java, or bedrock
premiumUuidOnly on a cracked_java session: the Mojang account behind a premium login, from nLogin or from the profile Mojang signed
hostnameThe address they connected through
serverNameWhich server recorded the session
joinedAt, quitAt, durationSecondsWhen it ran and how long
authConfirmedAt, authenticatedWhether a login was confirmed
protocolVersion, clientBrand, clientVersionThe game version and client the player joined with
ipAddressRead for the country, then kept only as a keyed hash
sessionIdYour own id, used to make a retry safe

#Heartbeats

Every connector posts a heartbeat on a fixed interval, ten seconds by default. It reports the online count and memory use for that one server, and TPS and MSPT from a Paper server, and it is what the Health page reads.

A Velocity proxy has no tick loop, and Folia ticks every region on its own, so neither sends TPS or MSPT. Health shows Not available for them rather than a made up number.

A server that stops sending heartbeats is shown as stale rather than removed.

#Replays and duplicates

The spool retries, so the API has to be safe against a second copy of the same event. A session carrying a sessionId you have already sent is recognised as a replay and answered with 200 rather than being stored twice. A ban carrying a repeated eventId behaves the same way.

If the same id arrives with different contents, the API answers 409 instead of overwriting what it already has.