Module: check_mk
Branch: master
Commit: 2b25ada2d7f39b1413eccc1466da4b00cb648e94
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2b25ada2d7f39b…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Mon Mar 16 12:21:56 2015 +0100
#1231 mssql_counters.file_sizes: It's now possible to set levels for Filesizes
---
.werks/1231 | 9 ++++++
ChangeLog | 1 +
checkman/mssql_counters.file_sizes | 2 +-
checks/mssql_counters | 59 +++++++++++++++++++---------------
web/plugins/wato/check_parameters.py | 39 ++++++++++++++++++++++
5 files changed, 83 insertions(+), 27 deletions(-)
diff --git a/.werks/1231 b/.werks/1231
new file mode 100644
index 0000000..e5c182b
--- /dev/null
+++ b/.werks/1231
@@ -0,0 +1,9 @@
+Title: mssql_counters.file_sizes: It's now possible to set levels for Filesizes
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.7i1
+Date: 1426504883
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 8b2778a..e86bb36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -128,6 +128,7 @@
* 1229 MySQL: The MySQL Plugin now supports multiple instances...
NOTE: Please refer to the migration notes!
* 2138 df: Filesystem check now outputs performance data for inodes (and shows a
graph)
+ * 1231 mssql_counters.file_sizes: It's now possible to set levels for Filesizes
* 1457 FIX: logins: new check renamed from "users" check...
NOTE: Please refer to the migration notes!
* 1762 FIX: lnx_thermal: Now ignoring trip points with level 0...
diff --git a/checkman/mssql_counters.file_sizes b/checkman/mssql_counters.file_sizes
index 4e334e7..cb8bc05 100644
--- a/checkman/mssql_counters.file_sizes
+++ b/checkman/mssql_counters.file_sizes
@@ -5,7 +5,7 @@ license: GPL
distribution: check_mk
description:
This check monitors the size of data- and logfiles of MSSQL
- tablespaces as reported by MSSQL.
+ tablespaces as reported by MSSQL. Levels for all 3 values can be set in Wato.
The check has been developed with MSSQL Server 2008 R2 but should
work with other versions too.
diff --git a/checks/mssql_counters b/checks/mssql_counters
index 5237b6c..c3e561e 100644
--- a/checks/mssql_counters
+++ b/checks/mssql_counters
@@ -205,39 +205,46 @@ check_info['mssql_counters.locks'] = {
# File Sizes
#
+
def check_mssql_file_sizes(item, params, info):
- data_file_bytes, log_file_bytes, log_file_used_bytes = None, None, None
+ if not params:
+ params = {}
+ values = {}
for line in info:
if mssql_counters_item(line, False) == item:
if line[1] == 'data_file(s)_size_(kb)':
- data_file_bytes = int(line[-1]) * 1024
+ values['data_files'] = int(line[-1]) * 1024
elif line[1] == 'log_file(s)_size_(kb)':
- log_file_bytes = int(line[-1]) * 1024
+ values['log_files'] = int(line[-1]) * 1024
elif line[1] == 'log_file(s)_used_size_(kb)':
- log_file_used_bytes = int(line[-1]) * 1024
-
- if data_file_bytes is None and log_file_bytes is None and log_file_used_bytes is
None:
- return (3, 'Counters %s could not be found in agent output' % (item))
-
- output = []
- perfdata = []
-
- output.append('Data Files: %s' % get_bytes_human_readable(data_file_bytes))
- perfdata.append(('data_files', data_file_bytes))
-
- output.append('Log Files: %s (Used: %s)' %
- (get_bytes_human_readable(log_file_bytes),
get_bytes_human_readable(log_file_used_bytes)))
-
- perfdata.append(('log_files', log_file_bytes))
- perfdata.append(('log_files_used', log_file_used_bytes))
-
- return (0, '%s' % ', '.join(output), perfdata)
+ values['log_files_used'] = int(line[-1]) * 1024
+
+ if len(values.keys()) == 3:
+ for what, name in [ ("data_files", "Data Files"),
+ ("log_files_used", "Log files Used"),
+ ("log_files", "Log Files total"),]:
+ state = 0
+ levels = ""
+ if what in params:
+ warn, crit = params[what]
+ if values[what] >= crit:
+ state = 2
+ elif values[what] >= warn:
+ state = 1
+ if state > 0:
+ levels = " (Warn/ Crit at %s/ %s)" % \
+ (get_bytes_human_readable(warn),
+ get_bytes_human_readable(crit))
+
+ perfdata = [ (what, values[what], warn, crit ) ]
+ yield state, "%s: %s%s" % ( name, levels,
get_bytes_human_readable(values[what]) ), perfdata
check_info['mssql_counters.file_sizes'] = {
- 'check_function': check_mssql_file_sizes,
- 'inventory_function': lambda info: inventory_mssql_counters(info,
- [ 'data_file(s)_size_(kb)', 'log_file(s)_size_(kb)',
'log_file(s)_used_size_(kb)' ], False, False),
- 'service_description': "%s File Sizes",
- 'has_perfdata': True,
+ 'check_function' : check_mssql_file_sizes,
+ 'inventory_function' : lambda info: inventory_mssql_counters(info,
+ [ 'data_file(s)_size_(kb)', 'log_file(s)_size_(kb)',
'log_file(s)_used_size_(kb)' ], False, False, {} ),
+ 'service_description' : "%s File Sizes",
+ 'has_perfdata' : True,
+ 'group' : "mssql_file_sizes",
}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 5a59477..76af3a3 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -4046,6 +4046,45 @@ register_check_parameters(
register_check_parameters(
subgroup_applications,
+ "mssql_file_sizes",
+ _("MSSQL Log and Data File Sizes"),
+ Dictionary(
+ title = _("File Size Levels"),
+ elements = [
+ ("data_files",
+ Tuple(
+ title = _("Levels for Datafiles"),
+ elements = [
+ Filesize(title = _("Warning if above")),
+ Filesize(title = _("Critical if above")),
+ ]
+ )),
+ ("log_files",
+ Tuple(
+ title = _("Levels for Logfiles"),
+ elements = [
+ Filesize(title = _("Warning if above")),
+ Filesize(title = _("Critical if above")),
+ ]
+ )),
+ ("log_files_used",
+ Tuple(
+ title = _("Levels for used Logfiles"),
+ elements = [
+ Filesize(title = _("Warning if above")),
+ Filesize(title = _("Critical if above")),
+ ]
+ )),
+ ]
+ ),
+ TextAscii(
+ title = _("Service descriptions"),
+ allow_empty = False),
+ "dict"
+)
+
+register_check_parameters(
+ subgroup_applications,
"mssql_tablespaces",
_("MSSQL Size of Tablespace"),
Dictionary(