aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/monitoring/default.nix8
-rw-r--r--modules/games/default.nix35
-rw-r--r--modules/monitoring/default.nix2
-rw-r--r--pkgs/prometheus-minecraft-exporter/default.nix24
l---------pkgs/prometheus-minecraft-exporter/result1
m---------secrets0
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