From 3ce8475c3e3ace39696d83e45c249f22554d4602 Mon Sep 17 00:00:00 2001 From: Sahina Bose Date: Mon, 9 Jun 2014 15:11:49 +0530 Subject: plugins: nrpe plugin to check volumes with server quorum Added a plugin to check if any volume in the cluster has the server side quorum turned on Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1106421 Change-Id: I897aedd737a622832548e7470e8f3cf9fb7dbc2c Signed-off-by: Sahina Bose Reviewed-on: http://review.gluster.org/8016 Reviewed-by: darshan n Reviewed-by: Ramesh N --- plugins/Makefile.am | 1 + plugins/check_quorum_status.py | 54 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100755 plugins/check_quorum_status.py (limited to 'plugins') diff --git a/plugins/Makefile.am b/plugins/Makefile.am index ffc121f..b5e522e 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -11,6 +11,7 @@ crond_DATA = \ dist_glusternagiosplugins_PYTHON = \ check_gluster_syslog.py \ check_mounts.py \ + check_quorum_status.py \ check_vol_utilization.py \ check_volume_status.py \ check_proc_status.py \ diff --git a/plugins/check_quorum_status.py b/plugins/check_quorum_status.py new file mode 100755 index 0000000..b3994c9 --- /dev/null +++ b/plugins/check_quorum_status.py @@ -0,0 +1,54 @@ +#!/usr/bin/python +# 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 +# +from glusternagios import utils +from glusternagios import glustercli + + +def getClusterQuorumStatus(): + exitstatus = 0 + message = "" + try: + volumes = glustercli.volumeInfo() + except glustercli.GlusterLockedException as e: + out = ("UNKNOWN: temporary error. %s" % '.'.join(e.err)) + return utils.PluginStatusCode.UNKNOWN, out + except glustercli.GlusterCmdFailedException as e: + out = ("Quorum status could not be determined. %s" + % '.'.join(e.err)) + return utils.PluginStatusCode.WARNING, out + + quorumVolumes = [] + for volumename, volume in volumes.iteritems(): + if (volume.get('options') and + volume.get('options').get('cluster.server-quorum-type') + == "server"): + quorumVolumes.append(volumename) + if not quorumVolumes: + exitstatus = utils.PluginStatusCode.UNKNOWN + message = "Server quorum not turned on for any volume" + else: + exitstatus = utils.PluginStatusCode.OK + message = ("Server quorum turned on for %s" + % (','.join(quorumVolumes))) + return exitstatus, message + + +if __name__ == '__main__': + exitstatus, message = getClusterQuorumStatus() + print message + exit(exitstatus) -- cgit