node exporter: counter corretion for samsung hdd

This commit is contained in:
lucas committed 2026-10-14 17:42:52 +02:00
1 parent 3bf1fc1be6
commit 580b667119
1 file changed
+11 -3
+11 -3
View File
@@ -8,24 +8,32 @@ for dev in $(smartctl --scan-open | awk '{print $1}'); do
name=$(basename "$dev") name=$(basename "$dev")
LAST=0 LAST=0
if [[ "$dev" == *nvme* ]]; then if [[ "$dev" == *nvme* ]]; then
# POWER_ON=$(smartctl -a "$dev" | awk -F': *' '/Power On Hours:/ {print $2}') POWER_ON=$(smartctl -a "$dev" | awk -F': *' '/Power On Hours:/ {print $2}')
LAST=$(smartctl -l selftest "$dev" 2>/dev/null \ LAST=$(smartctl -l selftest "$dev" 2>/dev/null \
| grep "Completed" \ | grep "Completed" \
| head -1 \ | head -1 \
| awk '{print $(NF-5)}') | awk '{print $(NF-5)}')
elif [[ "$dev" == *sd* ]]; then elif [[ "$dev" == *sd* ]]; then
# POWER_ON=$(smartctl -a "$dev" | awk '/Power_On_Hours/ {print $10}') POWER_ON=$(smartctl -a "$dev" | awk '/Power_On_Hours/ {print $10}')
LAST=$(smartctl -l selftest "$dev" 2>/dev/null \ LAST=$(smartctl -l selftest "$dev" 2>/dev/null \
| grep "Completed" \ | grep "Completed" \
| head -1 \ | head -1 \
| awk '{print $(NF-1)}') | awk '{print $(NF-1)}')
MODEL=$(smartctl -i "$dev" | awk -F': *' '/Device Model/ {print $2}')
# ST2000LM003 self-test hour counter rolls over at 65536
if [[ "$MODEL" == "ST2000LM003 HN-M201RAD" ]] && \
[[ "$LAST" =~ ^[0-9]+$ ]] && \
[[ "$POWER_ON" =~ ^[0-9]+$ ]] && \
(( POWER_ON > 65535 && LAST < 65536 )); then
LAST=$((LAST + 65536))
fi
else else
POWER_ON=99999999999 POWER_ON=99999999999
echo $dev echo $dev
fi fi
# Skip devices without self-test history # Skip devices without self-test history
echo $name: ${LAST} echo $name: Last: ${LAST}, PowerOn: ${POWER_ON}
echo "smart_last_selftest_poweron_hours{device=\"$name\"} $LAST" >> "$OUT" echo "smart_last_selftest_poweron_hours{device=\"$name\"} $LAST" >> "$OUT"
done done