IoT · Game server

Minecraft Monitoring

A game server treated like production — 95.2% uptime, TPS-drop alerts, and a 10-command Discord bot. The live stats on this site come from here.

95.2%uptime
10Discord commands
real-timeTPS · heap · players
The problem

Friends kept saying "it’s lagging" with no data

A Minecraft server is a real-time system with real users, and "is it lagging?" deserves a real answer. I wanted tick-rate, heap, and player metrics scraped continuously, alerts when ticks drop, and a way to check or fix things without SSH.

It also became the honest heartbeat for this whole site: a cron publishes a snapshot that the home page and dashboard read, so the "live" claim is backed by the same feed I use to run the server.

Architecture

Export, scrape, dashboard, control, publish

JMX and RCON expose the server’s internals; Prometheus scrapes them; Grafana visualises; a Discord bot alerts and controls; and a cron publishes a JSON snapshot for this site to read.

Key decisions

What I chose, and why

Decision

JMX + RCON together

over a single exporter

JMX gives deep JVM metrics; RCON gives live control. Together they cover "what’s happening" and "do something about it".

Decision

A published snapshot

over exposing Prometheus publicly

A cron writes a small JSON the site reads — no public scrape endpoint, and an honest staleness timestamp comes for free.

Decision

A Discord bot

over a web control panel

Ten slash commands (status, players, tps…) put ops where the players already are, with no extra service to host.

Measured outcomes

The results

95.2%Uptimelive, 7-day average
10Bot commands
15sScrape interval
20Grafana panels

The same feed powers the live strip on the home page and the dashboard.