modules/services/monitoring/smartd.nix: added services.smartd.devices option to configure list of devices to monitor
By default -- if this option is unset --, all connected devices will be monitored. Hard-coding the list of devices is worth-while, though, because this will also configure smartd to send e-mail messages to 'root' when a test fails. svn path=/nixos/trunk/; revision=27888
This commit is contained in:
parent
7c6c50a3bf
commit
3a1b6266e4
@ -6,6 +6,30 @@ let
|
||||
|
||||
cfg = config.services.smartd;
|
||||
|
||||
smartdMail = pkgs.writeScript "smartdmail.sh" ''
|
||||
#! /bin/sh
|
||||
TMPNAM=/tmp/smartd-message.$$.tmp
|
||||
if test -n "$SMARTD_ADDRESS"; then
|
||||
echo >"$TMPNAM" "From: smartd <root>"
|
||||
echo >>"$TMPNAM" 'To: undisclosed-recipients:;'
|
||||
echo >>"$TMPNAM" "Subject: $SMARTD_SUBJECT"
|
||||
echo >>"$TMPNAM"
|
||||
echo >>"$TMPNAM" "Failure on $SMARTD_DEVICESTRING: $SMARTD_FAILTYPE"
|
||||
echo >>"$TMPNAM"
|
||||
cat >>"$TMPNAM"
|
||||
${pkgs.smartmontools}/sbin/smartctl >>"$TMPNAM" -a -d "$SMARTD_DEVICETYPE" "$SMARTD_DEVICE"
|
||||
/var/setuid-wrappers/sendmail <"$TMPNAM" -f "$SENDER" -i "$SMARTD_ADDRESS"
|
||||
fi
|
||||
'';
|
||||
|
||||
smartdConf = pkgs.writeText "smartd.conf" (concatMapStrings (device:
|
||||
''
|
||||
${device} -m root -M exec ${smartdMail}
|
||||
''
|
||||
) cfg.devices);
|
||||
|
||||
smartdFlags = if (cfg.devices == []) then "" else "--configfile=${smartdConf}";
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
@ -20,10 +44,23 @@ in
|
||||
type = types.bool;
|
||||
example = "true";
|
||||
description = ''
|
||||
Run smartd from the smartmontools package.
|
||||
Run smartd from the smartmontools package. Note that e-mail
|
||||
notifications will not be enabled unless you configure the list of
|
||||
devices with <varname>services.smartd.devices</varname> as well.
|
||||
'';
|
||||
};
|
||||
|
||||
devices = mkOption {
|
||||
default = [];
|
||||
example = ["/dev/sda" "/dev/sdb"];
|
||||
description = ''
|
||||
List of devices to monitor. By default -- if this list is empty --,
|
||||
smartd will monitor all devices connected to the machine at the time
|
||||
it's being run. Configuring this option has the added benefit of
|
||||
enabling e-mail notifications to "root" every time smartd detects an
|
||||
error.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
@ -40,7 +77,7 @@ in
|
||||
|
||||
daemonType = "daemon";
|
||||
|
||||
exec = "${pkgs.smartmontools}/sbin/smartd";
|
||||
exec = "${pkgs.smartmontools}/sbin/smartd --pidfile=/var/run/smartd.pid ${smartdFlags}";
|
||||
};
|
||||
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user