Your Minecraft server is running, players are online, and everything seems smooth. Until it is not. TPS drops, players complain about lag, and you have no idea where the problem is. Monitoring prevents that scenario. With the right tools, you see exactly what your server is doing, which plugins consume the most resources, and where the bottleneck is.
TPS and MSPT: the basics
Before setting up monitoring, understand what you are measuring. Minecraft runs on a tick system: 20 ticks per second (TPS) is the target. Each tick handles mob AI, redstone, block updates, and player actions. When a tick takes too long, TPS drops below 20, and players experience lag.
MSPT (milliseconds per tick) is the companion metric. At 20 TPS, each tick has a 50ms budget. An MSPT of 30 means your server is comfortable; 50 means it is at the limit; above 50 means TPS is dropping.
Spark: the essential profiler
Spark is the go-to performance profiler for Minecraft. It is lightweight, works on Paper, Spigot, Fabric, and Forge, and provides detailed breakdowns of what is consuming CPU time.
Key Spark features:
- TPS and tick duration monitoring:
/spark tpsshows current, average, and minimum TPS. - Profiling:
/spark profiler startrecords a profile that shows exactly which methods consume CPU time. After stopping, you get a link to a visual flame graph. - Heap analysis:
/spark heapsummaryreveals what is consuming RAM, helping identify memory leaks. - GC monitoring: tracks garbage collection pauses that cause lag spikes.
Install Spark from spark.lucko.me and drop the jar in your plugins/ folder.
Plan: player analytics and server health
Plan is a comprehensive analytics plugin that tracks both server performance and player behavior over time. Unlike Spark, which is a point-in-time profiler, Plan provides historical data.
Plan gives you:
- A web dashboard accessible from any browser
- Player activity graphs: who is online when, peak times, retention rates
- Server performance history: TPS, memory, CPU, and entity count over days and weeks
- Per-world breakdowns showing which world is the heaviest
- Plugin performance tab showing which plugins use the most tick time
Plan's web interface makes it easy to spot trends. If TPS dips every evening at 8 PM, you know that is your peak load time and can optimize accordingly.
Grafana and Prometheus: advanced monitoring
For large or professional servers, Grafana with Prometheus provides enterprise-grade monitoring. The setup is more involved but gives you maximum flexibility:
- Install a Minecraft exporter plugin (like UnifiedMetrics) that exposes metrics in Prometheus format.
- Set up Prometheus to scrape those metrics at regular intervals.
- Connect Grafana to Prometheus and build dashboards.
With Grafana, you can set up alerts: get a Discord notification when TPS drops below 18, when memory exceeds 90%, or when a specific error appears in the logs. This is monitoring at scale.
Console logging and Insights
Sometimes the simplest tools are the most effective. The server console tells you a lot if you know what to look for:
- Startup time: if your server takes significantly longer to start, a new plugin or a corrupted chunk may be the cause.
- Error spam: repeating error messages in the console can indicate a plugin conflict or broken configuration.
- Paper's built-in timings: run
/timings reportto generate a detailed server performance report (deprecated in favor of Spark but still available).
What to monitor and when to act
| Metric | Healthy | Warning | Action needed |
|---|---|---|---|
| TPS | 19.5 to 20 | 17 to 19.5 | Below 17 |
| MSPT | Below 30 | 30 to 50 | Above 50 |
| RAM usage | Below 70% | 70% to 85% | Above 85% |
| Entity count | Below 1000 | 1000 to 3000 | Above 3000 |
Do I need all of these tools?
No. For most servers, Spark alone is sufficient for diagnosing issues. Add Plan if you want ongoing historical tracking. Grafana is only worth the setup effort for networks or servers with 50+ regular players.
Does monitoring affect server performance?
Minimally. Spark uses under 1% CPU when idle and only more during active profiling. Plan's overhead is similarly low. Grafana exports add negligible load. The performance cost of monitoring is far less than the cost of not finding issues.
How do I find which plugin causes lag?
Run /spark profiler start, wait 5 minutes during peak hours, then /spark profiler stop. The flame graph shows exactly which plugins and methods consume the most tick time. Focus on the tallest bars.
Run your monitoring tools on a Minecraft server from HostValues with full plugin access and console support.