adam 0112875894 Add enclosure health details (PSUs, fans, temps, voltages) via SES
Parse sg_ses --page=0x02 output to surface enclosure-level health data
including power supply status, fan RPMs, temperature sensors, and voltage
rails. Failed/critical components are reflected in the overview totals
and shown as status pills in the enclosure card header with an expandable
detail panel.
2026-03-07 06:03:26 +00:00

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 — for smartctl (SMART data)
  • sg3-utils — for sg_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
REST API for monitoring drive health in JBOD enclosures on Linux
Readme 244 KiB
Languages
Python 50.1%
JavaScript 47.9%
Dockerfile 1%
Shell 0.6%
HTML 0.4%