Skip to main content

A Prometheus PySMART exporter

Project description

pySMART-exporter

Copyright (C) 2021 Rafael Leira, Naudit HPCN S.L.

pySMART-exporter is a Python Prometheus exporter for collecting and exposing S.M.A.R.T. metrics of storage devices. It leverages the pySMART library and integrates Prometheus client library functionalities for HTTP publication or file-based metric exports.


Features

  • Collects S.M.A.R.T. metrics from storage devices.
  • Supports Prometheus integration via HTTP or text-based node collector files.
  • Includes support for various storage interfaces, including NVMe attributes and diagnostics.

Installation

The pySMART-exporter can be installed via PyPI:

python -m pip install pySMART-exporter

Ensure that smartctl from the smartmontools package is installed, as it is a prerequisite. For most Linux distributions, use your package manager:

sudo apt-get install smartmontools

# or

sudo yum install smartmontools

Usage

The exporter supports two modes: server mode (HTTP) and file mode (node exporter textfile). It should run as a privileged user to access disk information.

Server Mode

To run the exporter in server mode, execute the following command:

pysmart_exporter -l 0.0.0.0:9099

Then configure Prometheus to scrape metrics from the endpoint.

File Mode

To generate a one-time metric file for use with a Prometheus node exporter:

pysmart_exporter -f /path/to/output/file.txt -1

To continuously generate metric files at a set interval (e.g., 60 seconds):

pysmart_exporter -f /path/to/output/file.txt -i 60

Example Metrics Output

Below is a sample of the metrics exposed by pySMART-exporter:

# HELP pysmart_info PySMART metric info
# TYPE pysmart_info gauge
pysmart_info{device="nvme0",firmware="ADHA0101",interface="nvme",model="KBG30ZMV256G TOSHIBA",rotation="None",serial="*********12P",size="256000000000",size_raw="256 GB",smart_capable="True",smart_enabled="True",ssd="True"} 1.0
# HELP pysmart_assessment PySMART metric assessment
# TYPE pysmart_assessment gauge
pysmart_assessment{device="nvme0",interface="nvme",pysmart_assessment="PASS"} 1.0
# HELP pysmart_temperature PySMART metric temperature
# TYPE pysmart_temperature gauge
pysmart_temperature{device="nvme0",interface="nvme"} 44.0
# HELP pysmart_size PySMART metric size
# TYPE pysmart_size gauge
pysmart_size{device="nvme0",interface="nvme"} 2.56e+011
# HELP pysmart_test_capabilities PySMART metric test_capabilities
# TYPE pysmart_test_capabilities gauge
pysmart_test_capabilities{device="nvme0",interface="nvme",pysmart_test_capabilities="short"} 1.0

CLI Options

Option Description
-f, --textfile-name Path to the file where metrics will be stored for node collection.
-l, --listen Host and port to listen on in HTTP server mode (e.g., 0.0.0.0:9417).
-i, --interval Interval (in seconds) between metric updates. Default: 60.
-1, --oneshot Run only once and exit (useful for cron jobs).
-q, --quiet Suppress error messages and warnings.
--include Comma-separated list of devices to include (e.g., nvme0,/dev/sda).
--exclude Comma-separated list of devices to exclude.
--metric-prefix Custom prefix for metrics. Default: pysmart.
--metrics Comma-separated list of specific metrics to export (e.g., temperature,size,assessment_passed).

Metrics

Metric Name Type Description Labels
pysmart_info info General information about the disk, including model, firmware, size, and other static attributes. device, interface, model, serial, firmware, rotation, size_raw, size, ssd, smart_capable, smart_enabled, vendor, sector_size, and more.
pysmart_assessment_passed gauge Assessment of the disk's health. 1 for PASS, 0 otherwise. device, interface
pysmart_temperature gauge Current temperature of the disk in Celsius. device, interface
pysmart_size gauge Disk size in bytes. device, interface
pysmart_attribute_value gauge SMART attribute values such as error counts, read/write metrics, etc. device, name (attribute name), num, type, flags, updated, whenfailed, and more depending on attribute.
pysmart_attribute_thresh gauge Threshold values for SMART attributes. Similar to pysmart_attribute_value
pysmart_attribute_worst gauge The worst recorded value for a given SMART attribute. Similar to pysmart_attribute_value
pysmart_attribute_raw gauge The raw value for a SMART attribute. Similar to pysmart_attribute_value
pysmart_diagnostics_* gauge Disk diagnostic statistics, including errors and other health-related data. device, interface
pysmart_test_capabilities state Types of self-tests supported by the disk (e.g., short, long, offline). device, interface
pysmart_test gauge Details about completed or pending disk self-tests. device, type (test type), status, hours, num, and other self-test details.

Installation

pySMART-exporter is available on PyPI and installable via pip::

python -m pip install pySMART-exporter

The only external (non-python) dependency is the smartctl component of the smartmontools package. This should be pre-installed in most Linux distributions, or it can be obtained through your package manager. Likely one of the following::

apt-get install smartmontools
    or
yum install smartmontools

License

This program is distributed under the terms of the license specified in the LICENSE file.


References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysmart_exporter-0.4.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysmart_exporter-0.4.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file pysmart_exporter-0.4.1.tar.gz.

File metadata

  • Download URL: pysmart_exporter-0.4.1.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pysmart_exporter-0.4.1.tar.gz
Algorithm Hash digest
SHA256 86273695ff592838e16fc29496bd46ffddaaa93f2f63595a11ae60b18a9b54c6
MD5 8f679193b8b24e2794ceccbf98061d5f
BLAKE2b-256 444685184aad3fbc44d06d502e3c56961f6331abdf67c0cae764894024305059

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysmart_exporter-0.4.1.tar.gz:

Publisher: publish-to-pypi.yml on Naudit/pySMART-exporter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pysmart_exporter-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pysmart_exporter-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 395d62d4a434069975a8628233e435489b43198cfa9720de413fda45d49a07d2
MD5 3339efc326022bab6e35b395ba3c255a
BLAKE2b-256 3e62ab5ad4120c52033520b86833796418f63fac0cd1bbfc07339a365ddceb89

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysmart_exporter-0.4.1-py3-none-any.whl:

Publisher: publish-to-pypi.yml on Naudit/pySMART-exporter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page