diff options
author | Ramesh Nachimuthu <rnachimu@redhat.com> | 2014-05-14 13:29:25 +0530 |
---|---|---|
committer | Timothy Asir <tim.gluster@gmail.com> | 2014-05-27 22:54:51 -0700 |
commit | 7de5bb0965f4cc0cf9d0a73c776be2b094180413 (patch) | |
tree | dad824fd627da7a72f22ab54228670326ae37944 | |
parent | 4e7b4ec23793caaae05b1e0e7665e59bf7a607b1 (diff) |
server-addons: fix for hostgroup issue in brick status event handler
Macro "$HOSTGROUPNAME$" is used in brick status event handler. But
this macro gives only one of the host group to which the host belongs
to. But in gluster monitoring, all gluster hosts will have two
host groups ('gluster-host' and a host group with cluster name).
So using the macro "$HOSTGROUPNAMES$" to pass all the host groups to
event handler and internally getting the currect cluster name.
Change-Id: I61713ecabff52bcd7f585e9f678426370b9b24d4
Signed-off-by: Ramesh Nachimuthu <rnachimu@redhat.com>
Reviewed-on: http://review.gluster.org/7761
Reviewed-by: Nishanth Thomas <nishusemail@gmail.com>
Reviewed-by: Kanagaraj M <kmayilsa@redhat.com>
Reviewed-by: Timothy Asir <tim.gluster@gmail.com>
-rw-r--r-- | config/gluster-commands.cfg | 5 | ||||
-rw-r--r-- | config/gluster-templates.cfg | 2 | ||||
-rw-r--r-- | plugins/Makefile.am | 1 | ||||
-rwxr-xr-x | plugins/brick_status_event_handler.py | 65 |
4 files changed, 72 insertions, 1 deletions
diff --git a/config/gluster-commands.cfg b/config/gluster-commands.cfg index 3110e5b..d2ebdce 100644 --- a/config/gluster-commands.cfg +++ b/config/gluster-commands.cfg @@ -106,6 +106,11 @@ define command{ command_line $USER1$/gluster/submit_external_command.py -c '$ARG1$' -H '$ARG2$' -s '$ARG3$' -t '$ARG4$' } +define command{ + command_name brick_status_event_handler + command_line $USER1$/gluster/brick_status_event_handler.py -hg '$HOSTGROUPNAMES$' -v $_SERVICEVOL_NAME$ -st $SERVICESTATETYPE$ +} + define command { command_name check_brick_status command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_brick_status -a $_SERVICEVOL_NAME$ $_SERVICEBRICK_DIR$ diff --git a/config/gluster-templates.cfg b/config/gluster-templates.cfg index 1530f21..b8b47bc 100644 --- a/config/gluster-templates.cfg +++ b/config/gluster-templates.cfg @@ -57,7 +57,7 @@ define service { use gluster-service register 0 _GLUSTER_ENTITY Brick - event_handler submit_external_command!'SCHEDULE_SVC_CHECK'!$HOSTGROUPNAME$!'Volume Status - $_SERVICEVOL_NAME$'!'$LONGDATETIME$' + event_handler brick_status_event_handler check_command check_brick_status } diff --git a/plugins/Makefile.am b/plugins/Makefile.am index 5400d5c..3365ae3 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -12,6 +12,7 @@ dist_glusternagiosplugins_PYTHON = \ config_generator.py \ servicesnmptrapgenerator.py \ submit_external_command.py \ + brick_status_event_handler.py \ server_utils.py \ $(NULL) diff --git a/plugins/brick_status_event_handler.py b/plugins/brick_status_event_handler.py new file mode 100755 index 0000000..cf2b252 --- /dev/null +++ b/plugins/brick_status_event_handler.py @@ -0,0 +1,65 @@ +#!/usr/bin/python +# brick_status_event_handler.py Event handler for Brick status +# Service. Reschedules the check for volume status service whenever a +# brick status changes. +# 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 sys +import datetime + +import submit_external_command +from glusternagios import utils + + +GLUSTER_HOST_GROUP = "gluster-host" + + +def parse_input(): + parser = argparse.ArgumentParser(description="Nagios plugin to handle " + "brick status events") + parser.add_argument('-hg', '--hostgroups', action='store', + dest='hostGroups', + type=str, required=True, help='Hostgroups') + parser.add_argument('-st', '--statetype', action='store', + dest='stateType', + type=str, required=True, help='Service State Type') + parser.add_argument('-v', '--volume', action='store', dest='volume', + type=str, required=True, help='Volume Name') + args = parser.parse_args() + return args + + +def _findClusterName(hostGroupNames): + hostGroups = hostGroupNames.split(",") + for hostGroup in hostGroups: + if hostGroup != GLUSTER_HOST_GROUP: + return hostGroup + + +if __name__ == '__main__': + args = parse_input() + if args.stateType == "SOFT": + sys.exit(utils.PluginStatusCode.OK) + hostName = _findClusterName(args.hostGroups) + now = datetime.datetime.now() + command = "SCHEDULE_SVC_CHECK" + volumeStatusService = "Volume Status - %s" % args.volume + cmdStr = "[%s] %s;%s;%s;%s\n" % (now, command, hostName, + volumeStatusService, now) + submit_external_command.submitExternalCommand(cmdStr) + sys.exit(utils.PluginStatusCode.OK) |