Commit d31641c
Changed files (1)
modules
services
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 = {