diff --git a/modules/monitoring.nix b/modules/monitoring.nix index e9212fc..e5b13f1 100644 --- a/modules/monitoring.nix +++ b/modules/monitoring.nix @@ -206,6 +206,8 @@ echo "# TYPE smart_sas_read_uncorrected counter" echo "# HELP smart_sas_write_uncorrected Uncorrected write errors" echo "# TYPE smart_sas_write_uncorrected counter" + echo "# HELP smart_sas_info Drive identification (vendor/product/revision/serial as labels)" + echo "# TYPE smart_sas_info gauge" for dev in /dev/sd?; do [ -b "$dev" ] || continue out=$(/run/wrappers/bin/sudo ${pkgs.smartmontools}/bin/smartctl -a "$dev" 2>/dev/null) || continue @@ -219,12 +221,17 @@ pd=$(echo "$out" | ${pkgs.gnugrep}/bin/grep "Pending defect count" | ${pkgs.gnused}/bin/sed 's/.*count:\([0-9]*\).*/\1/') ru=$(echo "$out" | ${pkgs.gnugrep}/bin/grep -A1 "^read:" | ${pkgs.coreutils}/bin/head -1 | ${pkgs.gawk}/bin/awk '{print $NF}') wu=$(echo "$out" | ${pkgs.gnugrep}/bin/grep -A1 "^write:" | ${pkgs.coreutils}/bin/head -1 | ${pkgs.gawk}/bin/awk '{print $NF}') + vendor=$(echo "$out" | ${pkgs.gnugrep}/bin/grep "^Vendor:" | ${pkgs.gnused}/bin/sed 's/^Vendor:[[:space:]]*//;s/[[:space:]]*$//') + product=$(echo "$out" | ${pkgs.gnugrep}/bin/grep "^Product:" | ${pkgs.gnused}/bin/sed 's/^Product:[[:space:]]*//;s/[[:space:]]*$//') + rev=$(echo "$out" | ${pkgs.gnugrep}/bin/grep "^Revision:" | ${pkgs.gnused}/bin/sed 's/^Revision:[[:space:]]*//;s/[[:space:]]*$//') + serial=$(echo "$out" | ${pkgs.gnugrep}/bin/grep "^Serial number:" | ${pkgs.gnused}/bin/sed 's/^Serial number:[[:space:]]*//;s/[[:space:]]*$//') [ -n "''${poh:-}" ] && echo "smart_sas_power_on_hours{device=\"$name\"} $poh" [ -n "''${gd:-}" ] && echo "smart_sas_grown_defects{device=\"$name\"} $gd" [ -n "''${nm:-}" ] && echo "smart_sas_non_medium_errors{device=\"$name\"} $nm" [ -n "''${pd:-}" ] && echo "smart_sas_pending_defects{device=\"$name\"} $pd" [ -n "''${ru:-}" ] && echo "smart_sas_read_uncorrected{device=\"$name\"} $ru" [ -n "''${wu:-}" ] && echo "smart_sas_write_uncorrected{device=\"$name\"} $wu" + echo "smart_sas_info{device=\"$name\",vendor=\"''${vendor:-?}\",product=\"''${product:-?}\",revision=\"''${rev:-?}\",serial=\"''${serial:-?}\"} 1" done } > "$TMP_SAS" chmod 0644 "$TMP_SAS"