From 0682f3b48c06a5bf53f305dd77250cdb796693a5 Mon Sep 17 00:00:00 2001 From: Timothy Asir Date: Tue, 1 Apr 2014 17:31:44 +0530 Subject: Add gluster process monitoring plugin This helps monitoring gluster related process such as glusterd, glusterfsd, gluster self heal process, nfs and also helps to monitor other running services Change-Id: I8c6f252270a847e7ff007c358125a9310525f201 Signed-off-by: Timothy Asir --- tests/Makefile.am | 2 + tests/check_proc_test_data.py | 196 ++++++++++++++++++++++++++++++++++++++++++ tests/test_gluster_proc.py | 42 +++++++++ 3 files changed, 240 insertions(+) create mode 100644 tests/check_proc_test_data.py create mode 100644 tests/test_gluster_proc.py (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index a540f11..0712feb 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -21,8 +21,10 @@ test_modules = \ test_check_gluster_syslog.py \ test_check_volume_status.py \ + check_proc_test_data.py \ test_cpu.py \ test_cpu_dataFile.py \ + test_gluster_proc.py \ test_memory.py \ test_memory_dataFile.py \ test_network.py \ diff --git a/tests/check_proc_test_data.py b/tests/check_proc_test_data.py new file mode 100644 index 0000000..b4d4ac4 --- /dev/null +++ b/tests/check_proc_test_data.py @@ -0,0 +1,196 @@ +nfsEnabled1 = {'rep1': {'brickCount': '2', + 'bricks': ['10.70.43.33:/bricks/rep1_1', + '10.70.43.33:/bricks/rep1_2'], + 'bricksInfo': [], + 'distCount': '2', + 'options': {}, + 'replicaCount': '2', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '53496a0c-94eb-46a2-9312-eeb700e9fba5', + 'volumeName': 'rep1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'REPLICATE'}, + 'vol1': {'brickCount': '3', + 'bricks': ['10.70.43.33:/bricks/b1', + '10.70.43.33:/bricks/my-vol1-add-brck-b2.new', + '10.70.43.33:/bricks/vol1/my-new-brick_b3'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {'features.quota': 'on', 'nfs.disable': 'on'}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': 'f96856f1-b2c0-4e24-aef0-7f2a01f37b99', + 'volumeName': 'vol1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'DISTRIBUTE'}, + 'vol2': {'brickCount': '1', + 'bricks': ['10.70.43.190:/exports/vol2'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {'features.quota': 'on'}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '12817858-77cd-450d-8a70-f8d617db838e', + 'volumeName': 'vol2', + 'volumeStatus': 'ONLINE', + 'volumeType': 'DISTRIBUTE'}, + 'vol3': {'brickCount': '1', + 'bricks': ['10.70.43.190:/exports/vol3'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': 'a3d0f537-761f-46d3-addd-58c5eeb66b58', + 'volumeName': 'vol3', + 'volumeStatus': 'OFFLINE', + 'volumeType': 'DISTRIBUTE'}, + 'vol4': {'brickCount': '2', + 'bricks': ['10.70.43.190:/bricks/vol3_a', + '10.70.43.190:/bricks/vol3_b'], + 'bricksInfo': [], + 'distCount': '2', + 'options': {}, + 'replicaCount': '2', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '81201e32-8f14-4fa0-b4ef-23852f2f9a1d', + 'volumeName': 'vol4', + 'volumeStatus': 'OFFLINE', + 'volumeType': 'REPLICATE'}, + 'vol5': {'brickCount': '3', + 'bricks': ['10.70.43.190:/bricks/vol5_a', + '10.70.42.228:/bricks/vol5_b', + '10.70.43.33:/bricks/vol5_c'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '69e039dd-e0b1-4069-ad65-99cb26c2d157', + 'volumeName': 'vol5', + 'volumeStatus': 'ONLINE', + 'volumeType': 'DISTRIBUTE'}} + +# nfs enabled by default +nfsEnabled2 = {'rep1': {'brickCount': '2', + 'bricks': ['10.70.43.133:/bricks/rep1_1', + '10.70.43.133:/bricks/rep1_2'], + 'bricksInfo': [], + 'distCount': '2', + 'options': {}, + 'replicaCount': '2', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '53496a0c-94eb-46a2-9312-eeb700e9fba5', + 'volumeName': 'rep1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'REPLICATE'}} + +#NFS enabled using set option +nfsEnabled3 = {'vol1': {'brickCount': '3', + 'bricks': ['10.70.43.33:/bricks/b1', + '10.70.43.33:/bricks/my-vol1-add-brck-b2.new', + '10.70.43.33:/bricks/vol1/my-new-brick_b3'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {'features.quota': 'on', 'nfs.disable': 'off'}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': 'f96856f1-b2c0-4e24-aef0-7f2a01f37b99', + 'volumeName': 'vol1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'DISTRIBUTE'}} + + +nfsDisabled1 = {'vol1': {'brickCount': '3', + 'bricks': ['10.70.43.33:/bricks/b1', + '10.70.43.33:/bricks/my-vol1-add-brck-b2.new', + '10.70.43.33:/bricks/vol1/my-new-brick_b3'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {'features.quota': 'on', 'nfs.disable': 'on'}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': 'f96856f1-b2c0-4e24-aef0-7f2a01f37b99', + 'volumeName': 'vol1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'DISTRIBUTE'}, + 'rep1': {'brickCount': '2', + 'bricks': ['10.70.43.133:/bricks/rep1_1', + '10.70.43.133:/bricks/rep1_2'], + 'bricksInfo': [], + 'distCount': '2', + 'options': {'features.quota': 'on', 'nfs.disable': 'on'}, + 'replicaCount': '2', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '53496a0c-94eb-46a2-9312-eeb700e9fba5', + 'volumeName': 'rep1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'REPLICATE'}} + + +brickTst1 = {'vol1': {'brickCount': '3', + 'bricks': ['10.70.43.33:/bricks/b1', + '10.70.43.433:/bricks/my-vol1-add-brck-b2.new', + '10.70.43.33:/bricks/vol1/my-new-brick_b3'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {'features.quota': 'on', 'nfs.disable': 'on'}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': 'f96856f1-b2c0-4e24-aef0-7f2a01f37b99', + 'volumeName': 'vol1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'DISTRIBUTE'}, + 'rep1': {'brickCount': '2', + 'bricks': ['10.70.43.133:/bricks/rep1_1', + '10.70.43.133:/bricks/rep1_2'], + 'bricksInfo': [], + 'distCount': '2', + 'options': {'features.quota': 'on', 'nfs.disable': 'on'}, + 'replicaCount': '2', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '53496a0c-94eb-46a2-9312-eeb700e9fba5', + 'volumeName': 'rep1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'REPLICATE'}} + + +brickTst2 = {'vol1': {'brickCount': '3', + 'bricks': ['10.70.43.133:/bricks/b1', + '10.70.43.233:/bricks/my-vol1-add-brck-b2.new', + '10.70.43.333:/bricks/vol1/my-new-brick_b3'], + 'bricksInfo': [], + 'distCount': '1', + 'options': {'features.quota': 'on', 'nfs.disable': 'on'}, + 'replicaCount': '1', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': 'f96856f1-b2c0-4e24-aef0-7f2a01f37b99', + 'volumeName': 'vol1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'DISTRIBUTE'}, + 'rep1': {'brickCount': '2', + 'bricks': ['10.70.43.133:/bricks/rep1_1', + '10.70.43.133:/bricks/rep1_2'], + 'bricksInfo': [], + 'distCount': '2', + 'options': {'features.quota': 'on', 'nfs.disable': 'on'}, + 'replicaCount': '2', + 'stripeCount': '1', + 'transportType': ['TCP'], + 'uuid': '53496a0c-94eb-46a2-9312-eeb700e9fba5', + 'volumeName': 'rep1', + 'volumeStatus': 'ONLINE', + 'volumeType': 'REPLICATE'}} diff --git a/tests/test_gluster_proc.py b/tests/test_gluster_proc.py new file mode 100644 index 0000000..36a60fd --- /dev/null +++ b/tests/test_gluster_proc.py @@ -0,0 +1,42 @@ +# +# Copyright 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 +# +# Refer to the README and COPYING files for full details of the license +# + +from testrunner import PluginsTestCase as TestCaseBase +from plugins import check_proc_status as gProc +from plugins import nscautils +from glusternagios import utils +import check_proc_test_data as gData + + +class TestProc(TestCaseBase): + def _maskGetoutputSuccess(self, val): + return 0, "PROCS OK:", "" + + def _maskGetoutputCritical(self, val): + return 0, "PROCS CRITICAL:", "" + + def _maskSendToNsca(self, hostName, service, status, msg): + return service, status, msg + + def test_Nfs(self): + nscautils.send_to_nsca = self._maskSendToNsca + utils.execCmd = self._maskGetoutputCritical + + assert(gProc.sendNfsStatus("10.70.43.33", gData.nfsEnabled1) == None) -- cgit