Build precise queries to find exactly what you need
Press ESC to close
Join our next live webinar: “Advanced Nagios Monitoring Techniques” – Register Now
Your review has been submitted and is pending approval.
Check disk status with smartmontools.
Current Version
Last Release Date
June 17, 2009
Owner
Nagios Exchange
Website
http://sourceforge.net/projects/smartmontools/
Download URL
http://sourceforge.net/apps/trac/smartmontools/wiki/Download
Compatible With
Plugin file
License
Readme
Use smartmontools (http://smartmontools.sourceforge.net/) to check disk health status and temperature.
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
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
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))
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):
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.
You must be logged in to submit a review.
To:
From: