summary refs log tree commit diff
path: root/nixos/modules/services/monitoring/prometheus/exporters
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/services/monitoring/prometheus/exporters
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/services/monitoring/prometheus/exporters')
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters/zfs.nix44
1 files changed, 44 insertions, 0 deletions
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;
+    };
+  };
+}