diff --git a/hosts/idols-aquamarine/prometheus/default.nix b/hosts/idols-aquamarine/prometheus/default.nix index fbfa32d6..c44f04c1 100644 --- a/hosts/idols-aquamarine/prometheus/default.nix +++ b/hosts/idols-aquamarine/prometheus/default.nix @@ -1,4 +1,5 @@ { + lib, config, myvars, ... @@ -45,64 +46,75 @@ # specifies a set of targets and parameters describing how to scrape metrics from them. # https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config - scrapeConfigs = [ + scrapeConfigs = + [ + # --- Homelab Applications --- # + + { + job_name = "dnsmasq-exporter"; + scrape_interval = "30s"; + metrics_path = "/metrics"; + static_configs = [ + { + targets = ["${myvars.networking.hostsAddr.suzi.ipv4}:9153"]; + labels.type = "app"; + labels.app = "dnsmasq"; + labels.host = "suzi"; + } + ]; + } + + { + job_name = "v2ray-exporter"; + scrape_interval = "30s"; + metrics_path = "/metrics"; + static_configs = [ + { + targets = ["${myvars.networking.hostsAddr.aquamarine.ipv4}:9153"]; + labels.type = "app"; + labels.app = "v2ray"; + labels.host = "aquamarine"; + } + ]; + } + + { + job_name = "sftpgo-embedded-exporter"; + scrape_interval = "30s"; + metrics_path = "/metrics"; + static_configs = [ + { + targets = ["${myvars.networking.hostsAddr.aquamarine.ipv4}:10000"]; + labels.type = "app"; + labels.app = "sftpgo"; + labels.host = "aquamarine"; + } + ]; + } + ] # --- Hosts --- # - { - job_name = "node-exporter"; - scrape_interval = "30s"; - metrics_path = "/metrics"; - static_configs = [ - { - # All my NixOS hosts. - targets = - map (addr: "${addr.ipv4}:9100") - (builtins.attrValues myvars.networking.hostsAddr); - labels.type = "node"; - } - ]; - } - - # --- Homelab Applications --- # - - { - job_name = "dnsmasq-exporter"; - scrape_interval = "30s"; - metrics_path = "/metrics"; - static_configs = [ - { - targets = ["${myvars.networking.hostsAddr.suzi.ipv4}:9153"]; - labels.type = "app"; - labels.app = "dnsmasq"; - } - ]; - } - - { - job_name = "v2ray-exporter"; - scrape_interval = "30s"; - metrics_path = "/metrics"; - static_configs = [ - { - targets = ["${myvars.networking.hostsAddr.aquamarine.ipv4}:9153"]; - labels.type = "app"; - labels.app = "v2ray"; - } - ]; - } - - { - job_name = "sftpgo-embedded-exporter"; - scrape_interval = "30s"; - metrics_path = "/metrics"; - static_configs = [ - { - targets = ["${myvars.networking.hostsAddr.aquamarine.ipv4}:10000"]; - labels.type = "app"; - labels.app = "v2ray"; - } - ]; - } - ]; + ++ ( + lib.attrsets.foldlAttrs + (acc: hostname: addr: + acc + ++ [ + { + job_name = "node-exporter-${hostname}"; + scrape_interval = "30s"; + metrics_path = "/metrics"; + static_configs = [ + { + # All my NixOS hosts. + targets = ["${addr.ipv4}:9100"]; + labels.type = "node"; + labels.host = hostname; + } + ]; + } + ]) + [] + myvars.networking.hostsAddr + ); # specifies Alertmanager instances the Prometheus server sends alerts to # https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config