nichts/modules/services/prometheus/prometheus.mod.nix
Bloxx12 e641dfa114
treewide: format using nixfmt
Signed-off-by: Bloxx12 <charlie@charlieroot.dev>
Change-Id: I6a6a69641c36f9763e104087a559c148d0449f00
2025-07-20 02:14:32 +02:00

73 lines
1.7 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption;
cfg = config.modules.system.services.prometheus;
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";
};
nginx = {
enable = true;
port = 4025;
};
};
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}" ]; }
];
}
{
job_name = "nginx";
scrape_interval = "30s";
static_configs = [
{ targets = [ "localhost:${toString config.services.prometheus.exporters.nginx.port}" ]; }
];
}
];
};
};
}