Hard drives rarely die without warning: they usually report trouble through S.M.A.R.T. long before they fail. The problem is that nobody reads those reports. Scrutiny reads them for me, and shows the health of every drive in my server on one simple web page.
What is S.M.A.R.T.?
Every modern hard drive and SSD keeps self-monitoring data: reallocated sectors, read errors, temperature, power-on hours, wear levels and more. Some of these numbers are strong predictors of failure. Scrutiny collects them on a schedule, stores the history, and flags drives as passed, warning or failed. Its thresholds are based on real-world failure rates published by Backblaze, rather than just the manufacturer’s own limits.
Setting it up
I use the “omnibus” image, which bundles the collector, web UI and database in one container. Here’s a compose file based on mine:
services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
restart: unless-stopped
cap_add:
- SYS_RAWIO
- SYS_ADMIN
ports:
- "8085:8080"
volumes:
- /run/udev:/run/udev:ro
- ./config:/opt/scrutiny/config
- ./influxdb:/opt/scrutiny/influxdb
devices:
- /dev/sda
- /dev/sdb
- /dev/nvme0
deviceslists every drive to monitor. Find yours withlsblk, and include all of them, especially the big data and backup drives you care about most.SYS_RAWIOlets Scrutiny read S.M.A.R.T. data from SATA drives.SYS_ADMINis needed for NVMe drives./run/udevlets it identify drives properly../influxdbstores the history, so you can watch trends over time.
Browse to http://<server-ip>:8085 and you’ll see a card for each drive.
Reading the dashboard
- Passed drives need nothing.
- Warning means an attribute has crossed a threshold that’s linked to higher failure rates. Check that the drive is in your backups and keep an eye on it.
- Failed means plan a replacement now, and make sure the data is backed up before anything else.
Click a drive to see every attribute and its history. The ones I watch most are reallocated sector count, pending sectors and uncorrectable errors on hard drives, and “percentage used” on SSDs and NVMe drives.
Notifications
A dashboard you never open doesn’t help much. Scrutiny can send alerts through dozens of services (Discord, email, Telegram, ntfy and more) using notification URLs in config/scrutiny.yaml. Set one up so a failing drive actually tells you.
Tips
- USB enclosures don’t always pass S.M.A.R.T. data through. If an external drive shows no data, check Scrutiny’s docs for the right device type.
- Scrutiny is not a backup. It gives you time to act, but drives can still fail suddenly. See my backup plan.