summaryrefslogtreecommitdiffstats
path: root/plugins/check_vol_utilization.py
diff options
context:
space:
mode:
authorNishanth Thomas <nthomas@redhat.com>2014-06-20 18:44:27 +0530
committerSahina Bose <sabose@redhat.com>2014-06-20 08:28:31 -0700
commit9f49d1b5bf1918e73794d4492ea5b7f2e7ac4e45 (patch)
tree0396539889cc435a076c9617497eef0dd3555613 /plugins/check_vol_utilization.py
parent292b1c51bb7a93d0f3218ab3c7c5286bc095a7d9 (diff)
gluster-nagios-addons: Volume utilization returns negative values when size in TB
data overflow error in volcap.c. statvfs returns unsigned long which is boxed into int causing the error Change-Id: I85a1e0d584bf4d9e73b2bfebebea83cd9fbddf68 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1111558 Signed-off-by: Nishanth Thomas <nthomas@redhat.com> Reviewed-on: http://review.gluster.org/8136 Tested-by: Nishanth Thomas <nishusemail@gmail.com> Reviewed-by: Shubhendu Tripathi <shtripat@redhat.com> Reviewed-by: Bala FA <barumuga@redhat.com> Reviewed-by: Sahina Bose <sabose@redhat.com>
Diffstat (limited to 'plugins/check_vol_utilization.py')
-rwxr-xr-xplugins/check_vol_utilization.py32
1 files changed, 13 insertions, 19 deletions
diff --git a/plugins/check_vol_utilization.py b/plugins/check_vol_utilization.py
index ab58e58..8500df0 100755
--- a/plugins/check_vol_utilization.py
+++ b/plugins/check_vol_utilization.py
@@ -32,8 +32,6 @@ def showVolumeUtilization(vname, warnLevel, critLevel):
sys.stdout.write("UNKNOWN: Failed to get the "
"Volume Utilization Data\n")
sys.exit(utils.PluginStatusCode.UNKNOWN)
-# print buf
-
####################################################################
#statvfs.frsize * statvfs.f_blocks# Size of filesystem in bytes #
#statvfs.frsize * statvfs.f_bfree # Actual number of free bytes #
@@ -41,35 +39,31 @@ def showVolumeUtilization(vname, warnLevel, critLevel):
#ordinary users are allowed to use (excl. reserved space #
####################################################################
#total size in KB
- total_size = (buf['f_bsize'] * buf['f_blocks']) * 0.000976563
+ total_size = (buf['f_bsize'] * buf['f_blocks']) / 1024.0
#Available free size in KB
- free_size = (buf['f_bsize'] * buf['f_bavail']) * 0.000976563
+ free_size = (buf['f_bsize'] * buf['f_bavail']) / 1024.0
#used size in KB
- used_size = total_size - ((buf['f_bsize'] * buf['f_bfree']) * 0.000976563)
+ used_size = total_size - ((buf['f_bsize'] * buf['f_bfree']) / 1024.0)
vol_utilization = (used_size / total_size) * 100
perfLines = []
- perfLines.append(("utilization=%s%%;%s;%s total=%s "
- "used=%s free=%s" % (str(int(vol_utilization)),
- str(warnLevel), str(critLevel),
- str(int(total_size)),
- str(int(used_size)),
- str(int(free_size)))))
-# print perfLines
-
+ perfLines.append(("utilization=%.2f%%;%d;%d total=%0.2f "
+ "used=%0.2f free=%0.2f" % (vol_utilization, warnLevel,
+ critLevel, total_size,
+ used_size, free_size)))
if int(vol_utilization) > critLevel:
sys.stdout.write(
- ("CRITICAL: Utilization:%s%%"
- "| %s\n" % (str(int(vol_utilization)), " ".join(perfLines))))
+ ("CRITICAL: Utilization:%0.2f%%"
+ "| %s\n" % (vol_utilization, " ".join(perfLines))))
sys.exit(utils.PluginStatusCode.CRITICAL)
elif int(vol_utilization) > warnLevel:
sys.stdout.write(
- ("WARNING: Utilization:%s%%"
- "| %s\n" % (str(int(vol_utilization)), " ".join(perfLines))))
+ ("WARNING: Utilization:%0.2f%%"
+ "| %s\n" % (vol_utilization, " ".join(perfLines))))
sys.exit(utils.PluginStatusCode.WARNING)
else:
sys.stdout.write(
- ("OK: Utilization:%s%%"
- "| %s\n" % (str(int(vol_utilization)), " ".join(perfLines))))
+ ("OK: Utilization:%0.2f%%"
+ "| %s\n" % (vol_utilization, " ".join(perfLines))))
sys.exit(utils.PluginStatusCode.OK)