diff options
Diffstat (limited to 'modules/monitoring/postgres.nix')
-rw-r--r-- | modules/monitoring/postgres.nix | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/monitoring/postgres.nix b/modules/monitoring/postgres.nix new file mode 100644 index 0000000..bbb55e6 --- /dev/null +++ b/modules/monitoring/postgres.nix @@ -0,0 +1,48 @@ +{ lib, config, ... }: +let + cfg = config.monitoring; +in +{ + config = lib.mkIf (cfg.monitorAll && config.services.postgresql.enable) { + services.prometheus.exporters.postgres = { + enable = true; + extraFlags = [ + "--collector.database_wraparound" + "--collector.long_running_transactions" + "--collector.postmaster" + "--collector.process_idle" + "--collector.stat_activity_autovacuum" + "--collector.stat_statements" + #"--collector.stat_wal_receiver" #we dont have WAL receivers + "--collector.statio_user_indexes" + "--collector.xlog_location" + ]; + }; + + services.prometheus.scrapeConfigs = ( + lib.map (interval: { + job_name = "postgres-${toString interval}s"; + scrape_interval = "${toString interval}s"; + static_configs = [ { targets = [ "localhost:${toString config.services.prometheus.exporters.postgres.port}" ]; } ]; + }) cfg.prometheusScrapeIntervals + ); + + services.grafana.provision.dashboards.settings = { + apiVersion = 1; + providers = [ + { + name = "14114-postgres-overview"; + orgId = 1; + type = "file"; + options = { + path = builtins.fetchurl { + url = "https://grafana.com/api/dashboards/14114/revisions/1/download"; + sha256 = "0qza4j8lywrj08bqbww52dgh2p2b9rkhq5p313g72i57lrlkacfl"; + }; + }; + } + ]; + }; + + }; +} |