Module: check_mk
Branch: master
Commit: 0b3efcfed868e13bba205be6202798de424e0fdd
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=0b3efcfed868e1…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Sun Mar 31 12:46:23 2013 +0200
FIX: hopefully fix computation of Speed-O-Meter
---
ChangeLog | 1 +
web/htdocs/sidebar.py | 51 ++++++++++++++++++++++++++----------------------
2 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 82a63b5..0fd96f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -93,6 +93,7 @@
Multisite:
* FIX: fix localization in non-OMD environment
(thanks to あきら)
+ * FIX: hopefully fix computation of Speed-O-Meter
* Add $SERVICEOUTPUT$ and $HOSTOUTPUT$ to allowed macros for
custom notes
diff --git a/web/htdocs/sidebar.py b/web/htdocs/sidebar.py
index fb990f5..7f5cbc5 100644
--- a/web/htdocs/sidebar.py
+++ b/web/htdocs/sidebar.py
@@ -414,39 +414,44 @@ def ajax_speedometer():
# That way we save CPU resources since the computation of the
# scheduled checks rate needs to loop over all hosts and services.
if last_program_start != program_start:
- scheduled_rate = 0.0
-
- # First get data of all active checks
- for what in [ "host", "service" ]:
- data = html.live.query_summed_stats(
- "GET %ss\nStats: suminv check_interval\n"
- "Filter: active_checks_enabled = 1" % what)
-
- scheduled_rate += data[0] / 60.0
-
- # HACK:
- # The Check_MK passive checks are always added to Nagios with
- # a check interval of 1 minute. If one chancges the check interval
- # of the Check_MK service, the intervals of the passive services
- # change in fact. But this change is not added to the nagios config
- # of these objects. Workaround here: Get interval of Check_MK service
- # and add it as interval to the cmk passive checks
+
+ # 1. First compute number of expected host checks per second
+ scheduled_rate = html.live.query_summed_stats(
+ "GET hosts\n"
+ "Stats: suminv check_interval\n")[0] / 60.0
+
+ # 2. Now get data of all active services and of
passive/non-check_mk-services.
+ # For passive services we assume that they are scheduled with the rate the
+ # is configured via "check_interval". Nagios does not use this
setting for i
+ # passive checks, but we have no other option.
+ scheduled_rate += html.live.query_summed_stats(
+ "GET services\n"
+ "Stats: suminv check_interval\n"
+ "Filter: active_checks_enabled = 1\n"
+ "Filter: check_command ~ ^check_mk-\n"
+ "Negate:\n"
+ "Filter: active_checks_enabled = 0\n"
+ "And: 2\n"
+ "Or: 2\n")[0] / 60.0
+
+ # 3. Acount for check_mk-checks. Here we need to check interval of the
+ # Check_MK services on the host. Its check rate applies to the passive
+ # checks. First get the check intervals of the check_mk checks:
intervals = html.live.query_table(
"GET services\n"
"Columns: host_name check_interval\n"
"Filter: description = Check_MK")
+ # Now get the number of passive check_mk checks for each host and convert
+ # it to a dict from host -> number of services
num_svcs = dict(html.live.query_table(
"GET services\n"
- "Columns:host_name\n"
+ "Columns: host_name\n"
"Stats: check_command ~ ^check_mk-"))
- for line in intervals:
- host_name, check_interval = line
+ for host_name, check_interval in intervals:
num_services = num_svcs.get(host_name, 0)
-
- file('/tmp/3', 'a').write('%s %d %0.2f\n' %
(host_name, num_services, 1.0 / (check_interval / 60.0) * num_services))
- scheduled_rate += 1.0 / ((check_interval / 60.0) * num_services)
+ scheduled_rate += float(num_services) / check_interval / 60.0
percentage = 100.0 * current_rate / scheduled_rate;
title = _("Scheduled check rate: %.1f/s, current rate: %.1f/s, that is
"