Linux

check_smartmon

Description:

Check disk status with smartmontools.

Current Version

Last Release Date

June 17, 2009

Compatible With


Nagios CSP

Meet The New Nagios Core Services Platform

Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.

Monitoring Made Magically Better

  • Nagios Core on Overdrive
  • Powerful Monitoring Dashboards
  • Time-Saving Configuration Wizards
  • Open Source Powered Monitoring On Steroids
  • And So Much More!
Project Files
Project Notes
Use smartmontools (http://smartmontools.sourceforge.net/) to check disk health status and temperature.
Reviews (5) Add a Review
Running this as unprivileged user
by Nihlaeth, January 31, 2016
I needed to run this as an unprivileged user, so I added a c wrapper that can use setuid root.

I also applied the patch below, fixed a few minor bugs and attempted to improve readability.

The result can be found here: https://github.com/nihlaeth/Nagios_check_smartmon
1 of 1 found this review helpful.
Helpful? Yes 1 No 0
add support for check bad sectors
by xrated, December 31, 2013
As disks with defective sectors are still reported as a healthy disk by Smart, i added checking the Smart IDs 5,196,197,198. An critical error will be reported if any > 0. I have not much clue about python but the patch is working:
http://pastebin.com/yB0w0Px9
Helpful? Yes  No 
performance data
by kohly, March 31, 2011
if temperature > criticalThreshold:
return (2, "CRITICAL: device temperature (%d) exceeds critical temperature threshold (%s)|temperature= %d;%s;%s;" % (temperature, criticalThreshold, temperature, warningThreshold, criticalThreshold))
elif temperature > warningThreshold:
return (1, "WARNING: device temperature (%d) exceeds warning temperature threshold (%s)|temperature= %d;%s;%s;" % (temperature, warningThreshold, temperature, warningThreshold, criticalThreshold))
else:
return (0, "OK: device is functional and stable (temperature: %d)|temperature= %d;%s;%s;" % (temperature, temperature, warningThreshold, criticalThreshold))
Helpful? Yes  No 
deprecation warnings
by atrox, March 31, 2011
To get rid of the deprecation warnings:

--- check_smartmon.py.orig 2011-03-15 15:28:50.000000000 +0200
+++ check_smartmon.py 2011-03-15 15:40:48.000000000 +0200
@@ -28,6 +28,7 @@

import os.path
import sys
+import warnings

from optparse import OptionParser

@@ -111,6 +112,8 @@
# get health status
cmd = "%s -H %s" % (path, device)
vprint(3, "Get device health status: %s" % cmd)
+ # filter out deprecation warnings
+ warnings.filterwarnings('ignore', category=DeprecationWarning, message=r'os.popen3')
(child_stdin, child_stdout, child_stderr) = os.popen3(cmd)
line = child_stderr.readline()
if len(line):
1 of 1 found this review helpful.
Helpful? Yes 1 No 0
Python errors
by bobbydale, December 31, 2010
Running Ubuntu 10.10 64-bit and I receive the following Python errors:

/usr/local/nagios/libexec/check_smartmon:114: DeprecationWarning: os.popen3 is deprecated. Use the subprocess module.
(child_stdin, child_stdout, child_stderr) = os.popen3(cmd)
/usr/local/nagios/libexec/check_smartmon:127: DeprecationWarning: os.popen3 is deprecated. Use the subprocess module.
(child_stdin, child_stdout, child_stderr) = os.popen3(cmd)
OK: device is functional and stable (temperature: 40)

Probably needs to check for what version of Python is being used at top of script and apply commands accordingly later in script.
1 of 2 found this review helpful.
Helpful? Yes 1 No 1
Add a Review

You must be logged in to submit a review.

Thank you for your review!

Your review has been submitted and is pending approval.

Recommend

To:


From:


Thank you for your recommendation!

Your recommendation has been sent.

Project Stats
Rating
3.3 (8)
Favorites
2
Views
194,728