nixos/modules/homelab/prometheus.nix
2026-01-20 23:41:10 +01:00

66 lines
1.4 KiB
Nix

{
config,
lib,
...
}:
lib.mkIf config.fireproof.homelab.enable (let
inherit (config.fireproof) hostname;
mkScrapeConfig = name: {
job_name = name;
static_configs = [
{
labels = {
instance = hostname;
};
targets = [
"127.0.0.1:${toString config.services.prometheus.exporters.${name}.port}"
];
}
];
};
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")
(mkScrapeConfig "nginx")
(mkScrapeConfig "postgres")
];
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;
};
};
};
})