Loading nixos/modules/services/monitoring/prometheus/exporters.nix +2 −1 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ let "varnish" "wireguard" "flow" "zfs" ] (name: import (./. + "/exporters/${name}.nix") { inherit config lib pkgs options; } ); Loading Loading @@ -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; Loading nixos/modules/services/monitoring/prometheus/exporters/zfs.nix 0 → 100644 +44 −0 Original line number Diff line number Diff line { 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 = lib.mdDoc '' Path under which to expose metrics. ''; }; pools = mkOption { type = with types; nullOr (listOf str); default = [ ]; description = lib.mdDoc '' 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; }; }; } nixos/tests/prometheus-exporters.nix +16 −0 Original line number Diff line number Diff line Loading @@ -1396,6 +1396,22 @@ let ) ''; }; zfs = { exporterConfig = { enable = true; }; metricProvider = { boot.supportedFilesystems = [ "zfs" ]; networking.hostId = "7327ded7"; }; exporterTest = '' wait_for_unit("prometheus-zfs-exporter.service") wait_for_unit("zfs.target") wait_for_open_port(9134) wait_until_succeeds("curl -f localhost:9134/metrics | grep 'zfs_scrape_collector_success{.*} 1'") ''; }; }; in mapAttrs Loading Loading
nixos/modules/services/monitoring/prometheus/exporters.nix +2 −1 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ let "varnish" "wireguard" "flow" "zfs" ] (name: import (./. + "/exporters/${name}.nix") { inherit config lib pkgs options; } ); Loading Loading @@ -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; Loading
nixos/modules/services/monitoring/prometheus/exporters/zfs.nix 0 → 100644 +44 −0 Original line number Diff line number Diff line { 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 = lib.mdDoc '' Path under which to expose metrics. ''; }; pools = mkOption { type = with types; nullOr (listOf str); default = [ ]; description = lib.mdDoc '' 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; }; }; }
nixos/tests/prometheus-exporters.nix +16 −0 Original line number Diff line number Diff line Loading @@ -1396,6 +1396,22 @@ let ) ''; }; zfs = { exporterConfig = { enable = true; }; metricProvider = { boot.supportedFilesystems = [ "zfs" ]; networking.hostId = "7327ded7"; }; exporterTest = '' wait_for_unit("prometheus-zfs-exporter.service") wait_for_unit("zfs.target") wait_for_open_port(9134) wait_until_succeeds("curl -f localhost:9134/metrics | grep 'zfs_scrape_collector_success{.*} 1'") ''; }; }; in mapAttrs Loading