Info
License: Free — part of the universal collection tier.
S.M.A.R.T. Disk Health¶
The smart probe monitors local disk health via smartctl (smartmontools),
covering SATA/SAS drives (ATA S.M.A.R.T. attributes) and NVMe drives
(NVMe health information log). Each drive is reported separately via the
smart.device tag.
Requires smartmontools to be installed on the machine.
Quick start¶
# probes.d/10-smart.yaml — each file under probes.d/ is a YAML array of probes
- name: smart
type: smart
No parameters are required — the probe auto-discovers all drives visible to
smartctl.
Parameters¶
| Parameter | Must set | Default | Description |
|---|---|---|---|
devices |
No | - | Device paths to poll; empty means smartctl --scan. Example: /dev/sda, /dev/nvme0 |
exclude_devices |
No | - | Device paths to skip from the scan, matched exactly |
smartctl_path |
No | smartctl |
Path of the smartctl binary when it is not on PATH |
use_sudo |
No | false |
Prefix every smartctl call with sudo (Unix) |
interval |
No | 300 |
Seconds between collections |
exec_timeout |
No | 10 |
Seconds one smartctl call may take |
devices and exclude_devices take the paths smartctl --scan prints. On a
host with many drives, listing the ones you care about is cheaper than
scanning: each drive costs one smartctl invocation per cycle.
use_sudo is for a packaged agent that does not run as root and has a
sudoers rule for smartctl.
Metrics¶
| Metric | Unit | Description |
|---|---|---|
smart.disk.health |
1 | 1 when S.M.A.R.T. overall assessment passed, 0 when failed, tagged with smart.device |
smart.disk.reallocated_sectors |
{sector} | Reallocated sector count (SATA/SAS) — non-zero indicates drive degradation |
smart.disk.power_on.time |
s | Cumulative power-on time (the drive reports hours; exported as seconds over OTel) |
smart.disk.temperature |
Cel | Drive temperature |
smart.nvme.media_errors |
# | Cumulative media and data integrity errors |
smart.nvme.available_spare |
% | NVMe available spare capacity percentage |
smart.nvme.percentage_used |
% | NVMe lifetime wear indicator |
smart.nvme.data_units_read |
By | Total data read from the NVMe drive |
smart.nvme.data_units_written |
By | Total data written to the NVMe drive |
Operational notes¶
- The agent must run as
rootto allowsmartctlto access drive hardware directly. - Install smartmontools:
apt install smartmontoolsoryum install smartmontools. - Not all drives expose all attributes. The probe silently omits metrics for attributes the drive does not report.
Metric reference¶
Every metric this probe can emit. Metric is the OpenTelemetry name the
OTLP, Prometheus and Zabbix outputs derive theirs from. Name is what a
Nagios check and the API metrics= filter match.
PRTG channel is the label PRTG shows, placeholders filled from the
series' tags.
| Metric | Name | PRTG channel | Unit | Description |
|---|---|---|---|---|
senhub.smart.up |
senhub.smart.up |
S.M.A.R.T. Up | # | 1 when at least one disk could be read, 0 when none could |
senhub.smart.state |
senhub.smart.state |
S.M.A.R.T. State ({reason}) | # | one-hot over ok / no_devices / devices_unreadable / partially_readable — says WHY up has its value, so a host with no disks is distinguishable from one whose disks the agent cannot open |
senhub.smart.devices.found |
senhub.smart.devices.found |
S.M.A.R.T. Devices Found | # | Devices the scan reported, whether or not they could be read |
senhub.smart.devices.readable |
senhub.smart.devices.readable |
S.M.A.R.T. Devices Readable | # | Devices the agent could actually query; below devices.found means a permission or hardware problem |
smart.disk.health |
smart.disk.health |
S.M.A.R.T. Health | # | 1 when the S.M.A.R.T. overall assessment PASSED, 0 when FAILED |
smart.disk.reallocated_sectors |
smart.disk.reallocated_sectors |
Reallocated Sectors | # | Count of sectors remapped to spare area (attribute 5); >0 signals media degradation |
smart.disk.pending_sectors |
smart.disk.pending_sectors |
Pending Sectors | # | Sectors waiting to be remapped (attribute 197); >0 indicates unstable sectors |
smart.disk.uncorrectable_errors |
smart.disk.uncorrectable_errors |
Uncorrectable Errors | # | Offline uncorrectable sectors (attribute 198); persistent read failures |
smart.disk.power_on.time |
smart.disk.power_on_hours |
Power-On Hours | h | Total drive power-on time (attribute 9) |
smart.disk.temperature |
smart.disk.temperature |
Temperature | °C | Drive temperature in degrees Celsius (attribute 194 or NVMe temperature log) |
smart.disk.read_error_rate |
smart.disk.read_error_rate |
Read Error Rate | # | Raw read error rate (attribute 1); high values indicate head or platter issues |
smart.nvme.available_spare |
smart.nvme.available_spare |
NVMe Available Spare | % | Percentage of spare capacity remaining (0-100; <threshold triggers warning) |
smart.nvme.percentage_used |
smart.nvme.percentage_used |
NVMe Wear Level | % | Wear indicator: percentage of rated lifetime consumed (0-100) |
smart.nvme.data_units_read |
smart.nvme.data_units_read |
NVMe Data Units Read | # | Total number of 512-byte data units read (one unit = 1000 × 512 B on most controllers) |
smart.nvme.data_units_written |
smart.nvme.data_units_written |
NVMe Data Units Written | # | Total number of 512-byte data units written |
smart.nvme.media_errors |
smart.nvme.media_errors |
NVMe Media Errors | # | Cumulative media and data integrity errors |
smart.nvme.temperature |
smart.nvme.temperature |
NVMe Temperature | °C | NVMe controller/composite temperature in degrees Celsius |