2025-08-21 21:38:06 +02:00
2025-08-21 21:38:06 +02:00
2025-08-21 21:38:06 +02:00
2025-08-21 21:38:06 +02:00
2025-08-21 21:38:06 +02:00
2025-08-21 21:38:06 +02:00
2025-08-21 21:38:06 +02:00

Checkmk Minecraft Monitoring Plugin

This repository provides a Checkmk MKP package to monitor Minecraft servers.

It includes both an agent plugin (running on the Minecraft host) and a check plugin (running in Checkmk).

Features

  • Server statistics via the built-in Minecraft Query interface

    • Player count (online/max)
    • Player list
    • MOTD
    • Server version
    • Ping
  • Per-world performance metrics (via RCON, optional)

    • TPS (ticks per second)
    • Tick time (ms)
  • Automatic service discovery for each server and its worlds

  • Metrics for graphs and performance analysis in Checkmk

  • Error handling with fail counter to suppress short outages

Requirements

  • A running Checkmk installation (v2.x or newer recommended)
  • Minecraft server with Query interface enabled (default on most servers)
  • Optional: RCON enabled if you want per-world TPS and tick-time monitoring

Currently, only NeoForge has been tested for RCON TPS support. If you need other implementations or encounter problems, please open an issue.

Installation

Development setup

If you want to work on or test the plugin directly inside a Checkmk site, you have two options:

a) Release an installed MKP If you already installed the package via mkp install, you can release it:

omd su <yoursite>
mkp release minecraft

This removes the MKP registration but leaves all contained files unpacked in the correct places under ~/local/..., so you can edit them directly:

  • Check plugin (agent-based): ~/local/lib/python3/cmk_addons/plugins/minecraft/agent_based/
  • Graph definitions: ~/local/lib/python3/cmk_addons/plugins/minecraft/graphing/
  • Agent plugin: ~/local/share/check_mk/agents/plugins/minecraft.py (Just for download purposes)

b) Clone the repository into your development site Alternatively, you can clone this repository directly into the sites local directory:

omd su <yoursite>
cd ~/local/lib/python3/cmk_addons/plugins
git clone https://git.project-name-here.de/Project-Name-Here/checkmk-minecraft.git minecraft

# reload monitoring core
cmk -R

This way you can pull updates from git and test changes directly.

For production use install the packaged MKP:

  • Download the .mkp file from the Releases or Checkmk Exchange.
  • Install it via GUI (Extension Packages) or via CLI:
omd su <yoursite>
mkp install minecraft-<version>.mkp
cmk -R

After installation, the agent plugin is available for download in the Checkmk GUI under Agents → Plugins. Install it on your Minecraft server as described in the next section.

Agent Plugin Setup

On the monitored Minecraft server host, place the agent plugin in /usr/lib/check_mk_agent/plugins/ and make it executable. It will then be executed automatically by the Checkmk agent. You can also run it manually for testing:

/usr/lib/check_mk_agent/plugins/minecraft.py

This will generate or update the minecraft.cfg file in the same directory.

Dependencies

Install the required Python dependencies on the monitored Minecraft server:

pip3 install mcstatus mcrcon --break-system-packages
apt install python3-typeguard

Usage

  1. Run the agent plugin once on your Minecraft server. This will automatically generate a configuration file (minecraft_servers.json) in the same directory, which you can edit to define server addresses and optional RCON credentials.

  2. Run a service discovery in Checkmk for the host.

  3. You should now see:

    • One service for the server itself (players, MOTD, version, ping).
    • Additional services for each world (TPS and tick times, if RCON is enabled).
  4. Graphs will be available for player counts, ping, TPS, and tick times.

Example Configuration

A simple automatically generated config (minecraft_servers.json):

[
  {
    "name": "default",
    "host": "127.0.0.1",
    "port": 25565,
    "rcon": false,
    "rcon_type": "neoforge",
    "rcon_port": 25575,
    "rcon_password": ""
  }
]

A valid configuration with multiple servers:

[
  {
    "name": "server1",
    "host": "127.0.0.1",
    "port": 25565,
    "rcon": true,
    "rcon_type": "neoforge",
    "rcon_port": 25575,
    "rcon_password": "xxxxxxxxxxx"
  },
  {
    "name": "server2",
    "host": "127.0.0.1",
    "port": 25566,
    "rcon": false,
    "rcon_type": "neoforge",
    "rcon_port": 25575,
    "rcon_password": ""
  },
  {
    "name": "server3",
    "host": "127.0.0.1",
    "port": 25567,
    "rcon": false,
    "rcon_type": "neoforge",
    "rcon_port": 25575,
    "rcon_password": ""
  },
  {
    "name": "server4",
    "host": "127.0.0.1",
    "port": 25568,
    "rcon": false,
    "rcon_type": "neoforge",
    "rcon_port": 25575,
    "rcon_password": ""
  }
]

Error Handling

  • Both Query and RCON errors are checked.
  • A fail counter prevents false alarms by tolerating short outages.
  • After 5 consecutive failures, the check switches to CRIT.

Development & Contributions

  • Currently tested only with NeoForge for RCON TPS values.
  • Support for additional server implementations may be added later.
  • If you need support for another implementation or encounter issues, please open an issue.

Contributions via pull requests are welcome!

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for details.

Description
No description provided
Readme GPL-3.0 47 KiB
2025-08-21 21:38:06 +02:00
Languages
Python 100%