mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-11-25 09:36:14 +01:00
Add disk monitoring to blowhole
Signed-off-by: magic_rb <magic_rb@redalder.org>
This commit is contained in:
parent
e8100d690e
commit
ad6a5f6784
|
@ -44,6 +44,7 @@ in
|
||||||
./watchdog.nix
|
./watchdog.nix
|
||||||
./nixpkgs.nix
|
./nixpkgs.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
|
./disk_monitoring.nix
|
||||||
./sol.nix
|
./sol.nix
|
||||||
../../common/remote_access.nix
|
../../common/remote_access.nix
|
||||||
./microvms.nix
|
./microvms.nix
|
||||||
|
|
76
nixos/systems/blowhole/disk_monitoring.nix
Normal file
76
nixos/systems/blowhole/disk_monitoring.nix
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) concatMapStringsSep;
|
||||||
|
|
||||||
|
cfg = config.services.smartd;
|
||||||
|
|
||||||
|
smartdNotify = pkgs.writeShellScript "smartd-notify-matrix" ''
|
||||||
|
while [[ $# > 0 ]] ; do
|
||||||
|
case "$1" in
|
||||||
|
-i)
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
{
|
||||||
|
${pkgs.coreutils}/bin/cat <<EOF
|
||||||
|
smartd on \`<blowhole>\`
|
||||||
|
|
||||||
|
$SMARTD_SUBJECT
|
||||||
|
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
$SMARTD_FULLMESSAGE
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
$(${pkgs.smartmontools}/sbin/smartctl -a -d "$SMARTD_DEVICETYPE" "$SMARTD_DEVICE")
|
||||||
|
\`\`\`
|
||||||
|
EOF
|
||||||
|
} | ${pkgs.matrix-commander-rs}/bin/matrix-commander-rs -c /var/secrets/matrix-smartd.json -s /var/lib/matrix-commander --markdown -m -
|
||||||
|
'';
|
||||||
|
|
||||||
|
smartdConfig = pkgs.writeText "smartd.conf" ''
|
||||||
|
DEFAULT -m <nomailer> -M exec ${smartdNotify} -M test -a
|
||||||
|
|
||||||
|
${concatMapStringsSep "\n" (d: "${d.device} ${d.options}") cfg.devices}
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
services.smartd = {
|
||||||
|
# The module needs fixing
|
||||||
|
enable = false;
|
||||||
|
|
||||||
|
devices = map (x: {device = "/dev/disk/by-id/" + x;}) [
|
||||||
|
# Old Skyhawks
|
||||||
|
"ata-ST1000VX005-2EZ102_Z9CBQKCQ"
|
||||||
|
"ata-ST1000VX005-2EZ102_Z9CBQLDS"
|
||||||
|
|
||||||
|
# NAS WD Reds
|
||||||
|
"ata-WDC_WD40EFZX-68AWUN0_WD-WX82DA1C79SK"
|
||||||
|
"ata-WDC_WD40EFZX-68AWUN0_WD-WXA2DA1C9JKA"
|
||||||
|
|
||||||
|
# Boot SSD
|
||||||
|
"ata-Apacer_AS350_128GB_2021020103001990"
|
||||||
|
|
||||||
|
# Database SSDs
|
||||||
|
"nvme-KINGSTON_SA2000M8250G_50026B76844F4629"
|
||||||
|
"nvme-KINGSTON_SA2000M8250G_50026B76851B664C"
|
||||||
|
];
|
||||||
|
|
||||||
|
extraOptions = ["-M" "exec ${smartdNotify}" "-M" "test"];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.smartd = {
|
||||||
|
description = "S.M.A.R.T. Daemon";
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
serviceConfig.ExecStart = "${pkgs.smartmontools}/sbin/smartd --no-fork --configfile=${smartdConfig} -s /var/lib/smartd/";
|
||||||
|
};
|
||||||
|
}
|
|
@ -82,6 +82,14 @@ in
|
||||||
device = "blowhole-zpool/persist/vault";
|
device = "blowhole-zpool/persist/vault";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
};
|
};
|
||||||
|
"/var/lib/matrix-commander" = {
|
||||||
|
device = "blowhole-zpool/persist/matrix-commander";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
"/var/lib/smartd" = {
|
||||||
|
device = "blowhole-zpool/persist/smartd";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
// secret.mounts.blowhole or {};
|
// secret.mounts.blowhole or {};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue