summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorLuke Granger-Brown <git@lukegb.com>2021-01-01 04:43:59 +0000
committerLuke Granger-Brown <git@lukegb.com>2021-01-01 04:43:59 +0000
commit699e40270537b3d641353830b8a7e1b268b6bed2 (patch)
treeeef1eafb38588ca5228eabaf2d17d4a52873818c /nixos
parent99600888934d1804840e06a680699dedc05eea10 (diff)
prometheus-bird-exporter: init at 1.3.5-git
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters.nix1
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters/bird.nix46
-rw-r--r--nixos/tests/prometheus-exporters.nix25
3 files changed, 72 insertions, 0 deletions
diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix
index 683dc0390c59..cec7b89aaa31 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters.nix
@@ -23,6 +23,7 @@ let
exporterOpts = genAttrs [
"apcupsd"
"bind"
+ "bird"
"blackbox"
"collectd"
"dnsmasq"
diff --git a/nixos/modules/services/monitoring/prometheus/exporters/bird.nix b/nixos/modules/services/monitoring/prometheus/exporters/bird.nix
new file mode 100644
index 000000000000..d8a526eafcea
--- /dev/null
+++ b/nixos/modules/services/monitoring/prometheus/exporters/bird.nix
@@ -0,0 +1,46 @@
+{ config, lib, pkgs, options }:
+
+with lib;
+
+let
+ cfg = config.services.prometheus.exporters.bird;
+in
+{
+ port = 9324;
+ extraOpts = {
+ birdVersion = mkOption {
+ type = types.enum [ 1 2 ];
+ default = 2;
+ description = ''
+ Specifies whether BIRD1 or BIRD2 is in use.
+ '';
+ };
+ birdSocket = mkOption {
+ type = types.path;
+ default = "/var/run/bird.ctl";
+ description = ''
+ Path to BIRD2 (or BIRD1 v4) socket.
+ '';
+ };
+ newMetricFormat = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Enable the new more-generic metric format.
+ '';
+ };
+ };
+ serviceOpts = {
+ serviceConfig = {
+ SupplementaryGroups = singleton (if cfg.birdVersion == 1 then "bird" else "bird2");
+ ExecStart = ''
+ ${pkgs.prometheus-bird-exporter}/bin/bird_exporter \
+ -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
+ -bird.socket ${cfg.birdSocket} \
+ -bird.v2=${if cfg.birdVersion == 2 then "true" else "false"} \
+ -format.new=${if cfg.newMetricFormat then "true" else "false"} \
+ ${concatStringsSep " \\\n " cfg.extraFlags}
+ '';
+ };
+ };
+}
diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix
index ffa7f420c093..938607e0b7bf 100644
--- a/nixos/tests/prometheus-exporters.nix
+++ b/nixos/tests/prometheus-exporters.nix
@@ -96,6 +96,31 @@ let
'';
};
+ bird = {
+ exporterConfig = {
+ enable = true;
+ };
+ metricProvider = {
+ services.bird2.enable = true;
+ services.bird2.config = ''
+ protocol kernel MyObviousTestString {
+ ipv4 {
+ import all;
+ export none;
+ };
+ }
+
+ protocol device {
+ }
+ '';
+ };
+ exporterTest = ''
+ wait_for_unit("prometheus-bird-exporter.service")
+ wait_for_open_port(9324)
+ succeed("curl -sSf http://localhost:9324/metrics | grep -q 'MyObviousTestString'")
+ '';
+ };
+
blackbox = {
exporterConfig = {
enable = true;