Commit d31641c

HPCesia <me@hpcesia.com>
2026-10-19 02:48:23
node-exporter: ignore preservation bindmounts
Assisted-by: crush:deepseek-v4.1-flash
1 parent 7ee84e7
Changed files (1)
modules
modules/services/node-exporter.nix
@@ -54,13 +54,44 @@
       }
     ];
 
-    nixos = {host, ...}: let
+    nixos = {
+      config,
+      host,
+      ...
+    }: let
       cfg = host.settings.services.node-exporter;
+
+      defaultMountPointsExclude = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/)";
+
+      preservationMountPoints =
+        if !(host.hasAspect den.aspects.disk.preservation)
+        then []
+        else let
+          bindMounts = entries:
+            map (e: e.directory or e.file)
+            (lib.filter (e: (e.how or "bindmount") == "bindmount") entries);
+          stateMountPoints = state:
+            bindMounts (state.directories ++ state.files)
+            ++ lib.concatMap (user: bindMounts (user.directories ++ user.files)) (lib.attrValues state.users);
+        in
+          lib.filter
+          (path: builtins.match "${defaultMountPointsExclude}.*" path == null)
+          (lib.unique (
+            lib.concatMap
+            (prefix: [prefix] ++ stateMountPoints config.preservation.preserveAt.${prefix})
+            (lib.attrNames config.preservation.preserveAt)
+          ));
+
+      mountPointsExclude = lib.concatStringsSep "|" (
+        [defaultMountPointsExclude]
+        ++ map (path: "^${lib.escapeRegex path}($|/)") preservationMountPoints
+      );
     in {
       services.prometheus.exporters.node = {
         enable = true;
         listenAddress = cfg.address;
         inherit (cfg) port enabledCollectors disabledCollectors;
+        extraFlags = ["--collector.filesystem.mount-points-exclude=${mountPointsExclude}"];
       };
 
       systemd.services.prometheus-node-exporter = {