{ hosts, victoriaAddress, nodeExporterPort, dockerExporterPort, cadvisorExporterPort, nginxExporterPort, nginxLogExporterPort, dnsmasqExporterPort, ... }: { foundation.internal.monitoringService = true; services.vmagent = { enable = true; remoteWrite.url = "http://${victoriaAddress}/api/v1/write"; prometheusConfig = { global = { scrape_interval = "15s"; }; scrape_configs = let exporter = job: ports: filter: { job_name = job; static_configs = map ( { name, ip }: { targets = map (p: "${ip}:${toString p}") ports; labels = { instance = name; }; } ) (builtins.filter filter hosts); }; all = x: true; is = name: host: host.name == name; in [ (exporter "node" [ nodeExporterPort ] all) (exporter "docker" [ dockerExporterPort ] all) (exporter "cadvisor" [ cadvisorExporterPort ] all) (exporter "nginx" [ nginxExporterPort nginxLogExporterPort ] all) (exporter "dnsmasq" [ dnsmasqExporterPort ] (is "corsac")) ]; }; }; }