Files
Berwn 54f607d063 Add blackbox exporter for outside-in DNS probes
control runs blackbox_exporter on loopback, probing each nameserver's
public v4+v6 address for every zone: SOA (zone served) and DNSKEY (still
signed, since blackbox has no DO-bit option). Probe definitions are
shared between the exporter config and the VictoriaMetrics scrape jobs
so they can't drift. Verified live against ns1/ns2 over v4 and v6.
2026-06-17 15:37:45 +07:00

25 lines
892 B
Nix

# Blackbox exporter on control: outside-in DNS probes against the public
# nameserver addresses (see blackbox-probes.nix for what and why). Bound to
# loopback — only VictoriaMetrics on the same host scrapes its /probe endpoint,
# and the scrape jobs that drive it live in server.nix. The probes leave control
# over the public internet to reach ns1/ns2, which is the path we want to test.
{
lib,
pkgs,
...
}:
let
probes = import ./blackbox-probes.nix { inherit lib; };
in
{
services.prometheus.exporters.blackbox = {
enable = true;
listenAddress = "127.0.0.1";
port = 9115;
# JSON is valid YAML; enableConfigCheck runs the exporter's own --config.check
# against this file at build time, so a malformed prober is caught here.
configFile = pkgs.writeText "blackbox.yml" (builtins.toJSON { inherit (probes) modules; });
enableConfigCheck = true;
};
}