# Scrutiny: Hard Drive S.M.A.R.T Monitoring and Failure Prediction

This repository profile is provided by osrepos.com, an open source repository discovery platform.

Source: osrepos.com
Repository profile: https://osrepos.com/repo/analogj-scrutiny
Generated for open source discovery and AI-assisted research.

Scrutiny is an open-source hard drive health dashboard and monitoring solution. It integrates with smartd to provide S.M.A.R.T monitoring, historical trends, and real-world failure thresholds. This tool helps users detect and replace failing hard drives proactively, preventing data loss.

GitHub: https://github.com/AnalogJ/scrutiny
OSRepos URL: https://osrepos.com/repo/analogj-scrutiny

## Summary

Scrutiny is an open-source hard drive health dashboard and monitoring solution. It integrates with smartd to provide S.M.A.R.T monitoring, historical trends, and real-world failure thresholds. This tool helps users detect and replace failing hard drives proactively, preventing data loss.

## Topics

- Go
- Hard Drive Monitoring
- S.M.A.R.T
- Server Monitoring
- Data Storage
- Docker
- Web UI
- System Health

## Repository Information

Last analyzed by OSRepos: Sat Dec 27 2025 00:01:23 GMT+0000 (Western European Standard Time)
Detail views: 8
GitHub clicks: 2

## Safety Notice

OSRepos shares public repositories for knowledge and discovery only. Review source code, dependencies, licenses, and security implications before running or installing anything.

## Content

## Introduction

Scrutiny is a powerful Hard Drive Health Dashboard and Monitoring solution designed to merge manufacturer-provided S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology) metrics with real-world failure rates. While the `smartd` daemon is a well-known open-source project for monitoring hard drives, it has certain limitations. `smartd` does not differentiate between critical and informational S.M.A.R.T attributes, lacks historical tracking, and often uses manufacturer thresholds that are too high for proactive failure detection. Furthermore, `smartd` is a command-line-only tool, which can be less convenient for headless servers. Scrutiny addresses these challenges by providing a comprehensive web UI, historical trend tracking, customized thresholds, and configurable alerting, empowering users to detect and replace failing hard drives before they cause permanent data loss.

## Installation

Scrutiny offers flexible installation options, with Docker being the recommended and simplest method.

### Docker (Omnibus Image)

For an all-in-one solution, the omnibus Docker image includes both the web application server and the S.M.A.R.T metric collector.

bash
docker run -p 8080:8080 -p 8086:8086 --restart unless-stopped \
  -v `pwd`/scrutiny:/opt/scrutiny/config \
  -v `pwd`/influxdb2:/opt/scrutiny/influxdb \
  -v /run/udev:/run/udev:ro \
  --cap-add SYS_RAWIO \
  --device=/dev/sda \
  --device=/dev/sdb \
  --name scrutiny \
  ghcr.io/analogj/scrutiny:master-omnibus


Remember to pass through your hard drive devices using `--device` and ensure `/run/udev` is mounted. For NVMe drives, add `--cap-add SYS_ADMIN`. A `docker-compose` example for the omnibus setup is available [here](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.omnibus.docker-compose.yml){target="_blank"}.

### Docker (Hub/Spoke Deployment)

For more distributed setups, Scrutiny can be deployed in a Hub/Spoke mode, utilizing separate Docker images for the collector, web UI/API, and InfluxDB.

First, run InfluxDB:
bash
docker run -p 8086:8086 --restart unless-stopped \
  -v `pwd`/influxdb2:/var/lib/influxdb2 \
  --name scrutiny-influxdb \
  influxdb:2.2


Then, the Scrutiny Web UI and API:
bash
docker run -p 8080:8080 --restart unless-stopped \
  -v `pwd`/scrutiny:/opt/scrutiny/config \
  --name scrutiny-web \
  ghcr.io/analogj/scrutiny:master-web


Finally, the Scrutiny Collector (run on each server with drives to monitor):
bash
docker run --restart unless-stopped \
  -v /run/udev:/run/udev:ro \
  --cap-add SYS_RAWIO \
  --device=/dev/sda \
  --device=/dev/sdb \
  -e COLLECTOR_API_ENDPOINT=http://SCRUTINY_WEB_IPADDRESS:8080 \
  --name scrutiny-collector \
  ghcr.io/analogj/scrutiny:master-collector


A `docker-compose` example for the Hub/Spoke setup can be found [here](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml){target="_blank"}.

### Manual Installation

For users who prefer not to use Docker, Scrutiny can also be installed manually. Detailed instructions are available in the [manual installation guide](https://github.com/AnalogJ/scrutiny/blob/master/docs/INSTALL_MANUAL.md){target="_blank"}.

## Examples

Once Scrutiny is running, you can access the dashboard via your browser at `http://localhost:8080`.

### Triggering the Collector Manually

The collector is typically configured to run daily, but you can trigger it manually to update your dashboard immediately:

bash
docker exec scrutiny /opt/scrutiny/bin/scrutiny-collector-metrics run


### Testing Notifications

Scrutiny supports various notification services. You can test your notification configuration by sending an empty payload to the health check API:

bash
curl -X POST http://localhost:8080/api/health/notify


## Why Use Scrutiny?

Scrutiny provides a robust solution for hard drive health monitoring with several compelling features:

*   **Web UI Dashboard:** A user-friendly interface focused on critical S.M.A.R.T metrics.
*   **`smartd` Integration:** Leverages the existing `smartd` daemon without reinventing the wheel.
*   **Auto-detection:** Automatically detects all connected hard drives.
*   **Historical Trends:** Tracks S.M.A.R.T metrics over time, allowing you to observe degradation.
*   **Customized Thresholds:** Uses real-world failure rates for more accurate and proactive alerts.
*   **Temperature Tracking:** Monitors drive temperatures for additional insights.
*   **Docker Support:** Easy deployment with all-in-one or hub/spoke Docker images.
*   **Configurable Alerting:** Supports notifications via webhooks, email, Discord, Slack, Telegram, and many more services.

By using Scrutiny, you gain better visibility into your hard drive health, enabling you to anticipate and prevent potential drive failures and data loss.

## Links

*   **GitHub Repository:** [AnalogJ/scrutiny](https://github.com/AnalogJ/scrutiny){target="_blank"}
*   **Omnibus Docker Compose Example:** [example.omnibus.docker-compose.yml](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.omnibus.docker-compose.yml){target="_blank"}
*   **Hub/Spoke Docker Compose Example:** [example.hubspoke.docker-compose.yml](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml){target="_blank"}
*   **Manual Installation Guide:** [INSTALL_MANUAL.md](https://github.com/AnalogJ/scrutiny/blob/master/docs/INSTALL_MANUAL.md){target="_blank"}
*   **Troubleshooting Device Collector:** [TROUBLESHOOTING_DEVICE_COLLECTOR.md](https://github.com/AnalogJ/scrutiny/blob/master/docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md){target="_blank"}
*   **Troubleshooting Notifications:** [TROUBLESHOOTING_NOTIFICATIONS.md](https://github.com/AnalogJ/scrutiny/blob/master/docs/TROUBLESHOOTING_NOTIFICATIONS.md){target="_blank"}