云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

【NAS必备神器】没有炸盘!极空间部署硬盘监控神器『Scrutiny』

jxf315 2025-07-23 15:38:13 教程文章 3 ℃

【NAS必备神器】让NAS没有炸盘!极空间NAS部署硬盘状态监控神器『Scrutiny』

哈喽小伙伴们好,我是Stark-C~

对于咱们NAS玩家来说,设备到手并不能保证数据的安全无忧。虽说NAS在确实对咱们存在硬盘内的数据提供了全方位的保护,但是还有一个咱们不得不重视的问题,那就是硬盘本身的寿命。

硬盘作为NAS的核心存储部件,其健康状况直接关系到数据的完整性和安全性,毕竟要是硬盘炸了,里面的数据可就直接没了。所以,及时了解硬盘的健康状况,提前发现并解决潜在问题,对于保障数据安全至关重要。

那么怎么才能做到提前发现潜在问题?在极空间NAS的“存储管理”中有个S.M.A.R.T详情查看,这里我们可以主动查看硬盘的健康信息,如果有啥问题可以尽早做好数据转移,及时更换硬盘。

但是有个弊端就是我们需要随时关注这里才能得到硬盘信息,如果某段时间我们没有进来看,而硬盘又正好出现问题没被我们发现,搞不好硬盘就挂了,里面的数据可就GG了~

那么有没有什么方案可以替代我们随时监控硬盘的健康状况,并在出现问题的时候第一时间给我们发送通知预警?你还别说,今天为大家分享的『Scrutiny』项目还就是来搞定这个事情的。

关于Scrutiny

Scrutiny是一款开源的硬盘健康监控工具,依托smartd守护进程,通过读取硬盘的S.M.A.R.T数据来评估硬盘的健康状态和性能表现。它结合了硬盘制造商提供的S.M.A.R.T指标与实际故障率,为用户提供提前预警,帮助他们在硬盘出现故障之前及时检测并进行更换。

项目GitHub地址(有需要的记得Star):
https://github.com/AnalogJ/scrutin

它的亮点功能包括:

Web UI仪表盘:提供简洁直观的界面,关键指标一目了然。

smartd集成:直接利用smartd的强大功能,不重复造轮子。

自动检测硬盘:无需手动配置,自动识别所有连接的硬盘。

S.M.A.R.T指标历史趋势跟踪:可了解硬盘的“成长轨迹”,及时发现问题。

自定义阈值:根据实际故障率调整阈值,更准确地预测硬盘故障。

温度跟踪:实时监控硬盘温度,避免过热导致损坏。

Docker一体化镜像:一键部署,方便快捷。

Webhooks警报/通知:及时接收硬盘异常通知,防患于未然。

未来功能:计划增加硬盘性能测试和跟踪功能。

请注意,这里有两个专业性的名词:smartd守护进程,S.M.A.R.T数据,它们也是Scrutiny运行的原理和关键。我在这里简单为大家解释下:

  • S.M.A.R.T数据:相当于硬盘的“体检报告”,它是硬盘内置的自我检测技术,一般硬盘制造商会在硬盘中集成这个技术,我们通过它可以实时监控硬盘的健康状态,提前发现潜在的硬盘故障。
  • smartd守护进程:相当于硬盘的“私人医生”,它会一直在后台工作,默默地监控着硬盘的健康状况(S.M.A.R.T数据),我们通过它可以做到一旦发现异常就给我们发送通知提醒,从而帮助我们提前预防硬盘故障,并及时转移数据与更换硬盘。

Scrutiny部署

先在文件管理器的Docker目录新建一个scrutiny的文件夹,然后在该文件夹下再建一个config和influxdb两个子文件夹,主要是用来映射对应数据库数据的持久性。

然后我们还需要打开SSH终端,通过命令“smartctl --scan”获取我们NAS中的硬盘列表。通过上图可以看出,我这边包含四块机器硬盘(/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd),以及三块NVMe SSD硬盘(nvme0,nvme1,nvme2)。

简单说明下:极空间这边的硬盘列表编号还是很有规律的,所以如果你们那边不想打开SSH终端就按我这边的编号排列就可以。有几块硬盘就排几块。比如说你就装了两块机器硬盘,你的硬盘编号其实就是/dev/sda,/dev/sdb。

然后我这边显示的是三块NVMe SSD硬盘,事实上我只装了两块NVMe SSD硬盘。至于多出的那块(nvme0),其实只极空间内置的闪存盘。咱们稍后挂载的时候可以忽略掉它。

接着打开极空间NAS的“Docker”应用,点击【Compose】 > 【新增项目】。

在新增项目页面自定义项目名称,输入以下 Docker Compose 配置信息后点“创建”按钮:

services:
  scrutiny:
    image: ghcr.io/analogj/scrutiny:master-omnibus
    container_name: scrutiny
    ports:
      - "8085:8080"    # 项目WebUI打开端口,冒号前面请勿和本地冲突
      - "8086:8086"    # 冒号前面请勿和本地冲突
    volumes:
      - /run/udev:/run/udev:ro    # 获取硬盘的元数据,默认即可
      - ./scrutiny/config:/opt/scrutiny/config   # 冒号前面映射config子文件夹实际路径
      - ./scrutiny/influxdb:/opt/scrutiny/influxdb    # 冒号前面映射influxdb子文件夹实际路径
    cap_add:
      - SYS_RAWIO    # 获取机械硬盘的S.M.A.R.T 信息,默认即可
      - SYS_ADMIN    # 获取NVMe硬盘的S.M.A.R.T 信息,没有可以删除
    devices:
      - /dev/sda    #机械硬盘编号,有几个填几个
      - /dev/sdb
      - /dev/sdc
      - /dev/sdd
      - /dev/nvme0    #NVMe硬盘编号,有几个填几个
      - /dev/nvme1
      - /dev/nvme2
    stdin_open: true
    tty: true
    restart: no

以上代码需要根据注释自行修改,镜像的拉取需要自行解决网络问题。顺便说一下,volumes映射的路径需要使用“查询路径”查找到真实路径直接复制粘贴就可以了,个人觉得极空间这里对于新手小白已经是相当友好的操作了。

PS:还有个小插曲就是不知道是不是我自己设备的原因,我在首次新建Docker Compose的时候会因为“/run/udev:/run/udev:ro”报错无法安装,删掉以后就能正常安装。安装好之后再Compose配置中将“/run/udev:/run/udev:ro”在加进去重新构建,又是正常。

镜像不大,所以部署起来还是很快的,完成之后就能看到项目已经在正常运行了。

Scrutiny体验

硬盘监控一览:

项目的打开方式为浏览器【IP:端口号】的方式,打开之后可以看到它的界面还是非常简洁的,只不过语言为英文。

官方目前也没加入中文语言的支持,所以我直接启用了浏览器的翻译插件,虽说机翻不太准确,但至少可以看懂了。它这边已经准确的显示出我挂载的所有硬盘信息(4块机械和2块SSD),包括容量,使用时间,温度,以及底部的实时硬盘温度监控。

我们也可以通过“查看详情”查看更详细的硬盘信息。

在详情里面,可以看到它显示的其实就是硬盘的S.M.A.R.T详情,不过看上去比极空间显示的更加全面和详细。我也查询了我这边红色的警告信息,大概意思就是它已经检测到一些严重到无法自动修复的数据完整性问题的发生次数。

实不相瞒,它检测的还挺准的,因为这盘还就是我之前图便宜买的矿盘,有问题我其实也能接受,反正里面装的都是一些经常更新的外语资料,就算挂了也不心疼~

关于通知提醒的设置说明:

然后是关于Scrutiny的通知提醒,首先我们需要自行在设置里面设置一个自动触发的阈值,再根据自己的需求设置通知类型与方式。Scrutiny是根据scrutiny.yaml 文件中的 notify.urls 部分配置通知的。

Scrutiny是根据scrutiny.yaml 文件中的 notify.urls 部分配置通知的。它支持的通知方式还挺多的,包括自定义脚本/电子邮件
/Webhooks/Discord/Gotify/Hangouts/IFTTT/Join/Mattermost/ntfy/Pushbullet/Pushover/Slack/Teams/Telegram/Tulip,但基本都不是我们常见的,所以配置起来其实还是有些麻烦的。

官方也给出了较为详细的配置说明:
https://github.com/AnalogJ/scrutiny#notifications

官方默认的配置文件示例:
https://raw.githubusercontent.com/AnalogJ/scrutiny/master/example.scrutiny.yaml

我这里就以QQ电子邮件为大家来做个演示,假设我们使用的QQ邮箱为123456@qq.com

我们需要回到极空间的文件管理器,然后打开Docker目录中的scrutiny文件夹中的config子文件夹,然后新建一个文本文件。

接着按照官方给出的实例,创建一个电子邮件的配置文件:

notify:
  urls:
    - "smtp://123456@qq.com:授权码@smtp.qq.com:465/?fromAddress=123456@qq.com&toAddresses=recipient1@example@XXX.com"

这里有亮点需要强调下:

  • 授权码:授权码并不是QQ邮箱的密码,而是通过QQ邮箱后台自动生成的(需要发送短信验证)
  • example@XXX.com:后面是收信人的邮箱,可以是自己,也可以是他人,还可以是多人(多人需要使用逗号分隔)

如果你不清楚QQ邮箱的配置,我之前也出过相关的教程:

完成以上之后将文本文件重命名为“scrutiny.yaml”(包括后缀也要修改!)。

最后将项目重启一次,咱们配置的通知就生效了!

最后总结

总的来说,Scrutiny还是一个实用且不错的项目,它为我们NAS用户提供了全面且便捷的硬盘监控解决方案,除了能够全方位的监控硬盘的健康状况,还能在必要的时候提前预警潜在故障,并第一时间为我们发送通知,让我们及时采取措施,避免数据的损失。

虽说618已经过去,但是极空间的优惠还在。比如说品牌补贴9折,白条6期免息,以及晒单送E卡的活动,并且还有机会0元抽新款iPhone。机会不常有,有需要的小伙伴可要抓紧了~

好了,以上就是今天给大家分享的内容,我是爱分享的Stark-C,如果今天的内容对你有帮助请记得收藏,顺便点点关注,咱们下期再见!谢谢大家~

最近发表
标签列表