diff options
author | Ramesh Nachimuthu <rnachimu@redhat.com> | 2014-05-07 15:23:55 +0530 |
---|---|---|
committer | Sahina Bose <sabose@redhat.com> | 2014-05-07 06:40:00 -0700 |
commit | 4c63ceaf48a3641adb4e087125d6698fa857ad37 (patch) | |
tree | 78a9a13f971d7e02811115e36756a3c2759200dd /plugins/check_gluster_proc_status.py | |
parent | a4f97c15206c4930e6336c7a1fba67a231615486 (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-x | plugins/check_gluster_proc_status.py | 90 |
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) |