Module: check_mk
Branch: master
Commit: 1070a172040ba633325af5e439c212bed043842a
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=1070a172040ba6…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Nov 29 15:24:40 2013 +0100
winperf_ts_sessions: New check to monitor Microsoft Terminal Server sessions
This check can be used to monitor the number of active and inactive user sessions.
---
.werks/291 | 8 ++++
ChangeLog | 1 +
checkman/winperf_ts_sessions | 27 +++++++++++++
checks/winperf_ts_sessions | 73 ++++++++++++++++++++++++++++++++++
web/plugins/wato/check_parameters.py | 33 +++++++++++++++
5 files changed, 142 insertions(+)
diff --git a/.werks/291 b/.werks/291
new file mode 100644
index 0000000..22303e8
--- /dev/null
+++ b/.werks/291
@@ -0,0 +1,8 @@
+Title: winperf_ts_sessions: New check to monitor Microsoft Terminal Server sessions
+Level: 1
+Component: checks
+Version: 1.2.3i7
+Date: 1385735024
+Class: feature
+
+This check can be used to monitor the number of active and inactive user sessions.
diff --git a/ChangeLog b/ChangeLog
index 5c16105..7d0a106 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -30,6 +30,7 @@
* 0101 liebert_chiller_status: New check for Liebert Chiller devices
* 0083 brocade_mlx: Temperature sensors of one module now in one common check...
* 0008 df: Solaris agent now also supports samfs
+ * 0291 winperf_ts_sessions: New check to monitor Microsoft Terminal Server
sessions...
* 0024 FIX: cisco_wlc: removed check configuration parameter ap_model...
* 0003 FIX: ps: Remove exceeding [ and ] in service description when using process
inventory...
* 0037 FIX: checkman browser (cmk -m) was not working properly in network subtree...
diff --git a/checkman/winperf_ts_sessions b/checkman/winperf_ts_sessions
new file mode 100644
index 0000000..f55db18
--- /dev/null
+++ b/checkman/winperf_ts_sessions
@@ -0,0 +1,27 @@
+title: Microsoft Terminal Server Sessions
+agents: linux
+catalog: os/kernel
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the number of active and inactive Microsoft Terminal
+ Server Sessions using the windows performance counters (agent section
+ {<<<winperf_ts_sessions>>>}).
+
+ To make this check work, you need to configure the agent via it's .ini
+ file to forward the terminal service session related counters. Take a
+ look at the windows monitoring documentation for details.
+
+ It allows to set {WARN} and {CRIT} tresholds on the active and idle session.
+
+inventory:
+ The check generates service per host.
+
+perfdata:
+ The check generates perfdata for the active and inactive sessions.
+
+[parameters]
+paramaeters(dict): A dictionary with the following optional keys:
+
+ {"active"}: A tuple of warn and crit thresholds
+ {"inactive"}: A tuple of warn and crit thresholds
diff --git a/checks/winperf_ts_sessions b/checks/winperf_ts_sessions
new file mode 100644
index 0000000..dd9b6c7
--- /dev/null
+++ b/checks/winperf_ts_sessions
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2013 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 output from agent:
+# <<<winperf_ts_sessions>>>
+# 1385714515.93 2102
+# 2 1 rawcount
+# 4 1 rawcount
+# 6 0 rawcount
+
+# Counters, relative to the base ID (2102)
+# 2 Total number of Terminal Services sessions.
+# 4 Number of active Terminal Services sessions.
+# 6 Number of inactive Terminal Services sessions.
+
+def inventory_winperf_ts_sessions(info):
+ if len(info) > 1:
+ return [ (None, {}) ]
+
+def check_winperf_ts_sessions(_unused, params, info):
+ if not info or len(info) == 1:
+ return 3, "Performance counters not available"
+ total, active, inactive = [ int(l[0]) for l in info[1:4] ]
+
+ state = 0
+ state_txt = []
+ for val, key, title in [ (active, 'active', 'Active'),
+ (inactive, 'inactive', 'Inactive') ]:
+ txt = '%d %s' % (val, title)
+ if key in params:
+ if val > params[key][0]:
+ state = max(state, 2)
+ txt += ' (!!)'
+ elif val > params[key][1]:
+ state = max(state, 1)
+ txt += ' (!)'
+ state_txt.append(txt)
+
+ perfdata = [ ('active', active, ), ('inactive', inactive) ]
+ return state, ", ".join(state_txt), perfdata
+
+check_config_variables.append("winperf_ts_sessions")
+
+check_info["winperf_ts_sessions"] = {
+ 'check_function': check_winperf_ts_sessions,
+ 'inventory_function': inventory_winperf_ts_sessions,
+ 'service_description': 'Sessions',
+ 'has_perfdata': True,
+ 'group': 'winperf_ts_sessions',
+}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 8cac46e..7ffd889 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -3139,6 +3139,39 @@ register_check_parameters(
)
register_check_parameters(
+ subgroup_applications,
+ "winperf_ts_sessions",
+ _("Windows Terminal Server Sessions"),
+ Dictionary(
+ help = _("This check monitors number of active and inactive terminal
"
+ "server sessions."),
+ elements = [
+ ( "active",
+ Tuple(
+ title = _("Number of active sessions"),
+ elements = [
+ Integer(title = _("Warning if above"), unit =
_("sessions"), default_value = 100),
+ Integer(title = _("Critical if above"), unit =
_("sessions"), default_value = 200),
+ ],
+ ),
+ ),
+ ( "inactive",
+ Tuple(
+ title = _("Number of inactive sessions"),
+ help = _("Levels for the number of sessions that are currently
inactive"),
+ elements = [
+ Integer(title = _("Warning if above"), unit =
_("sessions"), default_value = 10),
+ Integer(title = _("Critical if above"), unit =
_("sessions"), default_value = 20),
+ ],
+ ),
+ ),
+ ]
+ ),
+ None,
+ None
+)
+
+register_check_parameters(
subgroup_storage,
"raid",
_("RAID: overall state"),