summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSahina Bose <sabose@redhat.com>2014-04-21 16:32:37 +0530
committerBala.FA <barumuga@redhat.com>2014-04-29 10:14:33 +0530
commitffbcb9f68641db3cc815275b48861b817d43bbd4 (patch)
treee10438a445ea9bc6f25294482c8afe1f813c7daa
parent3cce71403b424fb9d37e3a2f381426bb43a06b24 (diff)
plugins: Added self heal status option
Added self-heal status option to the check_volume_status plugin Change-Id: Ia48f7baa3b6e4f0091be2116ab058ab48f1e5a29 Signed-off-by: Sahina Bose <sabose@redhat.com>
-rw-r--r--gluster-nagios-addons.spec.in9
-rwxr-xr-xplugins/check_volume_status.py34
2 files changed, 37 insertions, 6 deletions
diff --git a/gluster-nagios-addons.spec.in b/gluster-nagios-addons.spec.in
index cf21335..e77be7c 100644
--- a/gluster-nagios-addons.spec.in
+++ b/gluster-nagios-addons.spec.in
@@ -132,10 +132,11 @@ command[check_memory]=%{_libdir}/nagios/plugins/gluster/memory.py -w 80 -c 90
command[check_swap_usage]=%{_libdir}/nagios/plugins/gluster/swap.py -w 80 -c 90
command[check_cpu_multicore]=%{_libdir}/nagios/plugins/gluster/cpu.py -w 80 -c 90
command[check_interfaces]=%{_libdir}/nagios/plugins/gluster/network.py -e lo -e ';vdsmdummy;'
-command[check_brick_usage]=/usr/lib64/nagios/plugins/gluster/check_disk_and_inode.py -w 80 -c 90 -u MB -n -i \$ARG1\$
-command[check_vol_utilization]=sudo /usr/lib64/nagios/plugins/gluster/check_vol_utilization.py \$ARG1\$ -w \$ARG2\$ -c \$ARG3\$
-command[check_vol_status]=sudo /usr/lib64/nagios/plugins/gluster/check_volume_status.py -v \$ARG1\$ -t info
-command[check_vol_quota_status]=sudo /usr/lib64/nagios/plugins/gluster/check_volume_status.py -v \$ARG1\$ -t quota
+command[check_brick_usage]=%{_libdir}/nagios/plugins/gluster/check_disk_and_inode.py -w 80 -c 90 -u MB -n -i \$ARG1\$
+command[check_vol_utilization]=sudo %{_libdir}/nagios/plugins/gluster/check_vol_utilization.py \$ARG1\$ -w \$ARG2\$ -c \$ARG3\$
+command[check_vol_status]=sudo %{_libdir}/nagios/plugins/gluster/check_volume_status.py -v \$ARG1\$ -t info
+command[check_vol_quota_status]=sudo %{_libdir}/nagios/plugins/gluster/check_volume_status.py -v \$ARG1\$ -t quota
+command[check_vol_heal_status]=sudo %{_libdir}/nagios/plugins/gluster/check_volume_status.py -v \$ARG1\$ -t self-heal
###Auto Discovery related
command[discoverpeers]=%{_libdir}/nagios/plugins/gluster/discoverpeers.py
command[discoverlogicalcomponents]=sudo %{_libdir}/nagios/plugins/gluster/discoverlogicalcomponents.py
diff --git a/plugins/check_volume_status.py b/plugins/check_volume_status.py
index 7c72ef9..5f0e067 100755
--- a/plugins/check_volume_status.py
+++ b/plugins/check_volume_status.py
@@ -54,7 +54,8 @@ def getVolumeQuotaStatus(args):
try:
status = glustercli.volumeQuotaStatus(args.volume)
except glustercli.GlusterCmdFailedException as e:
- out = ("QUOTA: Quota status could not be determined %s" % e.message)
+ out = ("QUOTA: Quota status could not be determined %s"
+ % '.'.join(e.err))
return utils.PluginStatusCode.UNKNOWN, out
if status == glustercli.VolumeQuotaStatus.EXCEEDED:
@@ -65,6 +66,33 @@ def getVolumeQuotaStatus(args):
return utils.PluginStatusCode.OK, "QUOTA: OK"
+def getVolumeSelfHealStatus(args):
+ try:
+ volume = glustercli.volumeHealSplitBrainStatus(args.volume)
+ except glustercli.GlusterCmdFailedException as e:
+ out = ("Self heal status could not be determined - %s"
+ % '.'.join(e.err))
+ return utils.PluginStatusCode.WARNING, out
+
+ if volume.get(args.volume) is None:
+ exitstatus = utils.PluginStatusCode.UNKNOWN
+ message = "UNKNOWN: Volume self heal info not found"
+ else:
+ if (volume[args.volume]['status'] == glustercli.
+ VolumeSplitBrainStatus.NOTAPPLICABLE):
+ exitstatus = utils.PluginStatusCode.OK
+ message = "Volume is not of replicate type"
+ elif (volume[args.volume]['status'] == glustercli.
+ VolumeSplitBrainStatus.OK):
+ exitstatus = utils.PluginStatusCode.OK
+ message = "No unsynced entries present"
+ elif (volume[args.volume]['status'] == glustercli.
+ VolumeSplitBrainStatus.SPLITBRAIN):
+ exitstatus = utils.PluginStatusCode.CRITICAL
+ message = ("Unsynced entries present %s"
+ % (volume[args.volume]['unsyncedentries']))
+ return exitstatus, message
+
def parse_input():
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--volume", action="store",
@@ -74,7 +102,7 @@ def parse_input():
default="info",
dest="type",
help="Type of status to be shown. Possible values:",
- choices=["info", "quota"])
+ choices=["info", "quota", "self-heal"])
args = parser.parse_args()
return args
@@ -85,5 +113,7 @@ if __name__ == '__main__':
exitstatus, message = getVolumeStatus(args)
if args.type == "quota":
exitstatus, message = getVolumeQuotaStatus(args)
+ if args.type == "self-heal":
+ exitstatus, message = getVolumeSelfHealStatus(args)
print message
exit(exitstatus)