diff options
author | Nishanth Thomas <nthomas@redhat.com> | 2014-03-19 13:04:54 +0530 |
---|---|---|
committer | Bala.FA <barumuga@redhat.com> | 2014-04-29 10:14:32 +0530 |
commit | 2c0d94f99c51b8ce13f901949e8283909450ff39 (patch) | |
tree | fe861cad929b4bd4ecae0bc8c7f6ab6b63be24b0 /plugins/check_vol_utilization.py | |
parent | 71cdd37492727d427fc0feae978ce60424f4b4df (diff) |
plugins: Added the files for volume utilization and status plugins fixed few issues with code
fixed the pep8 issues
Change-Id: I2c2b32e7bbdc30a7b68acc1ce4e0468fd53a3050
Signed-off-by: Nishanth Thomas <nthomas@redhat.com>
Reviewed-on: https://cuckoo.blr.redhat.com:8443/42
Reviewed-by: Sahina Bose <sabose@redhat.com>
Tested-by: Sahina Bose <sabose@redhat.com>
Diffstat (limited to 'plugins/check_vol_utilization.py')
-rwxr-xr-x | plugins/check_vol_utilization.py | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/plugins/check_vol_utilization.py b/plugins/check_vol_utilization.py new file mode 100755 index 0000000..d0ab5c6 --- /dev/null +++ b/plugins/check_vol_utilization.py @@ -0,0 +1,105 @@ +#!/usr/bin/python +# check_vol_utilization.py -- nagios plugin uses libgfapi output for perf data +# Copyright (C) 2014 Red Hat Inc +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +# + +import sys +import argparse +import capacity +from glusternagios import utils + + +def showVolumeUtilization(vname, warnLevel, critLevel): + buf = {} + try: + buf = capacity.statvfs(vname, "localhost") + except Exception as e: + sys.stdout.write(("Volume Utilization UNKNOWN: %s\n" % str(e))) + 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 # +#statvfs.frsize * statvfs.f_bavail# Number of free bytes that # +#ordinary users are allowed to use (excl. reserved space # +#################################################################### + #total size in KB + total_size = (buf['f_bsize'] * buf['f_blocks']) * 0.000976563 + #Available free size in KB + free_size = (buf['f_bsize'] * buf['f_bavail']) * 0.000976563 + #used size in KB + used_size = total_size - ((buf['f_bsize'] * buf['f_bfree']) * 0.000976563) + vol_utilization = (used_size / total_size) * 100 +# print int(total_size) +# print int(free_size) +# print int(used_size) +# print vol_utilization + 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 + + if int(vol_utilization) > critLevel: + sys.stdout.write( + ("Volume Utilization CRITICAL: Utilization:%s%%" + "| %s\n" % (str(int(vol_utilization)), " ".join(perfLines)))) + sys.exit(utils.PluginStatusCode.CRITICAL) + elif int(vol_utilization) > warnLevel: + sys.stdout.write( + ("Volume Utilization WARNING: Utilization:%s%%" + "| %s\n" % (str(int(vol_utilization)), " ".join(perfLines)))) + sys.exit(utils.PluginStatusCode.WARNING) + else: + sys.stdout.write( + ("Volume Utilization OK: Utilization:%s%%" + "| %s\n" % (str(int(vol_utilization)), " ".join(perfLines)))) + sys.exit(utils.PluginStatusCode.OK) + + +def parse_input(): + + parser = argparse.ArgumentParser( + usage='%(prog)s [-h] <volume> -w <Warning> -c <Critical>') + parser.add_argument("volume", + help="Name of the volume to get the Utilization") + parser.add_argument("-w", + "--warning", + action="store", + type=int, + help="Warning Threshold in percentage") + parser.add_argument("-c", + "--critical", + action="store", + type=int, + help="Critical Threshold in percentage") + args = parser.parse_args() + if not args.critical or not args.warning: + print "UNKNOWN:Missing critical/warning threshold value." + sys.exit(3) + if args.critical <= args.warning: + print "UNKNOWN:Critical must be greater than Warning." + sys.exit(3) + return args + +if __name__ == '__main__': + args = parse_input() + showVolumeUtilization(args.volume, args.warning, args.critical) |