From 6840746f2d155f564030a7270924eadda6b5aa52 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Sun, 4 Apr 2021 22:25:12 +0200 Subject: nixos/prometheus-domain-exporter: init --- .../services/monitoring/prometheus/exporters.nix | 1 + .../monitoring/prometheus/exporters/domain.nix | 19 +++++++++++++++++++ nixos/tests/prometheus-exporters.nix | 16 ++++++++++++++++ .../servers/monitoring/prometheus/domain-exporter.nix | 2 ++ 4 files changed, 38 insertions(+) create mode 100644 nixos/modules/services/monitoring/prometheus/exporters/domain.nix diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 5f6a86afdcd..0b65b4865b1 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -28,6 +28,7 @@ let "blackbox" "collectd" "dnsmasq" + "domain" "dovecot" "fritzbox" "json" diff --git a/nixos/modules/services/monitoring/prometheus/exporters/domain.nix b/nixos/modules/services/monitoring/prometheus/exporters/domain.nix new file mode 100644 index 00000000000..61e2fc80afd --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/domain.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, options }: + +with lib; + +let + cfg = config.services.prometheus.exporters.domain; +in +{ + port = 9222; + serviceOpts = { + serviceConfig = { + ExecStart = '' + ${pkgs.prometheus-domain-exporter}/bin/domain_exporter \ + --bind ${cfg.listenAddress}:${toString cfg.port} \ + ${concatStringsSep " \\\n " cfg.extraFlags} + ''; + }; + }; +} diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index c32cd341e5e..a43dca4fe14 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -201,6 +201,22 @@ let ''; }; + # Access to WHOIS server is required to properly test this exporter, so + # just perform basic sanity check that the exporter is running and returns + # a failure. + domain = { + exporterConfig = { + enable = true; + }; + exporterTest = '' + wait_for_unit("prometheus-domain-exporter.service") + wait_for_open_port(9222) + succeed( + "curl -sSf 'http://localhost:9222/probe?target=nixos.org' | grep -q 'domain_probe_success 0'" + ) + ''; + }; + dovecot = { exporterConfig = { enable = true; diff --git a/pkgs/servers/monitoring/prometheus/domain-exporter.nix b/pkgs/servers/monitoring/prometheus/domain-exporter.nix index 1d8417f2f9c..a0bc409a7fc 100644 --- a/pkgs/servers/monitoring/prometheus/domain-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/domain-exporter.nix @@ -15,6 +15,8 @@ buildGoModule rec { doCheck = false; # needs internet connection + passthru.tests = { inherit (nixosTests.prometheus-exporters) domain; }; + meta = with lib; { homepage = "https://github.com/caarlos0/domain_exporter"; description = "Exports the expiration time of your domains as prometheus metrics"; -- cgit 1.4.1