硬盘SMART监控工具Scrutiny

小区居委会成立了临时物资保障工作专班,在防疫政策允许的范围内落实居民生活必需品的采购、运输和分发等工作。 所以目前生活保障是没问题的,团购的物资也陆陆续续都在到货中。感谢居委会、物业、楼组长、志愿者、团长为大家辛苦服务,为他们无私的服务精神点赞,也向所有服务在一线的工作人员致敬!他们都是英雄。

按照新的管控政策,如果13号之前小区没有阳性,就可以在小区里活动了,起码可以自己拿个快递、倒个垃圾什么的,一定要坚持住~


什么是 Scrutiny ?

Scrutiny 是一个硬盘健康仪表板和监控解决方案,将制造商提供的 SMART 指标与真实世界的故障率相结合。可以帮助您在故障硬盘驱动器造成永久性数据丢失之前检测并更换它们。

初级篇

在群晖上以 Docker 方式安装。

因为需要挂载硬盘,所以需要用命令行来执行

硬盘列表

首先要获取设备的硬盘列表,如果你挂载的硬盘不存在,会报下面的错误

1
Error response from daemon: error gathering device information while adding custom device "/dev/sda": no such file or directory.

直接查询 /dev/sd*

1
2
# 查询磁盘及分区
ls /dev/sd*

不带数字的是硬盘,带数字的是分区

也可以用 fdisk

1
2
# 打印硬盘信息
fdisk -l

还可以用 smartctl

1
2
# 
smartctl --scan

其中 hda 是用于启动的 U

所以老苏有两个硬盘,分别是 /dev/sdb/dev/sdd

标准模式

接下来可以直接启动容器的安装

1
2
3
4
5
6
7
8
9
10
# 启动容器
docker run -it \
--rm \
-p 4180:8080 \
-v /run/udev:/run/udev:ro \
--cap-add SYS_RAWIO \
--device=/dev/sdb \
--device=/dev/sdd \
--name scrutiny \
analogj/scrutiny

其中:

  • /run/udevScrutiny 收集器提供对您设备元数据的访问权限
  • --cap-add SYS_RAWIO 需要允许 smartctl 查询您的设备 SMART 数据的权限
    • 注意:如果您有 NVMe 驱动器,您也必须添加--cap-add SYS_ADMIN。见问题#26
  • --device 确保您的硬盘设备可在容器内访问

这种方式是一次性的,当你退出时容器会自动删除。如果你希望它一直存在,可以取消 --rm 参数

1
2
3
4
5
6
7
8
9
# 启动容器
docker run -it \
-p 4180:8080 \
-v /run/udev:/run/udev:ro \
--cap-add SYS_RAWIO \
--device=/dev/sdb \
--device=/dev/sdd \
--name scrutiny \
analogj/scrutiny

运行

在浏览器中输入 http://群晖IP:4180 就能看到主界面

硬盘似乎有问题,进入详情页面似乎又正常

存储空间管理员 –> HDD/SSD 中也正常,不知道是啥意思

中级篇

Hub/Spoke 模式

如果你有多台群晖设备,也可以对硬盘进行集中、统一管理。Scrutiny 镜像包含了 webapp 服务器(前端和 api)以及 SMART 指标收集器。所以可以在每台装有硬盘的设备上运行一个收集器,然后使用一个中央 API 服务器来收集这些指标。

analogj/scrutiny 除了 latest 标签外,还有 2 个其他 Docker 镜像可用:

  • analogj/scrutiny:collector:包含 Scrutiny 数据收集器、smartctl二进制和类似 cron 的调度程序。您可以在每台服务器上运行一个收集器。
  • analogj/scrutiny:web:包含 Web UIAPI 和数据库。只需要一个容器

老苏试验在 DS918 上同时安装了 webcollector,而在 DS3617 上只安装了 collector

DS918 的局域网 IP192.168.0.199

1
2
3
4
5
# 启动 web 
docker run -d \
-p 4180:8080 \
--name scrutiny-web \
analogj/scrutiny:web

因为还没有 collector,所以还没有设备

接下来在 DS918DS3617 上分别安装 collector

1
2
3
4
5
6
7
8
9
# 启动 collector
docker run -d \
-v /run/udev:/run/udev:ro \
--cap-add SYS_RAWIO \
--device=/dev/sdb \
--device=/dev/sdd \
-e SCRUTINY_API_ENDPOINT=http://192.168.0.199:4180 \
--name scrutiny-collector \
analogj/scrutiny:collector

按页面上的提示,还需要执行 scrutiny-collector-metrics run 命令,可以在命令行执行

1
2
# 在容器中执行命令
docker exec scrutiny-collector /scrutiny/bin/scrutiny-collector-metrics run

也可以在终端机中执行

再次刷新 Web 页面,两台机器的硬盘信息都出来了

使用该命令执行的收集器将使用 CRON 作业每天自动运行一次

Scrutiny 还可以为您做的另一件事是根据实际数据设置自动阈值,实现报警提示

参考文档

AnalogJ/scrutiny: Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds
地址:https://github.com/AnalogJ/scrutiny

Scrutiny is a must-have app to monitor Unraid’s drives
地址:https://unraid-guides.com/2021/11/11/scrutiny-is-a-must-have-app-to-monitor-unraids-drives/