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.3.3.dev26.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

pySMART_exporter-0.3.3.dev26-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file pysmart_exporter-0.3.3.dev26.tar.gz.

File metadata

File hashes

Hashes for pysmart_exporter-0.3.3.dev26.tar.gz
Algorithm Hash digest
SHA256 21ea025cbe819738e3848be18caeda1ab2fea3a58b19f9df2b853d5c2d279e9e
MD5 1ada1908d6f92f2e7311f47193abe29f
BLAKE2b-256 2e27dca3560785c7210d0c0986feb8d24228596fbf09a73212ae7f02abe70e9c

See more details on using hashes here.

Provenance

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

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

Attestations:

File details

Details for the file pySMART_exporter-0.3.3.dev26-py3-none-any.whl.

File metadata

File hashes

Hashes for pySMART_exporter-0.3.3.dev26-py3-none-any.whl
Algorithm Hash digest
SHA256 118cf74b6108ee1601a2f09d470b273751ed42efaaf88f7b29e51864fb2b63eb
MD5 3059a71f49a6f1ffc3184ad15bfa1b58
BLAKE2b-256 93cfff31903a6b987720e00d5a670df84416fa2a030d5399868be3f883625716

See more details on using hashes here.

Provenance

The following attestation bundles were made for pySMART_exporter-0.3.3.dev26-py3-none-any.whl:

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

Attestations:

Supported by

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