From a693745b35f7c534248e6ff0b00e9639c04ba39a Mon Sep 17 00:00:00 2001 From: Rory& Date: Mon, 2 Sep 2024 20:19:00 +0200 Subject: Single scrape interval, add synapse label --- modules/monitoring/module.nix | 50 ++++++++++--------------- modules/monitoring/postgres.nix | 12 +++--- modules/monitoring/synapse.nix | 82 +++++++++++++---------------------------- modules/monitoring/system.nix | 14 +++---- 4 files changed, 59 insertions(+), 99 deletions(-) diff --git a/modules/monitoring/module.nix b/modules/monitoring/module.nix index 30c313b..62ff1ea 100644 --- a/modules/monitoring/module.nix +++ b/modules/monitoring/module.nix @@ -13,7 +13,7 @@ in imports = [ # crutches due to nix limitations: ./crutches/synapse.nix - + # modules ./system.nix ./postgres.nix @@ -28,15 +28,10 @@ in nginxHost = mkStringOption "The virtual host name"; nginxSsl = lib.mkEnableOption "Enable SSL for Nginx"; - prometheusScrapeIntervals = lib.mkOption { - type = lib.types.listOf lib.types.int; - default = [ - 1 - #2 # kinda pointless? - #5 # doesnt help with reliability - #15 # might aswell just use a 15s interval on grafana - ]; - description = "Scrape intervals for Prometheus"; + prometheusScrapeInterval = lib.mkOption { + type = lib.types.int; + default = 1; + description = "Scrape interval for Prometheus"; }; }; @@ -45,9 +40,7 @@ in prometheus = lib.mkIf (cfg.localPrometheus) { enable = true; listenAddress = "127.0.0.1"; - extraFlags = [ - "--storage.tsdb.wal-compression" - ]; + extraFlags = [ "--storage.tsdb.wal-compression" ]; }; grafana = lib.mkIf (cfg.localGrafana) { enable = true; @@ -62,24 +55,21 @@ in provision = { datasources.settings = { apiVersion = 1; - # datasources = [ - # { - # name = "Prometheus"; - # type = "prometheus"; - # access = "proxy"; - # url = "http://127.0.0.1:${toString config.services.prometheus.port}"; - # isDefault = true; - # } - # ]; - datasources = lib.map (interval: { - name = "Prometheus-${toString interval}"; - type = "prometheus"; - access = "proxy"; - url = "http://127.0.0.1:${toString config.services.prometheus.port}"; - #isDefault = true; - jsonData.timeInterval = "${toString interval}s"; - }) cfg.prometheusScrapeIntervals; + datasources = + lib.map + (interval: { + name = "Prometheus-${toString interval}"; + type = "prometheus"; + access = "proxy"; + url = "http://127.0.0.1:${toString config.services.prometheus.port}"; + #isDefault = true; + jsonData.timeInterval = "${toString interval}s"; + }) + [ + 1 + 15 + ]; }; }; }; diff --git a/modules/monitoring/postgres.nix b/modules/monitoring/postgres.nix index 5505892..25266fa 100644 --- a/modules/monitoring/postgres.nix +++ b/modules/monitoring/postgres.nix @@ -19,13 +19,13 @@ in ]; }; - services.prometheus.scrapeConfigs = ( - lib.map (interval: { - job_name = "postgres-${toString interval}s"; - scrape_interval = "${toString interval}s"; + services.prometheus.scrapeConfigs = [ + { + job_name = "postgres"; + scrape_interval = "${toString cfg.prometheusScrapeInterval}s"; static_configs = [ { targets = [ "localhost:${toString config.services.prometheus.exporters.postgres.port}" ]; } ]; - }) cfg.prometheusScrapeIntervals - ); + } + ]; services.grafana.provision.dashboards.settings = { apiVersion = 1; diff --git a/modules/monitoring/synapse.nix b/modules/monitoring/synapse.nix index a279a3d..385e996 100644 --- a/modules/monitoring/synapse.nix +++ b/modules/monitoring/synapse.nix @@ -14,39 +14,6 @@ in } ]; - #services.matrix-synapse.workers = ( - # let - # workerNames = config.services.matrix-synapse.workers; - - # hasMetricsListener = - # (workerName: - # lib.any ( - # listener: listener.type == "http" && (lib.any (resourceName: resourceName == "metrics") listener.resources) - # ) config.services.matrix-synapse.workers.${workerName}.worker_listeners); - - # workerNamesWithoutMetrics = lib.traceVal lib.filter (workerName: (!hasMetricsListener workerName)) workerNames; - # in - # lib.listToAttrs ( - # lib.imap (index: workerName: { - # name = workerName; - # value = { - # worker_listeners = [ - # { - # type = "http"; - # port = 9200 + index; - # resources = [ - # { - # names = [ "metrics" ]; - # compress = false; - # } - # ]; - # } - # ]; - # }; - # }) workerNamesWithoutMetrics - # ) - #); - services.matrix-synapse.workers = ( lib.listToAttrs ( lib.imap (index: workerName: { @@ -64,30 +31,33 @@ in ) ); - services.prometheus.scrapeConfigs = ( - (lib.map (interval: { - job_name = "synapse-main-${toString interval}s"; - scrape_interval = "${toString interval}s"; - static_configs = [ { targets = [ "localhost:9200" ]; } ]; - metrics_path = "_synapse/metrics"; - }) cfg.prometheusScrapeIntervals) + services.prometheus.scrapeConfigs = + [ + { + job_name = "synapse-main"; + scrape_interval = "${toString cfg.prometheusScrapeInterval}s"; + static_configs = [ + { + targets = [ "localhost:9200" ]; + labels.instance = "synapse"; + } + ]; + metrics_path = "_synapse/metrics"; + } + ] ++ lib.flatten ( - lib.imap ( - index: workerName: - lib.map (interval: { - job_name = "synapse-${workerName}-${toString interval}s"; - scrape_interval = "${toString interval}s"; - static_configs = [ - { - targets = [ "localhost:${toString (9200 + index + 1)}" ]; - - } - ]; - metrics_path = "_synapse/metrics"; - }) cfg.prometheusScrapeIntervals - ) config.monitoring.synapse.workerNames - ) - ); + lib.imap (index: workerName: { + job_name = "synapse-${workerName}s"; + scrape_interval = "${toString cfg.prometheusScrapeInterval}s"; + static_configs = [ + { + targets = [ "localhost:${toString (9200 + index + 1)}" ]; + labels.instance = "synapse"; + } + ]; + metrics_path = "_synapse/metrics"; + }) config.monitoring.synapse.workerNames + ); services.grafana.provision.dashboards.settings = { apiVersion = 1; diff --git a/modules/monitoring/system.nix b/modules/monitoring/system.nix index cc1ec66..171a7af 100644 --- a/modules/monitoring/system.nix +++ b/modules/monitoring/system.nix @@ -46,13 +46,13 @@ in ]; }; - services.prometheus.scrapeConfigs = ( - lib.map (interval: { - job_name = "node-${toString interval}s"; - scrape_interval = "${toString interval}s"; - static_configs = [ { targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; } ]; - }) cfg.prometheusScrapeIntervals - ); + services.prometheus.scrapeConfigs = [ + { + job_name = "node"; + scrape_interval = "${toString cfg.prometheusScrapeInterval}s"; + static_configs = [ { targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; } ]; + } + ]; services.grafana.provision.dashboards.settings = { apiVersion = 1; -- cgit 1.4.1