Example Graph

smart_ - Munin wildcard-plugin to monitor S.M.A.R.T. attribute values through smartctl


Node with Python interpreter and smartmontools ( installed and in function.


Create link in service directory

To monitor a S.M.A.R.T device, create a link in the service directory of the munin-node named smart_<device>, which is pointing to this file.


ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_hda

...will monitor /dev/hda.

Grant privileges in munin-node

The plugin must be run under high privileged user root, to get access to the raw device.

So following minimal configuration in plugin-conf.d/munin-node is needed.

  user root
  group disk

Set Parameter if needed

  smartpath     - Specify path to smartctl program (Default: /usr/sbin/smartctl)
  smartargs     - Override '-a' argument passed to smartctl with '-A -i'+smartargs
  ignorestandby - Ignore the standby state of the drive and perform SMART query. Default: False
  ignoreexit    - Bits in smartctl exit code to ignore, e.g. 64. Default: 0

Parameters can be specified on a per-drive basis, eg:

  user root
  env.smartargs -H -c -l error -l selftest -l selective -d ata
  env.smartpath /usr/local/sbin/smartctl

In particular, for SATA drives, with older versions of smartctl:

  user root
  env.smartargs -d ata -a

  user root
  env.smartargs -H -l error -d 3ware,1
  env.ignorestandby True

  user root
  env.smartargs -H -l error -d 3ware,2

The ignoreexit parameter can be useful to exclude some bits in smartctl exit code, which is a bit mask described in its main page, from consideration. For example, if the drive had any errors in the past, the exit code would always have its bit 6 ("The device error log contains records of errors.") set, even if the errors happened a long time ago and are not relevant any more. To avoid getting munin warnings about this you can use

  env.ignoreexit 64


If a device supports the Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.) it offers readable access to the attribute table. There you find the raw value, a normalised value and a threshold (set by the vendor) for each attribute, that is supported by that device.

The meaning and handling of the raw value is a secret of the vendors embedded S.M.A.R.T.-Software on the disk. The only relevant info from our external view is the normalised value in comparison with the threshold. If the attributes value is equal or below the threshold, it signals its failure and the health status of the device will switch from passed to failed.

This plugin fetches the normalised values of all SMART-Attributes and draw a curve for each of them. It takes the vendors threshold as critical limit for the munin datafield. So you will see an alarm, if the value reaches the vendors threshold.

Looking at the graph: It is a bad sign, if the curve starts to curl or to meander. The more horizontal it runs, the better. Of course it is normal, that the temperatures curve swings a bit. But the others should stay steady on their level if everything is ok.

S.M.A.R.T. distinguishes between Pre-fail and Old-age Attributes. An old disk will have more curling curves because of degradation, especially for the Old-age Attributes. You should then backup more often, run more selftests[1] and prepare the disks replacement.

Act directly, if a <Pre-Fail> Attribute goes below threshold. Immediately back-up your data and replace your hard disk drive. A failure may be imminent..

[1] Consult the smartmontools manpages to learn about offline tests and automated selftests with smartd. Only with both activated, the values of the SMART-Attributes reflect the all over state of the device.

Tutorials and articles about S.M.A.R.T. and smartmontools:


 #%# family=auto
 #%# capabilities=autoconf suggest



Fetches values if called without arguments:

E.g.: munin-run smart_hda


Prints plugins configuration.

E.g.: munin-run smart_hda config


Tries to find smartctl and outputs value 'yes' for success, 'no' if not.

It's used by munin-node-configure to see whether autoconfiguration is possible.


Outputs the list of device names, that it found plugged to the system.

munin-node-configure use this to build the service links for this wildcard-plugin.


Version 2.2


None known


(C) 2004-2009 Nicolas Stransky <>

(C) 2008 Gabriele Pohl <> Reformated existent documentation to POD-Style, added section Interpretation to the documentation.


GPLv2 (