vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / bind.nix
blob1c7dcf8b1ef03eff41586bf1f5f86b35eded2d83
1 { config, lib, pkgs, options, ... }:
3 let
4   cfg = config.services.prometheus.exporters.bind;
5   inherit (lib) mkOption types concatStringsSep;
6 in
8   port = 9119;
9   extraOpts = {
10     bindURI = mkOption {
11       type = types.str;
12       default = "http://localhost:8053/";
13       description = ''
14         HTTP XML API address of an Bind server.
15       '';
16     };
17     bindTimeout = mkOption {
18       type = types.str;
19       default = "10s";
20       description = ''
21         Timeout for trying to get stats from Bind.
22       '';
23     };
24     bindVersion = mkOption {
25       type = types.enum [ "xml.v2" "xml.v3" "auto" ];
26       default = "auto";
27       description = ''
28         BIND statistics version. Can be detected automatically.
29       '';
30     };
31     bindGroups = mkOption {
32       type = types.listOf (types.enum [ "server" "view" "tasks" ]);
33       default = [ "server" "view" ];
34       description = ''
35         List of statistics to collect. Available: [server, view, tasks]
36       '';
37     };
38   };
39   serviceOpts = {
40     serviceConfig = {
41       ExecStart = ''
42         ${pkgs.prometheus-bind-exporter}/bin/bind_exporter \
43           --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
44           --bind.pid-file /var/run/named/named.pid \
45           --bind.timeout ${toString cfg.bindTimeout} \
46           --bind.stats-url ${cfg.bindURI} \
47           --bind.stats-version ${cfg.bindVersion} \
48           --bind.stats-groups ${concatStringsSep "," cfg.bindGroups} \
49           ${concatStringsSep " \\\n  " cfg.extraFlags}
50       '';
51     };
52   };