3185acbb2402f310334b027fd8ae02f8710c9769
Dual-IOM shelves (e.g. NetApp DS2246 with two IOM6 modules) create two sysfs enclosure entries. The secondary path reports populated slots via SES but the kernel only links block devices through the primary path. Filter these out during discovery to avoid showing ghost enclosures with no drive data.
JBOD Monitor
REST API for monitoring drive health in JBOD enclosures on Linux.
Auto-discovers SES enclosures via sysfs, maps drives to physical slots, and exposes SMART health data.
Prerequisites
- Linux with SAS/SATA JBODs connected via HBA
smartmontools— forsmartctl(SMART data)sg3-utils— forsg_ses(SES enclosure data)- Python 3.11+
# Debian/Ubuntu
apt install smartmontools sg3-utils
# RHEL/Fedora
dnf install smartmontools sg3_utils
Install
pip install -r requirements.txt
Run
The API needs root access for smartctl to query drives:
sudo uvicorn main:app --host 0.0.0.0 --port 8000
API Endpoints
| Endpoint | Description |
|---|---|
GET /api/health |
Service health + tool availability |
GET /api/enclosures |
List all discovered SES enclosures |
GET /api/enclosures/{id}/drives |
List drive slots for an enclosure |
GET /api/drives/{device} |
SMART detail for a block device |
GET /api/overview |
Aggregate enclosure + drive health |
GET /docs |
Interactive API docs (Swagger UI) |
Description
Languages
Python
58.8%
JavaScript
39.6%
Dockerfile
0.9%
Shell
0.4%
HTML
0.3%