{ config, pkgs, modulesPath, lib, ... }: let monitor_ip = "monitor.local"; traefik_ip = "traefik.local"; sandbox_ip = "sandbox.local"; forgejo_ip = "forgejo.local"; prometheus_exporter_port = 9100; promtail_port = 9080; traefik_monitor_port = 8082; forgejo_monitor_port = 3000; in { networking.firewall.allowedTCPPorts = [ 9090 ]; services.prometheus = { enable = true; retentionTime = "7d"; globalConfig = { scrape_timeout = "10s"; scrape_interval = "30s"; }; scrapeConfigs = [ { job_name = "node"; static_configs = [ { targets = [ "${monitor_ip}:${toString prometheus_exporter_port}" "${traefik_ip}:${toString prometheus_exporter_port}" "${sandbox_ip}:${toString prometheus_exporter_port}" "${forgejo_ip}:${toString prometheus_exporter_port}" ]; } ]; } { job_name = "traefik"; static_configs = [ { targets = [ "${traefik_ip}:${toString traefik_monitor_port}" ]; } ]; } { job_name = "gitea"; static_configs = [ { targets = [ "${forgejo_ip}:${toString forgejo_monitor_port}" ]; } ]; } { job_name = "postgres"; static_configs = [ { targets = [ "${forgejo_ip}:9187" ]; } ]; } { job_name = "promtail"; static_configs = [ { targets = [ "${monitor_ip}:${toString promtail_port}" "${traefik_ip}:${toString promtail_port}" "${sandbox_ip}:${toString promtail_port}" "${forgejo_ip}:${toString promtail_port}" ]; } ]; } ]; }; }