vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / flow.nix
blob7719215952a5301a3d5bb69fbd77dd475669a969
1 { config, lib, pkgs, options, ... }:
3 let
4   cfg = config.services.prometheus.exporters.flow;
5   inherit (lib)
6     mkOption
7     types
8     literalExpression
9     concatStringsSep
10     optionalString
11     ;
12 in {
13   port = 9590;
14   extraOpts = {
15     brokers = mkOption {
16       type = types.listOf types.str;
17       example = literalExpression ''[ "kafka.example.org:19092" ]'';
18       description = "List of Kafka brokers to connect to.";
19     };
21     asn = mkOption {
22       type = types.ints.positive;
23       example = 65542;
24       description = "The ASN being monitored.";
25     };
27     partitions = mkOption {
28       type = types.listOf types.int;
29       default = [];
30       description = ''
31         The number of the partitions to consume, none means all.
32       '';
33     };
35     topic = mkOption {
36       type = types.str;
37       example = "pmacct.acct";
38       description = "The Kafka topic to consume from.";
39     };
40   };
42   serviceOpts = {
43     serviceConfig = {
44       DynamicUser = true;
45       ExecStart = ''
46         ${pkgs.prometheus-flow-exporter}/bin/flow-exporter \
47           -asn ${toString cfg.asn} \
48           -topic ${cfg.topic} \
49           -brokers ${concatStringsSep "," cfg.brokers} \
50           ${optionalString (cfg.partitions != []) "-partitions ${concatStringsSep "," cfg.partitions}"} \
51           -addr ${cfg.listenAddress}:${toString cfg.port} ${concatStringsSep " " cfg.extraFlags}
52       '';
53     };
54   };