$docker.recipes

Scrutiny Disk Health Monitor

intermediate

Hard drive health monitoring with S.M.A.R.T. data, predictive failure analysis, and alerting.

[i]Overview

Scrutiny is an open-source hard drive monitoring application created by Jason Kulatunga that provides comprehensive S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) data analysis with predictive failure detection. The project emerged from the need for a modern, web-based alternative to traditional command-line tools like smartctl, offering intuitive dashboards and proactive alerting for storage health management. Scrutiny's omnibus Docker image combines the web interface, data collector, and embedded InfluxDB instance into a single container that continuously monitors connected drives and analyzes their S.M.A.R.T. attributes for signs of degradation or impending failure. This integrated stack leverages InfluxDB's time-series capabilities to store historical S.M.A.R.T. metrics, enabling trend analysis and predictive modeling that can identify failing drives before catastrophic data loss occurs. The combination provides system administrators with early warning systems, detailed health reports, and customizable alerting rules based on manufacturer-specific failure thresholds. This configuration is particularly valuable for homelab enthusiasts, small businesses, and IT professionals managing critical storage infrastructure who need enterprise-grade monitoring without the complexity of separate tool deployment and configuration.

[*]Key Features

  • [+]Real-time S.M.A.R.T. attribute collection and analysis from connected storage devices
  • [+]Predictive failure detection using manufacturer-specific threshold databases and trend analysis
  • [+]Web-based dashboard displaying drive health scores, temperature graphs, and detailed attribute history
  • [+]Customizable alerting system with email notifications for critical drive conditions
  • [+]Historical trend analysis using InfluxDB time-series storage for long-term drive health tracking
  • [+]Support for multiple drive types including SATA, SAS, NVMe, and USB-connected storage devices
  • [+]Automated drive discovery and registration with configurable scanning intervals
  • [+]RESTful API for integration with external monitoring systems and automation tools

[#]Common Use Cases

  • [1]Homelab servers monitoring multiple drives in NAS systems and media servers
  • [2]Small business file servers requiring proactive storage failure prevention
  • [3]Development workstations with critical project data needing drive health oversight
  • [4]Remote server installations where physical drive access for diagnostics is limited
  • [5]RAID array monitoring to identify individual drive degradation before array failure
  • [6]Data recovery service providers tracking client drive health during imaging processes
  • [7]IT departments managing workstation fleets with centralized storage health reporting

[!]Prerequisites

  • [!]Docker host with at least 512MB RAM available for InfluxDB and web interface operation
  • [!]Physical or virtual access to storage devices that support S.M.A.R.T. monitoring
  • [!]Host system with smartmontools package installed or container running in privileged mode
  • [!]Port 8080 available on the host system for web interface access
  • [!]Understanding of device mapping concepts to expose storage devices to containers
  • [!]Basic knowledge of S.M.A.R.T. attributes and drive health terminology
[!]

WARNING: For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

[$]docker-compose.yml

[docker-compose.yml]
1services:
2 scrutiny:
3 image: ghcr.io/analogj/scrutiny:master-omnibus
4 cap_add:
5 - SYS_RAWIO
6 ports:
7 - "8080:8080"
8 volumes:
9 - ./scrutiny.yaml:/opt/scrutiny/config/scrutiny.yaml:ro
10 - scrutiny_config:/opt/scrutiny/config
11 - scrutiny_influxdb:/opt/scrutiny/influxdb
12 - /run/udev:/run/udev:ro
13 devices:
14 - /dev/sda
15 - /dev/sdb
16 networks:
17 - scrutiny-net
18 restart: unless-stopped
19
20volumes:
21 scrutiny_config:
22 scrutiny_influxdb:
23
24networks:
25 scrutiny-net:
26 driver: bridge

[$].env Template

[.env]
1# Scrutiny Configuration
2# All configuration in scrutiny.yaml
3
4# Device paths to monitor
5# Add all disks: /dev/sda, /dev/sdb, etc.

[i]Usage Notes

  1. [1]Dashboard at http://localhost:8080
  2. [2]Add disk devices to container
  3. [3]Monitors S.M.A.R.T. attributes
  4. [4]Predictive failure warnings

[>]Quick Start

[terminal]
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 scrutiny:
5 image: ghcr.io/analogj/scrutiny:master-omnibus
6 cap_add:
7 - SYS_RAWIO
8 ports:
9 - "8080:8080"
10 volumes:
11 - ./scrutiny.yaml:/opt/scrutiny/config/scrutiny.yaml:ro
12 - scrutiny_config:/opt/scrutiny/config
13 - scrutiny_influxdb:/opt/scrutiny/influxdb
14 - /run/udev:/run/udev:ro
15 devices:
16 - /dev/sda
17 - /dev/sdb
18 networks:
19 - scrutiny-net
20 restart: unless-stopped
21
22volumes:
23 scrutiny_config:
24 scrutiny_influxdb:
25
26networks:
27 scrutiny-net:
28 driver: bridge
29EOF
30
31# 2. Create the .env file
32cat > .env << 'EOF'
33# Scrutiny Configuration
34# All configuration in scrutiny.yaml
35
36# Device paths to monitor
37# Add all disks: /dev/sda, /dev/sdb, etc.
38EOF
39
40# 3. Start the services
41docker compose up -d
42
43# 4. View logs
44docker compose logs -f

[>]One-Liner

Run this command to download and set up the recipe in one step:

[terminal]
1curl -fsSL https://docker.recipes/api/recipes/scrutiny-disk-monitoring/run | bash

[?]Troubleshooting

  • [!]No drives detected in dashboard: Verify device mappings in docker-compose and ensure SYS_RAWIO capability is properly assigned
  • [!]S.M.A.R.T. data not collecting: Check that smartmontools can access drives on host system and udev volume mount is correctly configured
  • [!]High memory usage from InfluxDB: Adjust retention policies in scrutiny.yaml configuration file to limit historical data storage
  • [!]Web interface showing connection errors: Confirm InfluxDB embedded instance is starting properly and scrutiny_influxdb volume has sufficient disk space
  • [!]Drives showing as unsupported: Update Scrutiny image to latest version for expanded device compatibility and newer S.M.A.R.T. attribute databases
  • [!]Alert notifications not working: Verify SMTP configuration in scrutiny.yaml and check container logs for authentication errors

Community Notes

Loading...
Loading notes...

## Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

## Components

scrutiny-webscrutiny-collectorinfluxdb

## Tags

#scrutiny#disk#smart#hardware#health

## Category

Monitoring & Observability