vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / bird.nix
blob5d91eeed106d48d197d8466d6e8419202bf8ac86
1 { config, lib, pkgs, options, ... }:
3 let
4   cfg = config.services.prometheus.exporters.bird;
5   inherit (lib)
6     mkOption
7     types
8     concatStringsSep
9     singleton
10     ;
13   port = 9324;
14   extraOpts = {
15     birdVersion = mkOption {
16       type = types.enum [ 1 2 ];
17       default = 2;
18       description = ''
19         Specifies whether BIRD1 or BIRD2 is in use.
20       '';
21     };
22     birdSocket = mkOption {
23       type = types.path;
24       default = "/run/bird/bird.ctl";
25       description = ''
26         Path to BIRD2 (or BIRD1 v4) socket.
27       '';
28     };
29     newMetricFormat = mkOption {
30       type = types.bool;
31       default = true;
32       description = ''
33         Enable the new more-generic metric format.
34       '';
35     };
36   };
37   serviceOpts = {
38     serviceConfig = {
39       SupplementaryGroups = singleton (if cfg.birdVersion == 1 then "bird" else "bird2");
40       ExecStart = ''
41         ${pkgs.prometheus-bird-exporter}/bin/bird_exporter \
42           -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
43           -bird.socket ${cfg.birdSocket} \
44           -bird.v2=${if cfg.birdVersion == 2 then "true" else "false"} \
45           -format.new=${if cfg.newMetricFormat then "true" else "false"} \
46           ${concatStringsSep " \\\n  " cfg.extraFlags}
47       '';
48       RestrictAddressFamilies = [
49         # Need AF_UNIX to collect data
50         "AF_UNIX"
51       ];
52     };
53   };