Module: check_mk
Branch: master
Commit: 349c1498e4ac472606166234f3f7e4fdba8399ff
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=349c1498e4ac47…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Jul 5 11:44:23 2013 +0200
FIX: get_average(): Gracefully handle time anomlies of target systems
---
ChangeLog | 3 +++
modules/check_mk_base.py | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index b41fc78..874340b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -233,6 +233,9 @@
1.2.2p3:
+ Core:
+ * FIX: get_average(): Gracefully handle time anomlies of target systems
+
Checks & Agents:
* FIX: winperf_processor: fix case where CPU percent is exactly 100%
* FIX: blade_powerfan: fix mixup of default levels 50/40 -> 40/50
diff --git a/modules/check_mk_base.py b/modules/check_mk_base.py
index 19e07df..dd67c78 100644
--- a/modules/check_mk_base.py
+++ b/modules/check_mk_base.py
@@ -825,6 +825,11 @@ def get_average(itemname, this_time, this_val, backlog_minutes, initialize_zero
last_time, last_val = g_counters.get(itemname)
timedif = this_time - last_time
+ # Gracefully handle time-anomaly of target systems. We loose
+ # one value, but what then heck..
+ if timedif < 0:
+ timedif = 0
+
# Compute the weight: We do it like this: First we assume that
# we get one sample per minute. And that backlog_minutes is the number
# of minutes we should average over. Then we want that the weight
Module: check_mk
Branch: master
Commit: 6fc59ed1c26e77dff6ca07954b879a152a940c25
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6fc59ed1c26e77…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Jul 5 10:08:40 2013 +0200
Change notify --keepalive protocol
---
modules/notify.py | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/modules/notify.py b/modules/notify.py
index 848c1c4..9102a46 100644
--- a/modules/notify.py
+++ b/modules/notify.py
@@ -349,8 +349,13 @@ def notify_keepalive():
g_notify_readahead_buffer = ""
config_timestamp = notify_config_timestamp()
+ # Send signal that we are ready to receive the next notification
+ sys.stdout.write("*")
+ sys.stdout.flush()
+
while True:
try:
+
# If the configuration has changed, we do a restart. But we do
# this check just before the next notification arrives. We must
# *not* read data from stdin, just peek! On the other hand we
@@ -375,7 +380,15 @@ def notify_keepalive():
if g_notify_readahead_buffer.startswith('\n\n'):
sys.exit(0)
while '\n\n' in g_notify_readahead_buffer:
- notify_notify()
+ try:
+ notify_notify()
+ except Exception, e:
+ if opt_debug:
+ raise
+ notify_log("ERROR %s\n%s" % (e, format_exception()))
+ sys.stdout.write("*")
+ sys.stdout.flush()
+
except Exception, e:
if opt_debug:
raise