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".
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.
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.
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.
Decision
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
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
over a web control panel
Ten slash commands (status, players, tps…) put ops where the players already are, with no extra service to host.
The same feed powers the live strip on the home page and the dashboard.