summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorNishanth Thomas <nthomas@redhat.com>2014-04-15 11:53:35 +0530
committerBala.FA <barumuga@redhat.com>2014-04-29 10:21:37 +0530
commit4529ce7d5e539e42ce9d38d09d3badea3f5247ca (patch)
treec67ca568788cad7d5a1b9cde46b99b17151a07c7 /plugins
parent210b28d84f91050fd4a293653d0f5982ae34f189 (diff)
Cluster Status: Plugin to display the overall status of cluster
This plugin use mk-livestatus to retrieve the status of the all the volumes and provide aggregrate status of the cluster Addressed review comments Change-Id: Ia83b41cfdc6dcfc1f379c024ba6ea33f9ccfe598 Signed-off-by: Nishanth Thomas <nthomas@redhat.com>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Makefile.am1
-rwxr-xr-xplugins/check_cluster_status.py74
-rw-r--r--plugins/config_generator.py2
3 files changed, 76 insertions, 1 deletions
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 78d0d8a..9779c2d 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -1,5 +1,6 @@
dist_glusternagiosplugins_PYTHON = \
constants.py \
+ check_cluster_status.py \
check_cluster_vol_usage.py \
check_remote_host.py \
check_vol_server.py \
diff --git a/plugins/check_cluster_status.py b/plugins/check_cluster_status.py
new file mode 100755
index 0000000..ab2a484
--- /dev/null
+++ b/plugins/check_cluster_status.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+#
+# check_cluster_status
+# Aggregated status for a gluster cluster
+# The plugin reads status data using mk-livestatus
+# Assumptions:
+# - Volume utilization service names has "Status"
+#
+# 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
+from argparse import ArgumentParser
+import livestatus
+from glusternagios import utils
+
+
+def findClusterStatus(clusterName):
+ exitStatus = utils.PluginStatusCode.OK
+ # Write command to socket
+ cmd = "GET services\nColumns: state\n" \
+ "Filter: description ~~ %s\n" \
+ "Filter: host_name = %s" % ('Volume Status', clusterName)
+ table = livestatus.readLiveStatus(cmd)
+ noOfVolumesInCriticalState = 0
+ noOfVolumes = len(table)
+ for row in table:
+ if len(row) > 0 and row[0] == '2':
+ noOfVolumesInCriticalState += 1
+ if noOfVolumesInCriticalState == noOfVolumes:
+ print "Cluster Status CRITICAL: All Volumes are in Critical State " \
+ "| noOfVolumes=%s noOfVolumesInCriticalState=%s" \
+ % (noOfVolumes, noOfVolumesInCriticalState)
+ exitStatus = utils.PluginStatusCode.CRITICAL
+ elif noOfVolumesInCriticalState > 0:
+ print "Cluster Status WARNING : Some Volumes are in Critical State " \
+ "| noOfVolumes=%s noOfVolumesInCriticalState=%s" \
+ % (noOfVolumes, noOfVolumesInCriticalState)
+ exitStatus = utils.PluginStatusCode.WARNING
+ else:
+ print "Cluster Status OK : None of the Volumes are in Critical " \
+ "State | noOfVolumes=%s noOfVolumesInCriticalState=%s" \
+ % (noOfVolumes, noOfVolumesInCriticalState)
+ return exitStatus
+
+
+def parse_input():
+
+ parser = ArgumentParser(usage='%(prog)s [-h] <cluster>')
+ parser.add_argument("cluster", help="Name of the cluster")
+ args = parser.parse_args()
+ return args
+
+
+# Main method
+if __name__ == "__main__":
+ args = parse_input()
+ # Find the cluster status
+ exitStatus = findClusterStatus(args.cluster)
+ sys.exit(exitStatus)
diff --git a/plugins/config_generator.py b/plugins/config_generator.py
index 6d725ef..49ea335 100644
--- a/plugins/config_generator.py
+++ b/plugins/config_generator.py
@@ -167,7 +167,7 @@ class GlusterNagiosConfManager:
cluster['name'], cluster['hosts'][-1]['hostip']))
clusterHostConfig = self.createHost(
cluster['name'], cluster['name'], "gluster-cluster",
- cluster['name'], "", "check_dummy", clusterServices)
+ cluster['name'], "", "", clusterServices)
hostsConfigs.append(clusterHostConfig)
for host in cluster['hosts']:
brickServices = self.createBrickServices(host)