summaryrefslogtreecommitdiffstats
path: root/plugins/check_gluster_proc_status.py
diff options
context:
space:
mode:
authorRamesh Nachimuthu <rnachimu@redhat.com>2014-05-07 15:23:55 +0530
committerSahina Bose <sabose@redhat.com>2014-05-07 06:40:00 -0700
commit4c63ceaf48a3641adb4e087125d6698fa857ad37 (patch)
tree78a9a13f971d7e02811115e36756a3c2759200dd /plugins/check_gluster_proc_status.py
parenta4f97c15206c4930e6336c7a1fba67a231615486 (diff)
nagios-addons: Add NRPE command for gluster processes
Adding NRPE command for all process related services. We already have passive checks through NSCA for all these services and bricks. But passive checks are submitted only when there is a state change and Nagios may miss those check results if those services are not cofigured when we submit passive checks. So, we should have active checks running atleast for the first time to determine the initial status of the service Command 'check_proc_status' helps to check the status of all gluster related process Command 'check_brick_status' helps to check the status of bricks in the host. Change-Id: I1f442c0c1e54d606576bc0814044f2f149bca220 Signed-off-by: Ramesh Nachimuthu <rnachimu@redhat.com> Reviewed-on: http://review.gluster.org/7694 Reviewed-by: Kanagaraj M <kmayilsa@redhat.com> Reviewed-by: Sahina Bose <sabose@redhat.com>
Diffstat (limited to 'plugins/check_gluster_proc_status.py')
-rwxr-xr-xplugins/check_gluster_proc_status.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/plugins/check_gluster_proc_status.py b/plugins/check_gluster_proc_status.py
new file mode 100755
index 0000000..bc15672
--- /dev/null
+++ b/plugins/check_gluster_proc_status.py
@@ -0,0 +1,90 @@
+#!/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
+#
+
+import argparse
+
+import check_proc_util
+from glusternagios import utils
+from glusternagios import glustercli
+
+
+_NFS = "NFS"
+_SMB = "CIFS"
+_CTDB = "CTDB"
+_SHD = "SHD"
+_QUOTA = "QUOTA"
+_BRICK = "BRICK"
+_GLUSTERD = "GLUSTERD"
+
+
+def parse_input():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-t", "--type", action="store", dest="type",
+ required=True,
+ help="Type of status to be shown. Possible values:",
+ choices=[_NFS, _SMB, _CTDB, _SHD, _QUOTA, _BRICK,
+ _GLUSTERD])
+ parser.add_argument("-v", "--volume", action="store", required=False,
+ help="Name of the volume for status")
+ parser.add_argument("-b", "--brickPath", action="store", required=False,
+ help="Brick Path")
+ args = parser.parse_args()
+ return args
+
+
+def _findBrickName(volInfo, brickPath):
+ hostUuid = glustercli.hostUUIDGet()
+ for volumeName, volumeInfo in volInfo.iteritems():
+ for brick in volumeInfo['bricksInfo']:
+ if brick.get('hostUuid') == hostUuid \
+ and brick['name'].split(':')[1] == brickPath:
+ return brick['name']
+
+
+if __name__ == '__main__':
+ args = parse_input()
+ status, msg = check_proc_util.getGlusterdStatus()
+ if status == utils.PluginStatusCode.OK:
+ if args.type == _NFS:
+ status, msg = check_proc_util.getNfsStatus(glustercli.volumeInfo())
+ elif args.type == _SMB:
+ status, msg = check_proc_util.getSmbStatus(glustercli.volumeInfo())
+ elif args.type == _SHD:
+ status, msg = check_proc_util.getShdStatus(glustercli.volumeInfo())
+ elif args.type == _QUOTA:
+ status, msg = check_proc_util.getQuotadStatus(
+ glustercli.volumeInfo())
+ elif args.type == _CTDB:
+ volInfo = glustercli.volumeInfo()
+ nfsStatus, nfsMsg = check_proc_util.getNfsStatus(volInfo)
+ smbStatus, smbMsg = check_proc_util.getSmbStatus(volInfo)
+ status, msg = check_proc_util.getCtdbStatus(smbStatus, nfsStatus)
+ elif args.type == _BRICK:
+ volInfo = glustercli.volumeInfo(args.volume)
+ brickName = _findBrickName(volInfo, args.brickPath)
+ if brickName:
+ status, msg = check_proc_util.getBrickStatus(args.volume,
+ brickName)
+ else:
+ status = utils.PluginStatusCode.CRITICAL
+ msg = "Brick - %s not found" % args.brickPath
+ elif args.type != _GLUSTERD:
+ msg = "UNKNOWN: Could not determine %s status " % args.type
+ status = utils.PluginStatusCode.UNKNOWN
+ print msg
+ exit(status)