summary refs log tree commit diff
path: root/modules/foundation/monitoring/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/foundation/monitoring/default.nix')
-rw-r--r--modules/foundation/monitoring/default.nix52
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/foundation/monitoring/default.nix b/modules/foundation/monitoring/default.nix
new file mode 100644
index 0000000..a7bc185
--- /dev/null
+++ b/modules/foundation/monitoring/default.nix
@@ -0,0 +1,52 @@
+{ me, config, lib, ... }:
+
+let
+  inherit (lib) mkOption mkEnableOption types;
+
+  cfg = config.foundation.monitoring;
+
+  ports = {
+    victoriaDefaultPort = 8428;
+    nodeExporterPort = 9001;
+    cadvisorExporterPort = 9002;
+    nginxExporterPort = 9113;
+    dockerExporterPort = 9323;
+  };
+
+  serverConfiguration = import ./server.nix ({
+    hosts = cfg.server.hosts;
+    victoriaAddress = me.tailscale.ip;
+  } // ports);
+
+  clientConfiguration = import ./client.nix ({
+    listenAddress = me.tailscale.ip;
+  } // ports);
+in
+{
+  imports = [ ../../../services/monitoring/wrapper.nix ];
+
+  options.foundation.monitoring = {
+    server = {
+      enable = mkEnableOption "monitoring server";
+
+      hosts = mkOption {
+        type = with types; listOf (submodule {
+          options = {
+            name = mkOption { type = str; };
+            ip = mkOption { type = str; };
+          };
+        });
+        default = [ ];
+      };
+    };
+
+    client = {
+      enable = mkEnableOption "monitoring client";
+    };
+  };
+
+  config = lib.mkMerge [
+    (lib.mkIf cfg.server.enable serverConfiguration)
+    (lib.mkIf (cfg.client.enable || cfg.server.enable) clientConfiguration)
+  ];
+}