summaryrefslogtreecommitdiffstats
path: root/plugins/check_cluster_vol_usage.py
diff options
context:
space:
mode:
authorSahina Bose <sabose@redhat.com>2014-05-15 18:04:22 +0530
committerSahina Bose <sabose@redhat.com>2014-05-29 02:34:55 -0700
commiteb64fd4b46d334ddfda60a815e1655cb72bf68a2 (patch)
tree5913f1253a4a3a591ea53efb0c83e0e2b838d3ac /plugins/check_cluster_vol_usage.py
parent00fef945e7f0125394845f8c995690c74b4c4337 (diff)
server-plugins: Corrected cluster utilization when volume stopped
Corrected the message returned by plugin when all volumes in cluster are stopped Change-Id: Ie5e0fbbb10fa7d2787a82e1caa7ca86e8c7010a3 Bug-Url: https://bugzilla.redhat.com/1096730 Signed-off-by: Sahina Bose <sabose@redhat.com> Reviewed-on: http://review.gluster.org/7780
Diffstat (limited to 'plugins/check_cluster_vol_usage.py')
-rwxr-xr-xplugins/check_cluster_vol_usage.py39
1 files changed, 26 insertions, 13 deletions
diff --git a/plugins/check_cluster_vol_usage.py b/plugins/check_cluster_vol_usage.py
index 21439b0..522a42e 100755
--- a/plugins/check_cluster_vol_usage.py
+++ b/plugins/check_cluster_vol_usage.py
@@ -30,6 +30,8 @@
import sys
import re
from argparse import ArgumentParser
+import json
+
import livestatus
from glusternagios import utils
@@ -37,25 +39,31 @@ from glusternagios import utils
def checkVolumePerfData(clusterName):
# Write command to socket
- cmd = "GET services\nColumns: description host_name " \
- "perf_data custom_variables\nFilter: " \
- "description ~~ %s" % 'Volume Utilization -'
- table = livestatus.readLiveStatus(cmd)
+ cmd = ("GET services\nColumns: description host_name "
+ "perf_data custom_variables\n"
+ "Filter: host_name = %s\n"
+ "Filter: description ~~ %s\n"
+ % (clusterName, 'Volume Utilization -'))
+
+ perf_data_output = livestatus.readLiveStatusAsJSON(cmd)
+ perf_data = json.loads(perf_data_output)
+ numvolumes = 0
totalUsed = 0.0
totalAvail = 0.0
- for row in table:
+ for row in perf_data:
+ numvolumes += 1
if len(row) <= 3:
return 0.0, 0.0
- host = row[1]
+
perf_data = row[2]
if len(perf_data) > 2:
perf_arr = perf_data.split(' ')
used = perf_arr[2].split('=')[1]
avail = perf_arr[1].split('=')[1]
- if host == clusterName:
- totalUsed += float(re.match(r'\d*\.?\d+', used).group())
- totalAvail += float(re.match(r'\d*\.?\d+', avail).group())
- return totalUsed, totalAvail
+
+ totalUsed += float(re.match(r'\d*\.?\d+', used).group())
+ totalAvail += float(re.match(r'\d*\.?\d+', avail).group())
+ return numvolumes, totalUsed, totalAvail
# Main method
if __name__ == "__main__":
@@ -82,13 +90,18 @@ if __name__ == "__main__":
required=True)
args = parser.parse_args()
# Check the various performance statuses for the host
- used, avail = checkVolumePerfData(args.hostgroup)
+ numVolumes, used, avail = checkVolumePerfData(args.hostgroup)
statusstr = utils.PluginStatus.OK
exitstatus = utils.PluginStatusCode.OK
- if used == 0 and avail == 0:
+ if numVolumes == 0:
+ statusstr = utils.PluginStatus.OK
+ exitstatus = utils.PluginStatusCode.OK
+ print ("%s - No volumes found|used=0;%s;%s;0;%s;"
+ % (statusstr, args.warn, args.crit, 100))
+ elif numVolumes > 0 and used == 0 and avail == 0:
statusstr = utils.PluginStatus.UNKNOWN
exitstatus = utils.PluginStatusCode.UNKNOWN
- print ("%s - No volumes found" % statusstr)
+ print ("%s - Volume utilization data could not be read" % statusstr)
else:
warn = int((args.warn * avail) / 100.0)
crit = int((args.crit * avail) / 100.0)