Module: check_mk
Branch: master
Commit: efd2e00db4c4eeb930c72e90dcd9410b8e0fc98b
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=efd2e00db4c4ee…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Jun 18 09:36:24 2013 +0200
Fixed issues with lowercase transformation of username in ldap auth
---
web/htdocs/login.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/web/htdocs/login.py b/web/htdocs/login.py
index f6f1451..35cb19c 100644
--- a/web/htdocs/login.py
+++ b/web/htdocs/login.py
@@ -183,10 +183,14 @@ def do_login():
# False -> failed
result = userdb.hook_login(username, password)
if result:
+ # use the username provided by the successful login function, this function
+ # might have transformed the username provided by the user. e.g. switched
+ # from mixed case to lower case.
+ username = result
+
# reset failed login counts
userdb.on_succeeded_login(username)
- username = result
# The login succeeded! Now:
# a) Set the auth cookie
# b) Unset the login vars in further processing
Module: check_mk
Branch: master
Commit: b7baff16bfc5bdbb70d0aa5638ca8a91bd0726b1
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=b7baff16bfc5bd…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Jun 17 16:00:46 2013 +0200
FIX: winperf_processor: fix case where CPU percent is exactly 100%
Conflicts:
ChangeLog
---
ChangeLog | 5 +++++
checks/winperf_processor | 21 +++++++++------------
2 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 3daa9f6..1400b9f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -180,6 +180,11 @@
* Remove Notification Command user settings, please use flexible notifications instead
+1.2.2p3:
+ Checks & Agents:
+ * FIX: winperf_processor: fix case where CPU percent is exactly 100%
+
+
1.2.2p2:
Core:
* FIX: livecheck: fixed handling of one-line plugin outputs and missing \n
diff --git a/checks/winperf_processor b/checks/winperf_processor
index 140ed02..75fd9e8 100644
--- a/checks/winperf_processor
+++ b/checks/winperf_processor
@@ -50,18 +50,15 @@ def check_winperf_util(_no_item, params, info):
ticks = int(line[-2])
num_cpus = len(line) - 3
timedif, ticks_per_sec = get_counter("winperf_util", this_time, ticks)
- if ticks_per_sec == 0.0:
- used_perc = 0.0
- else:
- # We get the value of the PERF_100NSEC_TIMER_INV here.
- # This counter type shows the average percentage of active time observed
- # during the sample interval. This is an inverse counter. Counters of this
- # type calculate active time by measuring the time that the service was
- # inactive and then subtracting the percentage of active time from 100 percent.
- #
- # 1 tick = 100ns, convert to seconds
- cpusecs_per_sec = ticks_per_sec / 10000000.0
- used_perc = 100 * (1 - cpusecs_per_sec)
+ # We get the value of the PERF_100NSEC_TIMER_INV here.
+ # This counter type shows the average percentage of active time observed
+ # during the sample interval. This is an inverse counter. Counters of this
+ # type calculate active time by measuring the time that the service was
+ # inactive and then subtracting the percentage of active time from 100 percent.
+ #
+ # 1 tick = 100ns, convert to seconds
+ cpusecs_per_sec = ticks_per_sec / 10000000.0
+ used_perc = 100.0 * (1 - cpusecs_per_sec)
# Due to timeing invariancies the measured level can become > 100%.
# This makes users unhappy, so cut it off.
Module: check_mk
Branch: master
Commit: a1d0aa77e2763e798bb064fd05ab2decc60f55a8
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a1d0aa77e2763e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Jun 14 11:31:38 2013 +0200
Notify helper: restart itself after config change
---
modules/notify.py | 89 ++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 68 insertions(+), 21 deletions(-)
diff --git a/modules/notify.py b/modules/notify.py
index 8d5f9fc..2bc9257 100644
--- a/modules/notify.py
+++ b/modules/notify.py
@@ -34,8 +34,7 @@
# hostname, servicedesc, hoststate, servicestate, output in
# the form %(variable)s
-import pprint
-import urllib
+import pprint, urllib, select
# Default settings
notification_logdir = var_dir + "/notify"
@@ -322,44 +321,92 @@ def do_notify(args):
os.makedirs(crash_dir)
file(crash_dir + "/crash.log", "a").write("CRASH:\n%s\n\n" % format_exception())
+
+def notify_data_available():
+ readable, writeable, exceptionable = select.select([0], [], [], None)
+ return not not readable
+
+def notify_config_timestamp():
+ mtime = 0
+ for dirpath, dirnames, filenames in os.walk(check_mk_configdir):
+ for f in filenames:
+ mtime = max(mtime, os.stat(dirpath + "/" + f).st_mtime)
+ mtime = max(mtime, os.stat(default_config_dir + "/main.mk").st_mtime)
+ try:
+ mtime = max(mtime, os.stat(default_config_dir + "/final.mk").st_mtime)
+ except:
+ pass
+ try:
+ mtime = max(mtime, os.stat(default_config_dir + "/local.mk").st_mtime)
+ except:
+ pass
+ return mtime
+
+
+
def notify_keepalive():
+ global g_notify_readahead_buffer
+ g_notify_readahead_buffer = ""
+ config_timestamp = notify_config_timestamp()
+
while True:
try:
- notify_notify()
+ # 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
+ # must *not* restart when there is danger that the buffered
+ # sys.stdin has already read data from the next notification. That
+ # would get lost! So we do restart if:
+ # - The last time we look *no* data was available on stdin.
+ # - Now there *is* data available
+ # - The buffer of stdin is empty
+ # - The timestamp of the youngest configuration file has changed.
+ if notify_data_available():
+ if not g_notify_readahead_buffer:
+ current_config_timestamp = notify_config_timestamp()
+ if current_config_timestamp > config_timestamp:
+ notify_log("Configuration has changed. Restarting myself.")
+ os.execvp("cmk", sys.argv)
+
+ new_data = os.read(0, 4096)
+ if not new_data:
+ sys.exit(0) # closed stdin
+ g_notify_readahead_buffer += new_data
+ if g_notify_readahead_buffer.startswith('\n\n'):
+ exit(0)
+ while '\n\n' in g_notify_readahead_buffer:
+ notify_notify()
except Exception, e:
if opt_debug:
raise
notify_log("ERROR %s\n%s" % (e, format_exception()))
def notify_get_context():
+ global g_notify_readahead_buffer
if opt_keepalive:
- # Context read from stdin, variables with NOTIFY_ prefix. End of
- # block is by empty line
+ # Context is line-by-line in g_notify_readahead_buffer
+ this_part, rest = g_notify_readahead_buffer.split('\n\n', 1)
+ g_notify_readahead_buffer = rest
context = {}
- while True:
- try:
- line = sys.stdin.readline()
- if not line:
- sys.exit(0) # End of transmission
- line = line.strip()
- if not line:
- return context # End of this notification
- else:
- varname, value = line.split("=", 1)
- context[varname] = value
- except Exception, e:
- if opt_debug:
- raise
+ try:
+ for line in this_part.split('\n'):
+ varname, value = line.strip().split("=", 1)
+ context[varname] = value
+ except Exception, e: # line without '=' ignored or alerted
+ if opt_debug:
+ raise
+ return context
+
else:
# Information about notification is excpected in the
# environment in variables with the prefix NOTIFY_
- context = dict([
+ return dict([
(var[7:], value.decode("utf-8"))
for (var, value)
in os.environ.items()
if var.startswith("NOTIFY_")
and not re.match('^\$[A-Z]+\$$', value)])
- return context
+
def notify_notify():
Module: check_mk
Branch: master
Commit: 37b8b9d79e1317b17216e25c07b725d2bddd8e82
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=37b8b9d79e1317…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Jun 14 10:11:25 2013 +0200
EC: better detect non-IP-number hosts in hostname translation
---
ChangeLog | 1 +
mkeventd/bin/mkeventd | 9 +++++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1d17326..3daa9f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -41,6 +41,7 @@
* New global setting "force message archiving", converts the EC into
a kind of syslog archive
* FIX: fix layout of filter for history action type
+ * FIX: better detect non-IP-number hosts in hostname translation
1.2.3i1:
Core:
diff --git a/mkeventd/bin/mkeventd b/mkeventd/bin/mkeventd
index 37a3ff2..3d63bd9 100755
--- a/mkeventd/bin/mkeventd
+++ b/mkeventd/bin/mkeventd
@@ -1556,8 +1556,13 @@ class EventServer:
backedhost = backedhost.lower()
# 2. Drop domain part (not applied to IP addresses!)
- if translation.get("drop_domain") and backedhost and not backedhost[0].isdigit():
- backedhost = backedhost.split(".", 1)[0]
+ if translation.get("drop_domain") and backedhost:
+ # only apply if first part does not convert successfully into an int
+ firstpart = backedhost.split(".", 1)[0]
+ try:
+ int(firstpart)
+ except:
+ backedhost = firstpart
# 3. Regular expression conversion
if "regex" in translation:
Module: check_mk
Branch: master
Commit: 2ebc4565ce69faa2cf02246304531ca6da9fe8c2
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2ebc4565ce69fa…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Jun 14 10:10:52 2013 +0200
Cleaned up ChangeLog
---
ChangeLog | 28 +++++++++++++---------------
1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 73ab12a..1d17326 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,27 +2,12 @@
Core:
* New option -B for just generating the configuration
- Multisite:
- * User accounts can now be locked after a specified amount of auth
- failures (lock_on_logon_failures can be set to a number of tries)
- * FIX: better error message in case of exception in SNMP handling
- * Column Perf-O-Meter is now sortable: it sorts after the *first*
- performance value. This might not always be the one you like, but
- its far better than nothing.
- * logwatch: Logwatch icon no longer uses notes_url
- * check_mk-if.pnp: fixed bug with pnp template on esx hosts without perfdata
-
Checks & Agents:
* esx_hostystem multipath: criticize standby paths only if not equal to active paths
* mk_logwatch: fixed bug when rewriting logwatch messages
* check_mk: Re-inventory is no longer required when a service is ignored via rule
* check_mk: Now possible to assign services to clusters without the need to
reinventorize
-
- WATO:
- * Allow to configure check-/retry_interval in second precision
-
- Checks & Agents:
* lnx_if: Fixed crash on missing "Address" field
* viprinet_router: Now able to set required target state via rule
* windows_agent: Now available as 64 bit version
@@ -35,6 +20,19 @@
* FIX: esx_vsphere_datastores: Fix incomplete performance data and Perf-O-Meter
* fileinfo: no longer inventorize missing files(reported by windows agent)
+ Multisite:
+ * User accounts can now be locked after a specified amount of auth
+ failures (lock_on_logon_failures can be set to a number of tries)
+ * FIX: better error message in case of exception in SNMP handling
+ * Column Perf-O-Meter is now sortable: it sorts after the *first*
+ performance value. This might not always be the one you like, but
+ its far better than nothing.
+ * logwatch: Logwatch icon no longer uses notes_url
+ * check_mk-if.pnp: fixed bug with pnp template on esx hosts without perfdata
+
+ WATO:
+ * Allow to configure check-/retry_interval in second precision
+
Notifications:
* Flexible Notification can now filter service levels
* FIX: check_tcp corrected order of parameters in definition