{ hosts, victoriaAddress, nodeExporterPort, dockerExporterPort, cadvisorExporterPort, nginxExporterPort, nginxLogExporterPort, ... }: { 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: { job_name = job; static_configs = map ( { name, ip }: { targets = map (p: "${ip}:${toString p}") ports; labels = { instance = name; }; } ) hosts; }; in [ (exporter "node" [ nodeExporterPort ]) (exporter "docker" [ dockerExporterPort ]) (exporter "cadvisor" [ cadvisorExporterPort ]) (exporter "nginx" [ nginxExporterPort nginxLogExporterPort ]) ]; }; }; }