nichts/modules/services/prometheus/prometheus.mod.nix

63 lines
1.5 KiB
Nix
Raw Normal View History

2025-04-09 15:31:18 +02:00
{
config,
lib,
pkgs,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption;
2025-04-09 15:31:18 +02:00
cfg = config.modules.system.services.prometheus;
2025-04-09 15:31:18 +02:00
port = 4022;
in {
options.modules.system.services.prometheus.enable = mkEnableOption "Grafana, a graphing service";
config = mkIf cfg.enable {
services.prometheus = {
enable = true;
package = pkgs.prometheus;
inherit port;
exporters = {
node = {
enable = true;
port = 4023;
enabledCollectors = ["systemd" "processes"];
};
postgres = {
enable = true;
port = 4024;
user = "postgres";
};
2025-04-09 15:31:18 +02:00
nginx = {
enable = true;
port = 4025;
};
2025-04-09 15:31:18 +02:00
};
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}"];}];
}
2025-04-09 15:31:18 +02:00
{
job_name = "nginx";
scrape_interval = "30s";
static_configs = [{targets = ["localhost:${toString config.services.prometheus.exporters.nginx.port}"];}];
}
2025-04-09 15:31:18 +02:00
];
};
};
}