From 7944ea7b6694f9606a85839dee096b5cddc00826 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 27 Jun 2020 13:00:28 +0200 Subject: [PATCH 1/3] prometheus-kea-exporter: init at 0.4.2 --- .../monitoring/prometheus/kea-exporter.nix | 29 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 30 insertions(+) create mode 100644 pkgs/servers/monitoring/prometheus/kea-exporter.nix diff --git a/pkgs/servers/monitoring/prometheus/kea-exporter.nix b/pkgs/servers/monitoring/prometheus/kea-exporter.nix new file mode 100644 index 00000000000..cffa2e6fab4 --- /dev/null +++ b/pkgs/servers/monitoring/prometheus/kea-exporter.nix @@ -0,0 +1,29 @@ +{ lib, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "kea-exporter"; + version = "0.4.2"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "0dpzicv0ksyda2lprldkj452c23qycl5c9avca6x7f7rbqry9pnd"; + }; + + propagatedBuildInputs = with python3Packages; [ + click + prometheus_client + ]; + + checkPhase = '' + $out/bin/kea-exporter --help > /dev/null + $out/bin/kea-exporter --version | grep -q ${version} + ''; + + meta = with lib; { + description = "Export Kea Metrics in the Prometheus Exposition Format"; + homepage = "https://github.com/mweinelt/kea-exporter"; + license = licenses.mit; + maintainers = with maintainers; [ hexa ]; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b45bf355d21..66f4d727919 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19323,6 +19323,7 @@ in prometheus-haproxy-exporter = callPackage ../servers/monitoring/prometheus/haproxy-exporter.nix { }; prometheus-jitsi-exporter = callPackage ../servers/monitoring/prometheus/jitsi-exporter.nix { }; prometheus-json-exporter = callPackage ../servers/monitoring/prometheus/json-exporter.nix { }; + prometheus-kea-exporter = callPackage ../servers/monitoring/prometheus/kea-exporter.nix { }; prometheus-keylight-exporter = callPackage ../servers/monitoring/prometheus/keylight-exporter.nix { }; prometheus-knot-exporter = callPackage ../servers/monitoring/prometheus/knot-exporter.nix { }; prometheus-lnd-exporter = callPackage ../servers/monitoring/prometheus/lnd-exporter.nix { }; From bc4a80979bbf71aaae67682c91b41e300b919b66 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 12 May 2021 21:49:22 +0200 Subject: [PATCH 2/3] nixos/prometheus-kea-exporter: init --- .../monitoring/prometheus/exporters.nix | 1 + .../monitoring/prometheus/exporters/kea.nix | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 nixos/modules/services/monitoring/prometheus/exporters/kea.nix diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index ce7c215fd14..8e8999e5155 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -34,6 +34,7 @@ let "fritzbox" "json" "jitsi" + "kea" "keylight" "knot" "lnd" diff --git a/nixos/modules/services/monitoring/prometheus/exporters/kea.nix b/nixos/modules/services/monitoring/prometheus/exporters/kea.nix new file mode 100644 index 00000000000..b6cd89c3866 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/kea.nix @@ -0,0 +1,38 @@ +{ config +, lib +, pkgs +, options +}: + +with lib; + +let + cfg = config.services.prometheus.exporters.kea; +in { + port = 9547; + extraOpts = { + controlSocketPaths = mkOption { + type = types.listOf types.str; + example = literalExample '' + [ + "/run/kea/kea-dhcp4.socket" + "/run/kea/kea-dhcp6.socket" + ] + ''; + description = '' + Paths to kea control sockets + ''; + }; + }; + serviceOpts = { + serviceConfig = { + ExecStart = '' + ${pkgs.prometheus-kea-exporter}/bin/kea-exporter \ + --address ${cfg.listenAddress} \ + --port ${toString cfg.port} \ + ${concatStringsSep " \\n" cfg.controlSocketPaths} + ''; + SupplementaryGroups = [ "kea" ]; + }; + }; +} From dd7e1834ca455d9843d2b54f425ad1243322068f Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Wed, 12 May 2021 21:49:47 +0200 Subject: [PATCH 3/3] nixos/tests/prometheus-exporters.kea: init --- nixos/tests/prometheus-exporters.nix | 51 +++++++++++++++++++ .../monitoring/prometheus/kea-exporter.nix | 6 ++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index 2b17d0ff78f..67ebb5e2921 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -326,6 +326,57 @@ let ''; }; + kea = { + exporterConfig = { + enable = true; + controlSocketPaths = [ + "/run/kea/kea-dhcp6.sock" + ]; + }; + metricProvider = { + users.users.kea = { + isSystemUser = true; + }; + users.groups.kea = {}; + + systemd.services.prometheus-kea-exporter.after = [ "kea-dhcp6.service" ]; + + systemd.services.kea-dhcp6 = let + configFile = pkgs.writeText "kea-dhcp6.conf" (builtins.toJSON { + Dhcp6 = { + "control-socket" = { + "socket-type" = "unix"; + "socket-name" = "/run/kea/kea-dhcp6.sock"; + }; + }; + }); + in + { + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + DynamicUser = false; + User = "kea"; + Group = "kea"; + ExecStart = "${pkgs.kea}/bin/kea-dhcp6 -c ${configFile}"; + StateDirectory = "kea"; + RuntimeDirectory = "kea"; + UMask = "0007"; + }; + }; + }; + exporterTest = '' + wait_for_unit("kea-dhcp6.service") + wait_for_file("/run/kea/kea-dhcp6.sock") + wait_for_unit("prometheus-kea-exporter.service") + wait_for_open_port(9547) + succeed( + "curl --fail localhost:9547/metrics | grep 'packets_received_total'" + ) + ''; + }; + knot = { exporterConfig = { enable = true; diff --git a/pkgs/servers/monitoring/prometheus/kea-exporter.nix b/pkgs/servers/monitoring/prometheus/kea-exporter.nix index cffa2e6fab4..1f5ff7c0223 100644 --- a/pkgs/servers/monitoring/prometheus/kea-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/kea-exporter.nix @@ -1,4 +1,4 @@ -{ lib, python3Packages }: +{ lib, python3Packages, nixosTests }: python3Packages.buildPythonApplication rec { pname = "kea-exporter"; @@ -19,6 +19,10 @@ python3Packages.buildPythonApplication rec { $out/bin/kea-exporter --version | grep -q ${version} ''; + passthru.tests = { + inherit (nixosTests.prometheus-exporters) kea; + }; + meta = with lib; { description = "Export Kea Metrics in the Prometheus Exposition Format"; homepage = "https://github.com/mweinelt/kea-exporter";