diff options
-rw-r--r-- | config/gluster-commands.cfg | 5 | ||||
-rw-r--r-- | config/gluster-templates.cfg | 1 | ||||
-rw-r--r-- | plugins/Makefile.am | 1 | ||||
-rw-r--r-- | plugins/config_generator.py | 2 | ||||
-rwxr-xr-x | plugins/submit_external_command.py | 55 |
5 files changed, 63 insertions, 1 deletions
diff --git a/config/gluster-commands.cfg b/config/gluster-commands.cfg index f1b94a4..60d6757 100644 --- a/config/gluster-commands.cfg +++ b/config/gluster-commands.cfg @@ -95,3 +95,8 @@ define command{ command_name check_cluster_status command_line $USER1$/gluster/check_cluster_status.py $HOSTNAME$ } + +define command{ + command_name submit_external_command + command_line $USER1$/gluster/submit_external_command.py -c '$ARG1$' -H '$ARG2$' -s '$ARG3$' -t '$ARG4$' +} diff --git a/config/gluster-templates.cfg b/config/gluster-templates.cfg index d9bebf9..8af2931 100644 --- a/config/gluster-templates.cfg +++ b/config/gluster-templates.cfg @@ -58,6 +58,7 @@ define service { use gluster-passive-service register 0 _GLUSTER_ENTITY Brick + event_handler submit_external_command!'SCHEDULE_SVC_CHECK'!$HOSTGROUPNAME$!'Volume Status - $_SERVICEVOL_NAME$'!'$LONGDATETIME$' } define service { diff --git a/plugins/Makefile.am b/plugins/Makefile.am index 39893e3..a6cc905 100644 --- a/plugins/Makefile.am +++ b/plugins/Makefile.am @@ -11,6 +11,7 @@ dist_glusternagiosplugins_PYTHON = \ discovery.py \ config_generator.py \ servicesnmptrapgenerator.py \ + submit_external_command.py \ $(NULL) EXTRA_DIST = \ diff --git a/plugins/config_generator.py b/plugins/config_generator.py index 17b5df3..bf18cf1 100644 --- a/plugins/config_generator.py +++ b/plugins/config_generator.py @@ -141,7 +141,7 @@ class GlusterNagiosConfManager: def __createBrickStatusService(self, brick, hostName): brickService = {} - brickService['use'] = 'gluster-passive-service' + brickService['use'] = 'gluster-brick-passive-service' brickService['host_name'] = hostName serviceDesc = "Brick Status - %s:%s" % (hostName, brick['brickpath']) brickService['service_description'] = serviceDesc diff --git a/plugins/submit_external_command.py b/plugins/submit_external_command.py new file mode 100755 index 0000000..876c6b5 --- /dev/null +++ b/plugins/submit_external_command.py @@ -0,0 +1,55 @@ +#!/usr/bin/python +# submit_external_command.py Nagios plugin to submit external command +# to nagios +# 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 + +from glusternagios import utils +from constants import NAGIOS_COMMAND_FILE_PATH + + +def parse_input(): + parser = argparse.ArgumentParser(description="Nagios external " + "command submission tool") + parser.add_argument('-c', '--command', action='store', dest='command', + type=str, required=True, help='External Command') + parser.add_argument('-H', '--hostName', action='store', dest='hostName', + type=str, required=True, help='Host Name') + parser.add_argument('-s', '--service', action='store', dest='service', + type=str, required=False, + help='Service Description') + parser.add_argument('-t', '--time', action='store', dest='dateTime', + type=str, required=True, + help='Service Description') + args = parser.parse_args() + return args + + +def _submitExternalCommand(command, hostname, service, dateTime): + cmdStr = "[%s] %s;%s;%s;%s\n" % (dateTime, command, + hostname, service, dateTime) + with open(NAGIOS_COMMAND_FILE_PATH, "w") as f: + f.write(cmdStr) + + +if __name__ == '__main__': + args = parse_input() + _submitExternalCommand(args.command, args.hostName, + args.service, args.dateTime) + sys.exit(utils.PluginStatusCode.OK) |