50dd2a631eb3fa5d766e854d992f989d8404fb49
Xyratex HB-1235 enclosures have non-functional temperature sensor slots that report Unrecoverable/Unknown at 0°C. The SES header rolls these into UNRECOV=1, causing a false CRITICAL flag. Now we skip dead sensors (0°C + non-OK status) and derive overall_status from the actual parsed elements instead of the raw header counts.
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%