From ad91208ae1cea92566ad03d3b4cdd68f0e71c55a Mon Sep 17 00:00:00 2001 From: Max Audron Date: Fri, 1 Aug 2025 02:01:20 +0200 Subject: add minecraft prometheus exporter --- lib/monitoring/default.nix | 8 ++++++ modules/games/default.nix | 35 +++++++++++++++++++++++--- modules/monitoring/default.nix | 2 ++ pkgs/prometheus-minecraft-exporter/default.nix | 24 ++++++++++++++++++ pkgs/prometheus-minecraft-exporter/result | 1 + secrets | 2 +- 6 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 pkgs/prometheus-minecraft-exporter/default.nix create mode 120000 pkgs/prometheus-minecraft-exporter/result diff --git a/lib/monitoring/default.nix b/lib/monitoring/default.nix index 2c7c3cf..b06c9f7 100644 --- a/lib/monitoring/default.nix +++ b/lib/monitoring/default.nix @@ -11,6 +11,14 @@ rec { relabel_configs = relabelConfig; }; + mkScrape = name: targets: { + job_name = name; + static_configs = [{ + targets = targets; + }]; + relabel_configs = relabelConfig; + }; + relabelConfig = [{ source_labels = ["__address__"]; target_label = "host"; diff --git a/modules/games/default.nix b/modules/games/default.nix index fee8e34..8befc83 100644 --- a/modules/games/default.nix +++ b/modules/games/default.nix @@ -55,6 +55,7 @@ minecraft_mods = { image = "itzg/minecraft-server"; autoStart = true; + extraOptions = [ "--network=host" ]; environment = { EULA = "true"; TYPE = "FABRIC"; @@ -62,15 +63,43 @@ SEED = "-3691007458655063350"; INIT_MEMORY = "1G"; MAX_MEMORY = "4G"; + + OVERRIDE_SERVER_PROPERTIES = "false"; }; - ports = [ - "25566:25565" - ]; volumes = [ "/var/lib/minecraft_mods:/data" ]; }; }; + systemd.services.prometheus-minecraft-exporter = + let exporter = pkgs.callPackage ../../pkgs/prometheus-minecraft-exporter {}; + in { + description = "minecraft prometheus exporter"; + enable = true; + + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" "podman-minecraft_mods.service" ]; + + serviceConfig = { + ExecStart = (lib.concatStringsSep " " ([ + "${exporter}/bin/minecraft-exporter" + "--web.listen-address=:9150" + "--mc.world=/var/lib/minecraft_mods/world" + "--mc.name-source=mojang" + "--mc.mod-server-stats=fabric" + "--web.disable-exporter-metrics" + ])); + EnvironmentFile = "/etc/secrets/minecraft_rcon.env"; + }; + }; + + secrets = { + minecraft = { + source = ../../secrets/minecraft_rcon.env; + dest = "/etc/secrets/minecraft_rcon.env"; + }; + }; + networking.firewall.allowedTCPPorts = [ 25566 ]; } diff --git a/modules/monitoring/default.nix b/modules/monitoring/default.nix index afcffa5..fe49c00 100644 --- a/modules/monitoring/default.nix +++ b/modules/monitoring/default.nix @@ -35,6 +35,8 @@ in { (mkScrapeConfig "garage" [ "fra01" "nyc01" "sin01" ] 3903) (mkScrapeConfig "pdns" [ "ettves" "fra01" "nyc01" "sin01" ] 8081) + + (mkScrape "minecraft" [ "ettves:25585" "ettves:9150" ]) ]; }; diff --git a/pkgs/prometheus-minecraft-exporter/default.nix b/pkgs/prometheus-minecraft-exporter/default.nix new file mode 100644 index 0000000..396f092 --- /dev/null +++ b/pkgs/prometheus-minecraft-exporter/default.nix @@ -0,0 +1,24 @@ +{ lib, + buildGoModule, + fetchFromGitHub, + ... +}: + +buildGoModule { + pname = "prometheus-minecraft-exporter"; + version = "0.22.0"; + + src = fetchFromGitHub { + owner = "dirien"; + repo = "minecraft-prometheus-exporter"; + rev = "v0.22.0"; + hash = "sha256-jjdFbGyK+bHgZx/UAbBygCnY/9f9QxgHGqxUusR7ro8="; + }; + + vendorHash = "sha256-Smlkqig7UVTSOrBGhEExbqefqh3Gv3LWbNOUdpJhLtQ="; + + meta = { + description = "collect player metrics from a minecraft server"; + homepage = "https://github.com/dirien/minecraft-prometheus-exporter"; + }; +} diff --git a/pkgs/prometheus-minecraft-exporter/result b/pkgs/prometheus-minecraft-exporter/result new file mode 120000 index 0000000..1724469 --- /dev/null +++ b/pkgs/prometheus-minecraft-exporter/result @@ -0,0 +1 @@ +/nix/store/kic17804i3jz88k1r4vd9mwnwlyji247-prometheus-minecraft-exporter-0.22.0 \ No newline at end of file diff --git a/secrets b/secrets index 25b1d46..10079a5 160000 --- a/secrets +++ b/secrets @@ -1 +1 @@ -Subproject commit 25b1d46edbbd5c9faad93c40ddfad9696b9e3cc9 +Subproject commit 10079a53596523af7c8294e73e688b87ba1513e5 -- cgit v1.2.3