{ config, ... }: let nodeExporterPort = 40000; nginxExporterPort = 40001; postfixExporterPort = 40002; basic_auth = { username = "jan"; password_file = config.age.secrets.prometheus-basicauth-password.path; }; in { age.secrets.prometheus-basicauth-password.file = ./prometheus-basicauth-password.age; services.prometheus.exporters.node = { enable = true; port = nodeExporterPort; # https://github.com/NixOS/nixpkgs/blob/nixos-24.05/nixos/modules/services/monitoring/prometheus/exporters.nix enabledCollectors = [ "systemd" ]; # /nix/store/zgsw0yx18v10xa58psanfabmg95nl2bb-node_exporter-1.8.1/bin/node_exporter --help extraFlags = [ "--collector.ethtool" "--collector.softirqs" "--collector.tcpstat" "--collector.wifi" ]; }; # https://wiki.nixos.org/wiki/Prometheus # https://nixos.org/manual/nixos/stable/#module-services-prometheus-exporters-configuration # https://github.com/NixOS/nixpkgs/blob/nixos-24.05/nixos/modules/services/monitoring/prometheus/default.nix services.prometheus = { enable = true; listenAddress = "127.0.0.1"; port = 33010; globalConfig.scrape_interval = "15s"; # "1m" scrapeConfigs = [ { job_name = "node_dev"; static_configs = [ { targets = [ "tatos:${toString nodeExporterPort}" "istal:${toString nodeExporterPort}" ]; } ]; } { job_name = "node_production"; inherit basic_auth; static_configs = [ { targets = [ "canigou:${toString nodeExporterPort}" "magenta:${toString nodeExporterPort}" "sm-sd1:${toString nodeExporterPort}" ]; } ]; } { job_name = "nginx_production"; inherit basic_auth; static_configs = [ { targets = [ "canigou:${toString nginxExporterPort}" "magenta:${toString nginxExporterPort}" ]; } ]; } { job_name = "sm_smtp"; # inherit basic_auth; static_configs = [ { targets = [ "sm-sd1:${toString postfixExporterPort}" ]; } ]; } ]; }; }