592 字
3 分钟

Deploy Scrutiny with Docker to Monitor Your Drives

When running a NAS, server, or a home RAID array, drives are the core of your storage stack—both easy to overlook and absolutely critical. Everything seems fine day to day, but when a single drive dies, the cost can be painful: data loss, service downtime, and a lot of stress.

SMART is the built-in self-monitoring technology on most drives, but its raw output is usually noisy, obscure, and not very intuitive. Scrutiny is a lightweight, modern drive monitoring dashboard that visualizes SMART data to show drive health, lifetime trends, and anomaly alerts, with support for email and Webhook notifications.

image

Features#

Scrutiny is a simple yet focused application with the following core features:

  • Web UI dashboard – focused on key metrics

  • smartd integration

  • Automatic detection of all attached drives

  • Historical trend tracking for SMART metrics

  • Thresholds tuned using real-world failure rates

  • Temperature tracking

  • Distributed as an all-in-one Docker image (manual install also available)

  • Alerts/notifications via Webhook configuration

  • (Planned) drive performance testing and tracking

Deployment#

Create a directory#

Terminal window
请自己找寻合适的位置
mkdir Scrutiny

docker-compose.yaml#

Here you need to fill in the actual device names for your drives. If you’re not sure, run lsblk to check.

If you want to control the monitoring frequency inside Docker, you can add the COLLECTOR_CRON_SCHEDULE environment variable. For example, to collect data every 15 minutes, use -e COLLECTOR_CRON_SCHEDULE="*/15 * * * *". This variable uses standard cron syntax.

Terminal window
version: '3.5'
services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
cap_add:
- SYS_RAWIO # 获取机械硬盘的S.M.A.R.T 信息,默认即可
- SYS_ADMIN # 获取NVMe硬盘的S.M.A.R.T 信息,没有可以删除
ports:
- "8183:8080" # webapp
- "8184:8086" # influxDB admin(可以不映射)
volumes:
- /run/udev:/run/udev:ro
- ./config:/opt/scrutiny/config
- ./influxdb:/opt/scrutiny/influxdb
devices:
- "/dev/sda"
- "/dev/sdb"
- "/dev/sdc"
- "/dev/sdd"
image

Start the stack#

Terminal window
docker compose up -d
image image

Configure notifications#

Just create a new scrutiny.yaml file under $PWD/scrutiny and add the following content:

Terminal window
notify:
urls:
- "telegram://token@telegram?channels=channel-1[,channel-2,...]"

For more detailed notification configuration, see https://github.com/AnalogJ/scrutiny#notifications

There are many supported notification types and channels; you can tune them based on how critical your drives are.

image

Summary#

Although SMART data is easy to access and is supported by almost all modern HDDs and SSDs, it’s not very user-friendly in practice. You can use CLI tools like smartctl to check each disk’s health, temperature, reallocated sectors, power-on hours, and more—but as soon as you have multiple drives, or even multiple hosts, managing all this data becomes tedious.

You end up SSH-ing into each host, running commands manually, copying outputs, then comparing and analyzing them to see if anything looks off. This workflow is not only inefficient, it’s error-prone. And when you actually need this data—say, when a drive starts throwing errors, the system slows down, or your RAID suddenly goes degraded—scrambling to inspect SMART at that point feels like too little, too late.

This is where Scrutiny shines. It can periodically collect SMART data from all your drives, aggregate it, and present everything on a modern, graphical web dashboard. It runs cross-platform and supports multiple notification channels (Email, Slack, Telegram, Webhook, etc.), so you can truly get early warning before a drive fails. What used to require checking each disk via the command line is now visible at a glance—greatly improving efficiency and taking readability to another level.

Deploy Scrutiny with Docker to Monitor Your Drives
https://catcat.blog/en/docker-install-scrutiny-monitor-harddrive.html
作者
猫猫博客
发布于
2025-07-26
许可协议
CC BY-NC-SA 4.0