Module: check_mk
Branch: master
Commit: 5edaa55f869d23acd8de0b71c59040583b784280
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5edaa55f869d23…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Thu Aug 3 09:38:49 2017 +0200
5080 mssql_blocked_sessions: Put details about session ID, blocking ID, wait data and type
into longoutput
Previously above details were displayed in service details
which causes overcrowding. Now a summary about which session
IDs are blocked by how much blocking IDs is shown and etails
can be found in the long output of the service.
Change-Id: Ia77c95b599c75568ff9f1e49c1d68f9e1231fe06
---
.werks/5080 | 13 +++++++++++++
checks/mssql_blocked_sessions | 39 +++++++++++++++++++++++++--------------
2 files changed, 38 insertions(+), 14 deletions(-)
diff --git a/.werks/5080 b/.werks/5080
new file mode 100644
index 0000000..10316a4
--- /dev/null
+++ b/.werks/5080
@@ -0,0 +1,13 @@
+Title: mssql_blocked_sessions: Put details about session ID, blocking ID, wait data and
type into longoutput
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i1
+Date: 1501745629
+Class: feature
+
+Previously above details were displayed in service details
+which causes overcrowding. Now a summary about which session
+IDs are blocked by how much blocking IDs is shown and etails
+can be found in the long output of the service.
diff --git a/checks/mssql_blocked_sessions b/checks/mssql_blocked_sessions
index dc3877a..a9e163a 100644
--- a/checks/mssql_blocked_sessions
+++ b/checks/mssql_blocked_sessions
@@ -34,20 +34,17 @@
# sessions independent of instances anymore. Use same service description
# schema as "mssql_instance".
-factory_settings['mssql_blocked_sessions_default_levels'] = {
- 'state' : 2,
-}
+
+factory_settings['mssql_blocked_sessions_default_levels'] = {'state': 2}
+
def inventory_mssql_blocked_sessions(info):
return [(None, {})]
-def check_mssql_blocked_sessions(_no_item, params, info):
- if not info:
- yield 0, "No blocked sessions"
- return
-
- state = params['state']
+def check_mssql_blocked_sessions(_no_item, params, info):
+ summary = {}
+ details = []
ignored_waittypes = set()
for line in info:
if "blocked" in line[0].lower():
@@ -59,6 +56,7 @@ def check_mssql_blocked_sessions(_no_item, params, info):
ignored_waittypes.add(wait_type)
continue
+ state = 0
if params.has_key('waittime'):
warn, crit = params['waittime']
wait_duration_sec = float(wait_duration_ms) / 1000
@@ -66,14 +64,27 @@ def check_mssql_blocked_sessions(_no_item, params, info):
state = 2
elif wait_duration_sec >= warn:
state = 1
- else:
- state = 0
- yield state, "Session %s blocked by %s (Wait %s ms, Type: %s)" % \
- (session_id, blocking_session_id, wait_duration_ms, wait_type)
+ summary.setdefault(session_id, set())
+ summary[session_id].add(blocking_session_id)
+ details.append((state, "Session %s blocked by %s (Wait %s ms, Type:
%s)" % \
+ (session_id, blocking_session_id, wait_duration_ms, wait_type)))
+
+ if summary:
+ yield params['state'], "Summary: %s" % \
+ ", ".join(["%s blocked by %s ID(s)" % (k, len(v))
+ for k,v in summary.items()])
+
+ fst_state, fst_infotext = details[0]
+ yield fst_state, "\nDetails:\n%s" % fst_infotext
+ for state, infotext in details[1:]:
+ yield state, "\n%s" % infotext
+
+ else:
+ yield 0, "No blocked sessions"
if ignored_waittypes:
- yield 0, "Ignored wait types: %s" % ",
".join(ignored_waittypes)
+ yield 0, "\nIgnored wait types: %s" % ",
".join(ignored_waittypes)
check_info['mssql_blocked_sessions'] = {