summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorYannick Markus <ym@ymarkus.dev>2022-11-04 14:43:01 +0100
committerYannick Markus <ym@ymarkus.dev>2022-11-04 14:43:01 +0100
commit50f308b059844d94b1fb28bdef99653b2178945f (patch)
tree4fee1f127539681034cf461a668cc73c30f6604d /nixos/modules
parent97f057e02bce5be0563a0c1f509e5447c9d5fad4 (diff)
downloadnixpkgs-50f308b059844d94b1fb28bdef99653b2178945f.tar
nixpkgs-50f308b059844d94b1fb28bdef99653b2178945f.tar.gz
nixpkgs-50f308b059844d94b1fb28bdef99653b2178945f.tar.bz2
nixpkgs-50f308b059844d94b1fb28bdef99653b2178945f.tar.lz
nixpkgs-50f308b059844d94b1fb28bdef99653b2178945f.tar.xz
nixpkgs-50f308b059844d94b1fb28bdef99653b2178945f.tar.zst
nixpkgs-50f308b059844d94b1fb28bdef99653b2178945f.zip
nixos/prometheus-zfs-exporter: init
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters.nix3
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters/zfs.nix44
2 files changed, 46 insertions, 1 deletions
diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix
index d9e380d4274..8826d80a70c 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters.nix
@@ -77,6 +77,7 @@ let
     "varnish"
     "wireguard"
     "flow"
+    "zfs"
   ] (name:
     import (./. + "/exporters/${name}.nix") { inherit config lib pkgs options; }
   );
@@ -196,7 +197,7 @@ let
         serviceConfig.LockPersonality = true;
         serviceConfig.MemoryDenyWriteExecute = true;
         serviceConfig.NoNewPrivileges = true;
-        serviceConfig.PrivateDevices = true;
+        serviceConfig.PrivateDevices = mkDefault true;
         serviceConfig.ProtectClock = mkDefault true;
         serviceConfig.ProtectControlGroups = true;
         serviceConfig.ProtectHome = true;
diff --git a/nixos/modules/services/monitoring/prometheus/exporters/zfs.nix b/nixos/modules/services/monitoring/prometheus/exporters/zfs.nix
new file mode 100644
index 00000000000..581eb077888
--- /dev/null
+++ b/nixos/modules/services/monitoring/prometheus/exporters/zfs.nix
@@ -0,0 +1,44 @@
+{ config, lib, pkgs, options }:
+
+with lib;
+
+let
+  cfg = config.services.prometheus.exporters.zfs;
+in
+{
+  port = 9134;
+
+  extraOpts = {
+    telemetryPath = mkOption {
+      type = types.str;
+      default = "/metrics";
+      description = ''
+        Path under which to expose metrics.
+      '';
+    };
+
+    pools = mkOption {
+      type = with types; nullOr (listOf str);
+      default = [ ];
+      description = ''
+        Name of the pool(s) to collect, repeat for multiple pools (default: all pools).
+      '';
+    };
+  };
+
+  serviceOpts = {
+    # needs zpool
+    path = [ config.boot.zfs.package ];
+    serviceConfig = {
+      ExecStart = ''
+        ${pkgs.prometheus-zfs-exporter}/bin/zfs_exporter \
+          --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
+          --web.telemetry-path ${cfg.telemetryPath} \
+          ${concatMapStringsSep " " (x: "--pool=${x}") cfg.pools} \
+          ${concatStringsSep " \\\n  " cfg.extraFlags}
+      '';
+      ProtectClock = false;
+      PrivateDevices = false;
+    };
+  };
+}