Minecraft Server Monitoring: Spark, Plan and More

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 tps shows current, average, and minimum TPS.
  • Profiling: /spark profiler start records a profile that shows exactly which methods consume CPU time. After stopping, you get a link to a visual flame graph.
  • Heap analysis: /spark heapsummary reveals 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:

  1. Install a Minecraft exporter plugin (like UnifiedMetrics) that exposes metrics in Prometheus format.
  2. Set up Prometheus to scrape those metrics at regular intervals.
  3. 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 report to generate a detailed server performance report (deprecated in favor of Spark but still available).

What to monitor and when to act

MetricHealthyWarningAction needed
TPS19.5 to 2017 to 19.5Below 17
MSPTBelow 3030 to 50Above 50
RAM usageBelow 70%70% to 85%Above 85%
Entity countBelow 10001000 to 3000Above 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.


Still stuck? Open a support ticket and our team will help you out.

Back to the blog