working smartmon node exporter script for sd/nvme

This commit is contained in:
lucas committed 2026-10-12 19:44:57 +00:00
1 parent 01ab319eea
commit 97d6977046
1 file changed
+21 -10
+21 -10
View File
@@ -6,17 +6,28 @@ OUT="/docker/monitoring/node_exporter/textfile_collector/smart_selftest.prom"
for dev in $(smartctl --scan-open | awk '{print $1}'); do
name=$(basename "$dev")
LAST=$(smartctl -l selftest "$dev" 2>/dev/null \
| grep "Completed" \
| head -1 \
| awk '{print $(NF-1)}')
# Skip devices without self-test history
if [[ "${LAST}" == "-" ]]; then
HOURS=$(smartctl -a "$DEV" 2>/dev/null | awk '/Power_On_Hours/ {print $10}')
LAST=${HOURS:- -1}
if [[ ! "$LAST" =~ ^[0-9]+$ ]]; then
if [[ "$dev" == *nvme* ]]; then
POWER_ON=$(smartctl -a "$dev" | awk -F': *' '/Power On Hours:/ {print $2}')
LAST=$(smartctl -l selftest "$dev" 2>/dev/null \
| grep "Completed" \
| head -1 \
| awk '{print $(NF-5)}')
elif [[ "$dev" == *sd* ]]; then
POWER_ON=$(smartctl -a "$dev" | awk '/Power_On_Hours/ {print $10}')
LAST=$(smartctl -l selftest "$dev" 2>/dev/null \
| grep "Completed" \
| head -1 \
| awk '{print $(NF-1)}')
else
POWER_ON=99999999999
echo $dev
fi
LAST=${POWER_ON}
fi
echo $name: $LAST
echo $LAST
# Skip devices without self-test history
echo $name: ${LAST}
echo "smart_last_selftest_poweron_hours{device=\"$name\"} $LAST" >> "$OUT"
done