review: apply external consultant editorial fixes and update audit tracker to 74/91 approved
Deploy / build (push) Successful in 28s

This commit is contained in:
hoelee committed 2026-10-27 05:29:08 +08:00
1 parent 4e64bfc9ae
commit a7e683100b
56 files changed
+14496 -23169

No files matched your search

@@ -10,7 +10,7 @@ banner: /banners/smartctl-exit-code-32-skips-the-disks-that-matter.jpg
draft: false
---
我的硬盘健康采集脚本连续几周都是\"全绿\"。每块盘都有温度、通电小时数和 SMART 结论,指标看起来完整——直到我数了一下只有 **4 块 SSD 里的 2 块**。
我的硬盘健康采集脚本连续几周都是「全绿」。每块盘都有温度、通电小时数和 SMART 结论,指标看起来完整——直到我数了一下只有 **4 块 SSD 里的 2 块**。
不是故障,是**消失了**。脚本认定这两块盘不存在。
@@ -44,11 +44,11 @@ done
| 6 | 64 | 设备错误日志中有记录 |
| 7 | 128 | 自检日志中有失败记录 |
所以 `32` 的意思和\"读不到盘\"正好相反:**现在没问题,但它曾经踩过阈值。** 这正是应该持续盯着的那类盘——而我的脚本把它们丢掉了。
所以 `32` 的意思和「读不到盘」正好相反:**现在没问题,但它曾经踩过阈值。** 这正是应该持续盯着的那类盘——而我的脚本把它们丢掉了。
消失的两块盘,恰好是原始属性长期处在边缘值的那两块;退出码为 `0` 的\"健康盘\"被正常采集。**这个过滤器实际上筛选出了\"没有任何历史可报告\"的盘。**
消失的两块盘,恰好是原始属性长期处在边缘值的那两块;退出码为 `0` 的「健康盘」被正常采集。**这个过滤器实际上筛选出了「没有任何历史可报告」的盘。**
## 修法:把\"信息位\"掩掉
## 修法:把「信息位」掩掉
对监控来说,位 32 和 64 是信息;位 8 和 16 才是该告警的。掩掉信息位,只对剩下的做判断:
@@ -73,13 +73,13 @@ echo "disk_smart_health{device=\"$dev\"} $(( rc & 8 ? 0 : 1 ))"
1. **退出码变成数据,而不是控制流。** 它作为指标被导出,磁盘从 `0` → `32` → `64` 的漂移会变成趋势,而不是一次静默跳过。
2. **信息位不再致命。** 有历史的盘被采集,这才是监控它们的目的。
3. **NAS 上 `-d sat` 很关键。** 在 Synology DSM(以及某些 USB 桥接)上,设备类型不对时 `smartctl` 拿不到有用输出——症状同样是\"盘消失\",原因却不同。
3. **NAS 上 `-d sat` 很关键。** 在 Synology DSM(以及某些 USB 桥接)上,设备类型不对时 `smartctl` 拿不到有用输出——症状同样是「盘消失」,原因却不同。
## 我下次会怎么做
- **面对有\"退出码位域\"文档的工具,永远不要写 `if ! cmd`。** 先把手册里的退出码那节读完。
- **除了\"采集器有没有跑\",还要数\"采到了几块盘\"。** 我的告警是\"采集器过期\",真正的 bug 是\"采集器正常跑了,只报了 50% 的盘\"。一个 `disk_count` 指标就能立刻暴露。
- **把\"这个设备没有数据\"本身当成可告警状态。** 缺失的序列是不可见的,所以它存活了好几周。
- **面对有「退出码位域」文档的工具,永远不要写 `if ! cmd`。** 先把手册里的退出码那节读完。
- **除了「采集器有没有跑」,还要数「采到了几块盘」。** 我的告警是「采集器过期」,真正的 bug 是「采集器正常跑了,只报了 50% 的盘」。一个 `disk_count` 指标就能立刻暴露。
- **把「这个设备没有数据」本身当成可告警状态。** 缺失的序列是不可见的,所以它存活了好几周。
## 结果
@@ -89,7 +89,7 @@ echo "disk_smart_health{device=\"$dev\"} $(( rc & 8 ? 0 : 1 ))"
## 需要为你的业务做这个吗?
如果你在跑 NAS 或服务器机架,想让硬盘健康真正\"会通知你\"——SMART 属性、温度、btrfs/RAID 错误计数,并推到 Telegram 或邮件——这类自托管监控流水线我可以帮你搭。
如果你在跑 NAS 或服务器机架,想让硬盘健康真正「会通知你」——SMART 属性、温度、btrfs/RAID 错误计数,并推到 Telegram 或邮件——这类自托管监控流水线我可以帮你搭。
**WhatsApp:[+60 12-797 2969](https://wa.me/60127972969)** · **邮箱:[[email protected]](mailto:[email protected]?subject=Disk%20health%20monitoring)** · **[hoelee.com](https://hoelee.com)**