diff options
| author | Max Audron <audron@cocaine.farm> | 2025-08-01 02:01:20 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2025-08-01 02:01:20 +0200 |
| commit | ad91208ae1cea92566ad03d3b4cdd68f0e71c55a (patch) | |
| tree | f82b0f7637ed28a9f7d1afb4214563b2e7331d80 | |
| parent | more monitoring & scrape config shortcuts (diff) | |
add minecraft prometheus exporter
Diffstat (limited to '')
| -rw-r--r-- | lib/monitoring/default.nix | 8 | ||||
| -rw-r--r-- | modules/games/default.nix | 35 | ||||
| -rw-r--r-- | modules/monitoring/default.nix | 2 | ||||
| -rw-r--r-- | pkgs/prometheus-minecraft-exporter/default.nix | 24 | ||||
| l--------- | pkgs/prometheus-minecraft-exporter/result | 1 | ||||
| m--------- | secrets | 0 |
6 files changed, 67 insertions, 3 deletions
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 -Subproject 25b1d46edbbd5c9faad93c40ddfad9696b9e3cc +Subproject 10079a53596523af7c8294e73e688b87ba1513e |
