From 2348157a6ba4e212c5cbe1cefd913873713c07e5 Mon Sep 17 00:00:00 2001 From: Bloxx12 Date: Wed, 9 Apr 2025 15:31:18 +0200 Subject: [PATCH] prometheus/module.nix: init --- modules/services/prometheus/module.nix | 57 ++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 modules/services/prometheus/module.nix diff --git a/modules/services/prometheus/module.nix b/modules/services/prometheus/module.nix new file mode 100644 index 0000000..feaec3d --- /dev/null +++ b/modules/services/prometheus/module.nix @@ -0,0 +1,57 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.options) mkEnableOption; + + cfg = config.modules.system.services.grafana; + port = 4022; +in { + options.modules.system.services.prometheus.enable = mkEnableOption "Grafana, a graphing service"; + + config = mkIf cfg.enable { + networking.firewall.allowedTCPPorts = [config.services.grafana.settings.server.http_port]; + + modules.system.services.database.postgresql.enable = true; + + services.prometheus = { + enable = true; + package = pkgs.grafana; + inherit port; + + exporters = { + node = { + enable = true; + port = 4023; + enabledCollectors = ["systemd" "processes"]; + }; + + postgres = { + enable = true; + port = 4024; + user = "postgres"; + }; + }; + scrapeConfigs = [ + { + job_name = "prometheus"; + scrape_interval = "30s"; + static_configs = [{targets = ["localhost:${toString port}"];}]; + } + { + job_name = "node"; + scrape_interval = "30s"; + static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.node.port}"];}]; + } + { + job_name = "postgres"; + scrape_interval = "30s"; + static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.postgres.port}"];}]; + } + ]; + }; + }; +}