summary refs log tree commit diff
path: root/modules/foundation/monitoring/server.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/foundation/monitoring/server.nix')
-rw-r--r--modules/foundation/monitoring/server.nix47
1 files changed, 47 insertions, 0 deletions
diff --git a/modules/foundation/monitoring/server.nix b/modules/foundation/monitoring/server.nix
new file mode 100644
index 0000000..4c922b9
--- /dev/null
+++ b/modules/foundation/monitoring/server.nix
@@ -0,0 +1,47 @@
+{
+  hosts,
+  victoriaAddress,
+  victoriaDefaultPort,
+  nodeExporterPort,
+  dockerExporterPort,
+  cadvisorExporterPort,
+  nginxExporterPort,
+  ...
+}:
+
+{
+  foundation.internal.monitoringService = true;
+
+  services.vmagent = {
+    enable = true;
+    remoteWrite.url = "http://${victoriaAddress}:${toString victoriaDefaultPort}/api/v1/write";
+
+    prometheusConfig = {
+      global = {
+        scrape_interval = "15s";
+      };
+
+      scrape_configs =
+        let
+          exporter = job: port: {
+            job_name = job;
+            static_configs = map (
+              { name, ip }:
+              {
+                targets = [ "${ip}:${toString port}" ];
+                labels = {
+                  instance = name;
+                };
+              }
+            ) hosts;
+          };
+        in
+        [
+          (exporter "node" nodeExporterPort)
+          (exporter "docker" dockerExporterPort)
+          (exporter "cadvisor" cadvisorExporterPort)
+          (exporter "nginx" nginxExporterPort)
+        ];
+    };
+  };
+}