Module: check_mk
Branch: master
Commit: 2f06da763a2933439a1e3620627cada612a97163
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2f06da763a2933…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Fri Oct 17 10:06:48 2014 +0200
Prepared support to monitor cifs mounts
---
checks/cifsmounts | 39 ++++++++++++++++++++++++++
checks/network_fs.include | 68 +++++++++++++++++++++++++++++++++++++++++++++
checks/nfsmounts | 42 ++--------------------------
3 files changed, 110 insertions(+), 39 deletions(-)
diff --git a/checks/cifsmounts b/checks/cifsmounts
new file mode 100644
index 0000000..5fbccab
--- /dev/null
+++ b/checks/cifsmounts
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2014 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at
http://mathias-kettner.de/check_mk.
+#
+# check_mk 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 in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+# Example out from agent:
+# <<<cifsmounts>>>
+# /foobar hanging 0 0 0 0
+# /with spaces ok 217492 123563 112515 524288
+
+
+check_info["cifsmounts"] = {
+ 'check_function': check_network_fs_mounts,
+ 'inventory_function': inventory_network_fs_mounts,
+ 'service_description': 'CIFS mount %s',
+ 'group': 'network_fs',
+ 'includes': [ 'network_fs.include' ],
+}
diff --git a/checks/network_fs.include b/checks/network_fs.include
new file mode 100644
index 0000000..a5408c1
--- /dev/null
+++ b/checks/network_fs.include
@@ -0,0 +1,68 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2014 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at
http://mathias-kettner.de/check_mk.
+#
+# check_mk 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 in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+# Example out from agent:
+# <<<...mounts>>>
+# /foobar hanging 0 0 0 0
+# /with spaces ok 217492 123563 112515 524288
+
+def inventory_network_fs_mounts(info):
+ return [ (" ".join(line[:-5]), None) for line in info ]
+
+def check_network_fs_mounts(item, _no_params, info):
+ for line in info:
+ mountpoint = " ".join(line[:-5])
+ if mountpoint == item:
+ # On some operating systems there is no information about
+ # used and free space, but just dahshes (e.g. AIX)
+ if line[-4] == '-':
+ if line[-5] == 'ok':
+ return 0, "mount seems OK"
+ else:
+ return 2, "Server not responding"
+
+
+ size_blocks = int(line[-4])
+ free_blocks = int(line[-2]) # for non-root user
+ blocksize = int(line[-1])
+
+ if size_blocks < 0 or free_blocks < 0 or blocksize > 1024*1024:
+ return (2, "Stale fs handle")
+
+ if line[-5] == 'ok':
+ gb = 1024 * 1024 * 1024.0
+ size_gb = (size_blocks * blocksize) / gb
+ if size_gb == 0:
+ return (0, "server is responding")
+
+ free_gb = (free_blocks * blocksize) / gb
+ used_gb = size_gb - free_gb
+ used_perc = 100.0 * used_gb / size_gb
+ return (0, "%.1f%% used (%.1f of %.1f GB)" % (used_perc,
used_gb, size_gb))
+ else:
+ return (2, "server not responding")
+ return (3, "not mounted")
+
diff --git a/checks/nfsmounts b/checks/nfsmounts
index a705cab..2e16cec 100644
--- a/checks/nfsmounts
+++ b/checks/nfsmounts
@@ -29,47 +29,11 @@
# /foobar hanging 0 0 0 0
# /with spaces ok 217492 123563 112515 524288
-def inventory_nfsmounts(info):
- return [ (" ".join(line[:-5]), None) for line in info ]
-
-def check_nfsmounts(item, _no_params, info):
- for line in info:
- mountpoint = " ".join(line[:-5])
- if mountpoint == item:
- # On some operating systems there is no information about
- # used and free space, but just dahshes (e.g. AIX)
- if line[-4] == '-':
- if line[-5] == 'ok':
- return 0, "NFS mount seems OK"
- else:
- return 2, "Server not responding"
-
-
- size_blocks = int(line[-4])
- free_blocks = int(line[-2]) # for non-root user
- blocksize = int(line[-1])
-
- if size_blocks < 0 or free_blocks < 0 or blocksize > 1024*1024:
- return (2, "Stale NFS handle")
-
- if line[-5] == 'ok':
- gb = 1024 * 1024 * 1024.0
- size_gb = (size_blocks * blocksize) / gb
- if size_gb == 0:
- return (0, "server is responding")
-
- free_gb = (free_blocks * blocksize) / gb
- used_gb = size_gb - free_gb
- used_perc = 100.0 * used_gb / size_gb
- return (0, "%.1f%% used (%.1f of %.1f GB)" % (used_perc,
used_gb, size_gb))
- else:
- return (2, "server not responding")
- return (3, "not mounted")
-
check_info["nfsmounts"] = {
- 'check_function': check_nfsmounts,
- 'inventory_function': inventory_nfsmounts,
+ 'check_function': check_network_fs_mounts,
+ 'inventory_function': inventory_network_fs_mounts,
'service_description': 'NFS mount %s',
'group': 'network_fs',
+ 'includes': [ 'network_fs.include' ],
}