nixos/modules/homelab/prometheus.nix

67 lines
1.4 KiB
Nix
Raw Normal View History

2025-04-26 20:02:56 +02:00
{
config,
lib,
2025-04-26 20:02:56 +02:00
...
}:
lib.mkIf config.fireproof.homelab.enable (let
2025-12-13 21:41:52 +01:00
inherit (config.fireproof) hostname;
2025-04-26 20:02:56 +02:00
mkScrapeConfig = name: {
job_name = name;
static_configs = [
{
labels = {
instance = hostname;
};
targets = [
2026-01-20 23:41:10 +01:00
"127.0.0.1:${toString config.services.prometheus.exporters.${name}.port}"
2025-04-26 20:02:56 +02:00
];
}
];
};
in {
age.secrets.grafana-cloud-prometheus-api-key = {
rekeyFile = ../../secrets/grafana-cloud-prometheus.age;
owner = "prometheus";
group = "prometheus";
};
services.prometheus = {
enable = true;
enableAgentMode = true;
globalConfig.scrape_interval = "1m";
remoteWrite = [
{
url = "https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push";
basic_auth = {
username = "432120";
password_file = "${config.age.secrets.grafana-cloud-prometheus-api-key.path}";
};
}
];
scrapeConfigs = [
(mkScrapeConfig "node")
2026-01-20 23:41:10 +01:00
(mkScrapeConfig "nginx")
(mkScrapeConfig "postgres")
2025-04-26 20:02:56 +02:00
];
2026-01-20 23:41:10 +01:00
exporters = {
node = {
enable = true;
extraFlags = [
"--web.disable-exporter-metrics"
];
};
nginx = {
enable = true;
scrapeUri = "http://127.0.0.1:8070/metrics";
};
postgres = {
enable = true;
runAsLocalSuperUser = true;
};
2025-04-26 20:02:56 +02:00
};
};
})