Module: check_mk
Branch: master
Commit: 5c8db5ff922fee35345c12efa7ed57fc60afdc04
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5c8db5ff922feeā¦
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Fri Oct 14 11:34:23 2016 +0200
updated werk
---
.werks/3611 | 2 +-
ChangeLog | 4 +--
checks/websphere_mq_queues | 49 ++++++++++++++++++++++--------------
web/plugins/wato/check_parameters.py | 40 +++++++++++++++++++++++------
4 files changed, 66 insertions(+), 29 deletions(-)
diff --git a/.werks/3611 b/.werks/3611
index 64d9c89..0461c00 100644
--- a/.werks/3611
+++ b/.werks/3611
@@ -1,4 +1,4 @@
-Title: websphere_mq_queues: now age of messages not processed is configurable
+Title: websphere_mq_queues: now age and state of messages not processed is configurable
Level: 1
Component: checks
Compatible: compat
diff --git a/ChangeLog b/ChangeLog
index 77fd5cb..ebf4add 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -149,8 +149,8 @@
* 3609 apc_rackpdu_power: now upper levels for electrical current are confiugurable
* 3136 windows agent: improved crash reporting...
* 3137 linux and solaris agent: mrpe checks now support option to append the cache
age to cached results...
- * 3610 mk_oracle: linux plugin now available for solaris...
- * 3611 websphere_mq_queues: now age of messages not processed is configurable...
+ * 3610 mk_oracle: linux plugin now available for solaris
+ * 3611 websphere_mq_queues: now age and state of messages not processed is
configurable...
* 3612 nfsmounts: new rule for en/disabling performance data
* 3615 if: Convert bandwidth from octets into bits for graph display...
NOTE: Please refer to the migration notes!
diff --git a/checks/websphere_mq_queues b/checks/websphere_mq_queues
index 811445f..71ba46b 100644
--- a/checks/websphere_mq_queues
+++ b/checks/websphere_mq_queues
@@ -74,7 +74,7 @@ def parse_websphere_mq_queues(info):
parsed[queue_name].setdefault('max_depth', int(line[2]))
if len(line) > 3:
- for what in line[3].split(')'):
+ for what in "".join(line[3:-1]).replace(" ",
"").split(')'):
if "(" in what:
key, val = what.split('(')
parsed[queue_name].setdefault(key, val)
@@ -141,29 +141,40 @@ def check_websphere_mq_queues(item, params, parsed):
yield state_perc, info_perc
- if data.get("time_on_client") and data.get("LGETDATE") and \
- data.get("LGETTIME"):
+ if data.get("time_on_client") and \
+ "LGETDATE" in data and "LGETTIME" in data:
- time_str = "%s %s" % (data['LGETDATE'],
data['LGETTIME'])
- time_diff = data["time_on_client"] - \
- time.mktime(time.strptime(time_str, "%Y-%m-%d %H.%M.%S"))
- state_diff = 0
- info_diff = "since %s" % get_age_human_readable(time_diff)
+ params = params.get("messages_not_processed", {})
- if 'messages_not_processed_age' in params:
- warn_diff, crit_diff = params['messages_not_processed_age']
+ if cur_depth and data["LGETDATE"] and data["LGETTIME"]:
+ time_str = "%s %s" % (data['LGETDATE'],
data['LGETTIME'])
+ time_diff = data["time_on_client"] - \
+ time.mktime(time.strptime(time_str, "%Y-%m-%d %H.%M.%S"))
+ state_diff = 0
+ info_diff = "Messages not processed since %s" %
get_age_human_readable(time_diff)
- if time_diff >= crit_diff:
- state_diff = 2
- elif time_diff >= warn_diff:
- state_diff = 1
+ if 'age' in params:
+ warn_diff, crit_diff = params['age']
- if state_diff:
- info_diff += " (warn/crit at %s/%s)" % \
- (get_age_human_readable(warn_diff),
- get_age_human_readable(crit_diff))
+ if time_diff >= crit_diff:
+ state_diff = 2
+ elif time_diff >= warn_diff:
+ state_diff = 1
+
+ if state_diff:
+ info_diff += " (warn/crit at %s/%s)" % \
+ (get_age_human_readable(warn_diff),
+ get_age_human_readable(crit_diff))
+
+ yield state_diff, info_diff
+
+ elif cur_depth:
+ yield params.get("state", 0), "No age of %d message%s not
processed" % \
+ (cur_depth, cur_depth > 1 and "s" or "")
+
+ else:
+ yield 0, "Messages processed"
- yield state_diff, info_diff
check_info["websphere_mq_queues"] = {
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 8aa8c29..21254f0 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -1507,6 +1507,14 @@ register_check_parameters(
def transform_websphere_mq(source):
if isinstance(source, tuple):
return {"message_count": source}
+
+ elif "messages_not_processed_age" in source:
+ age_params = source["messages_not_processed_age"]
+ source["messages_not_processed"] = {}
+ source["messages_not_processed"]["age"] = age_params
+ del source["messages_not_processed_age"]
+ return source
+
else:
return source
@@ -1570,14 +1578,32 @@ register_check_parameters(
],
optional_keys = []
)),
- ("messages_not_processed_age",
- Tuple(
- title = _("Time settings for messages not
processed"),
+ ("messages_not_processed",
+ Dictionary(
+ title = _("Settings for messages not processed"),
+ help = _("With this rule you can determine the warn and
crit age "
+ "if LGETTIME and LGETDATE is available in the
agent data. "
+ "Note that if LGETTIME and LGETDATE are available
but not set "
+ "you can set the service state which is default
WARN. "
+ "This rule applies only if the current depth is
greater than zero."),
elements = [
- Age(title = _("Warning at")),
- Age(title = _("Critical at")),
- ],
- )),
+ ("age",
+ Tuple(
+ title = _("Upper levels for the age"),
+ elements = [
+ Age(title = _("Warning at")),
+ Age(title = _("Critical at")),
+ ],
+ )
+ ),
+ ("state",
+ MonitoringState(
+ title = _("State if LGETTIME and LGETDATE are
available but not set"),
+ default_value = 1)
+ ),
+ ]
+ ),
+ ),
],
),
forth = transform_websphere_mq