check_smartmon is a Nagios-Plugin that uses smartmontools ( to check disk health status and temperature.


Adjust the first line to your Python binary (e.g. /usr/local/bin/python or /usr/bin/python) and the path to your smartctl binary (e.g. /usr/local/sbin/smartctl or /usr/sbin/smartctl).


Use check_smartmon -h to get a list of options. You will see the following output:

usage: check_smartmon [options]

  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -d DEVICE, --device=DEVICE
                        device to check
  -v LEVEL, --verbosity=LEVEL
                        set verbosity level to LEVEL; defaults to 0 (quiet),
                        possible values go up to 3
  -w TEMP, --warning-threshold=TEMP
                        set temperature warning threshold to given temperature
                        (defaults to 55)
  -c TEMP, --critical-threshold=TEMP
                        set temperature critical threshold to given
                        temperature (defaults to 60)


Read the Nagios documentation and create a command definition and Example:

# 'check_smartmon' command definition
define command{
        command_name    check_smartmon
        command_line    $USER1$/check_smartmon -d $ARG1$


# check local disk S.M.A.R.T. status
define service{
        use                             generic-service
        host_name                       localhost
        service_description             Check local disk S.M.A.R.T. status
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              4
        normal_check_interval           5
        retry_check_interval            1
        contact_groups                  admins
        notification_options            w,u,c,r
        notification_interval           960
        notification_period             24x7
        check_command                   check_smartmon!/dev/ad0

The device /dev/ad0 is used on FreeBSD systems, so if you run another system you must set the appropriate name.


Project Link: Author: fuller