vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / zfs.nix
bloba685b94b827f4a87f3a1f29ebf57fa60f7c7871f
1 { config, lib, pkgs, options, ... }:
4 let
5   cfg = config.services.prometheus.exporters.zfs;
6   inherit (lib)
7     mkOption
8     types
9     concatStringsSep
10     concatMapStringsSep
11     ;
14   port = 9134;
16   extraOpts = {
17     telemetryPath = mkOption {
18       type = types.str;
19       default = "/metrics";
20       description = ''
21         Path under which to expose metrics.
22       '';
23     };
25     pools = mkOption {
26       type = with types; nullOr (listOf str);
27       default = [ ];
28       description = ''
29         Name of the pool(s) to collect, repeat for multiple pools (default: all pools).
30       '';
31     };
32   };
34   serviceOpts = {
35     # needs zpool
36     path = [ config.boot.zfs.package ];
37     serviceConfig = {
38       ExecStart = ''
39         ${pkgs.prometheus-zfs-exporter}/bin/zfs_exporter \
40           --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
41           --web.telemetry-path ${cfg.telemetryPath} \
42           ${concatMapStringsSep " " (x: "--pool=${x}") cfg.pools} \
43           ${concatStringsSep " \\\n  " cfg.extraFlags}
44       '';
45       ProtectClock = false;
46       PrivateDevices = false;
47     };
48   };