Module: check_mk
Branch: master
Commit: f3c8aaa68bdf43480870137cb3b76e647aa9a55f
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f3c8aaa68bdf43…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Dec 5 11:43:56 2014 +0100
#1703 FIX ups_test: Fix computation of time since last self test
Instead of the time since the last self test of the battery, the check used
the time the last test has <i>lasted</i>. So this check did not trigger
an alarm every - just for the summary state of the last test.
Thanks for the bug report to Cyril Pawelko!
---
.werks/1703 | 13 ++++++++++
ChangeLog | 1 +
checks/snmp_uptime | 12 +--------
checks/ups_test | 65 +++++++++++++++++++++++--------------------------
checks/uptime.include | 11 +++++++++
5 files changed, 56 insertions(+), 46 deletions(-)
diff --git a/.werks/1703 b/.werks/1703
new file mode 100644
index 0000000..08f05ef
--- /dev/null
+++ b/.werks/1703
@@ -0,0 +1,13 @@
+Title: ups_test: Fix computation of time since last self test
+Level: 2
+Component: checks
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417776132
+Class: fix
+
+Instead of the time since the last self test of the battery, the check used
+the time the last test has <i>lasted</i>. So this check did not trigger
+an alarm every - just for the summary state of the last test.
+
+Thanks for the bug report to Cyril Pawelko!
diff --git a/ChangeLog b/ChangeLog
index 60ba542..05e9e70 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -117,6 +117,7 @@
* 1682 FIX: cmciii_lcp_waterflow: Check can now deal with devices with a different setup
* 1701 FIX: Correctly show absolute level for CPU load in case of warn/crit...
* 1702 FIX: Fix check_notify_count: notification had been counted twice...
+ * 1703 FIX: ups_test: Fix computation of time since last self test...
Multisite:
* 1508 Allow input of plugin output and perfdata when faking check results...
diff --git a/checks/snmp_uptime b/checks/snmp_uptime
index 8cc9ddb..f2dde6b 100644
--- a/checks/snmp_uptime
+++ b/checks/snmp_uptime
@@ -29,18 +29,8 @@ def inventory_snmp_uptime(info):
if len(info) > 0 and len(info[0]) >= 1:
return [ (None, {}) ]
-
def check_snmp_uptime(checktype, params, info):
- ticks = info[0][0]
- try:
- if len(ticks) < 3:
- uptime = 0
- else:
- uptime = int(ticks[:-2])
- except:
- days, h, m, s = ticks.split(":")
- uptime = (int(days) * 86400 ) + (int(h) * 3600) + (int(m) * 60) + int(float(s))
-
+ uptime = parse_snmp_uptime(info[0][0])
return check_uptime_seconds(params, uptime)
diff --git a/checks/ups_test b/checks/ups_test
index ccbdc59..0324b58 100644
--- a/checks/ups_test
+++ b/checks/ups_test
@@ -76,58 +76,53 @@
# value of upsTestResultsSummary is noTestsInitiated(6),
# upsTestStartTime has the value 0."
-# OID: 1.3.6.1.2.1.33.1.7.6
-# Description:
-# upsTestElapsedTime OBJECT-TYPE
-# SYNTAX TimeInterval
-# MAX-ACCESS read-only
-# STATUS current
-# DESCRIPTION
-# "The amount of time, in TimeTicks, since the test in
-# progress was initiated, or, if no test is in progress,
-# the previous test took to complete. If the value of
-# TestResultsSummary is noTestsInitiated(6),
-# upsTestElapsedTime has the value 0."
-
-ups_test_default = ( 0, 0 )
+ups_test_default = (0, 0)
def inventory_ups_test(info):
- if info:
+ if info[1]:
return [ (None, "ups_test_default") ]
def check_ups_test(_no_item, params, info):
warn, crit = params
- line = info[0]
- ResultsSummary, StartTime, ElapsedTime = map(saveint, line[:-1])
- message = line[3]
+ uptime_info, bat_info = info
+ ResultsSummary, StartTime, upsTestResultsDetail = bat_info[0]
+ uptime = parse_snmp_uptime(uptime_info[0][0])
+ start_time = parse_snmp_uptime(StartTime)
# State of test
state = 0
- if ResultsSummary in [ 3, 4 ]:
+ print ResultsSummary
+ if ResultsSummary in [ '3', '4' ]:
state = 2
- elif ResultsSummary in [ 2, 6 ]:
+ elif ResultsSummary in [ '2' ]:
state = 1
- if message or state:
- yield state, message
+ if upsTestResultsDetail or state:
+ yield state, upsTestResultsDetail
- # Elapsed time
- ElapsedTime = ElapsedTime/100
+ # Elapsed time since last start of test
+ elapsed = uptime - start_time
state = 0
- if crit and ElapsedTime >= crit * 86400:
+ if crit and elapsed >= crit * 86400:
state = 2
- elif warn and ElapsedTime >= warn * 86400:
+ elif warn and elapsed >= warn * 86400:
state = 1
- yield state, "time elapsed since test: %s" % get_age_human_readable(ElapsedTime)
+ if start_time:
+ yield state, "time elapsed since start of last test: %s" % get_age_human_readable(elapsed)
+ else:
+ yield state, "no battery test since start of device (%s ago)" % get_age_human_readable(uptime)
check_info['ups_test'] = {
- "inventory_function" : inventory_ups_test,
- "check_function" : check_ups_test,
- "service_description" : "Self Test",
- "has_perfdata" : False,
- "group" : "ups_test",
- "snmp_info" : ( ".1.3.6.1.2.1.33.1.7", [ 3, 5, 6, 4 ] ),
- "snmp_scan_function" : lambda oid: oid(".1.3.6.1.2.1.1.2.0") in [ ".1.3.6.1.4.1.534.1", ".1.3.6.1.4.1.818.1.100.1.2" ]
-
+ "inventory_function" : inventory_ups_test,
+ "check_function" : check_ups_test,
+ "service_description" : "Self Test",
+ "has_perfdata" : False,
+ "group" : "ups_test",
+ "snmp_info" : [
+ ('.1.3.6.1.2.1.1', ['3.0']), # sysUptime
+ ( ".1.3.6.1.2.1.33.1.7", [ 3, 5, 4 ] ),
+ ],
+ "snmp_scan_function" : lambda oid: oid(".1.3.6.1.2.1.1.2.0") in [ ".1.3.6.1.4.1.534.1", ".1.3.6.1.4.1.818.1.100.1.2" ],
+ "includes" : [ 'uptime.include' ],
}
diff --git a/checks/uptime.include b/checks/uptime.include
index 099cb3f..fda4b81 100644
--- a/checks/uptime.include
+++ b/checks/uptime.include
@@ -25,6 +25,17 @@
# Boston, MA 02110-1301 USA.
+
+def parse_snmp_uptime(ticks):
+ try:
+ if len(ticks) < 3:
+ return 0
+ else:
+ return int(ticks[:-2])
+ except:
+ days, h, m, s = ticks.split(":")
+ return (int(days) * 86400 ) + (int(h) * 3600) + (int(m) * 60) + int(float(s))
+
# Example for params:
# {
# "min" : ( 7200, 3600 ), # Minimum required uptime (warn, crit)
notification had been counted twice
Message-ID: <54817e82.QqxRJnfhZaMvDeRw%mk(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: 9ae3e0fe1300cfbdf01a1778810ed08bf774c2fd
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9ae3e0fe1300cf…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Dec 5 10:44:17 2014 +0100
#1702 FIX Fix check_notify_count: notification had been counted twice
The active check for counting the notifications of users have been fixed.
The dummy contact <tt>check-mk-notify</tt> is now being handled separately.
We make a distinction between <i>raw notifications</i> - notifications created
by the monitoring - and <i>user notification</i> - those being sent out
to users.
Note: in the rule based notifications one raw notification can create several
user notifications. Other raw notifcations might create no user notification
at all.
---
.werks/1702 | 17 +++++++++
ChangeLog | 1 +
doc/treasures/active_checks/check_notify_count | 46 +++++++++++++-----------
web/plugins/wato/active_checks.py | 2 +-
4 files changed, 45 insertions(+), 21 deletions(-)
diff --git a/.werks/1702 b/.werks/1702
new file mode 100644
index 0000000..b244068
--- /dev/null
+++ b/.werks/1702
@@ -0,0 +1,17 @@
+Title: Fix check_notify_count: notification had been counted twice
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417772551
+Class: fix
+
+The active check for counting the notifications of users have been fixed.
+The dummy contact <tt>check-mk-notify</tt> is now being handled separately.
+We make a distinction between <i>raw notifications</i> - notifications created
+by the monitoring - and <i>user notification</i> - those being sent out
+to users.
+
+Note: in the rule based notifications one raw notification can create several
+user notifications. Other raw notifcations might create no user notification
+at all.
diff --git a/ChangeLog b/ChangeLog
index 78f7ee5..60ba542 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -116,6 +116,7 @@
* 1681 FIX: cmciii_lcp_fans: Skipping non FAN units now; cleaned up check
* 1682 FIX: cmciii_lcp_waterflow: Check can now deal with devices with a different setup
* 1701 FIX: Correctly show absolute level for CPU load in case of warn/crit...
+ * 1702 FIX: Fix check_notify_count: notification had been counted twice...
Multisite:
* 1508 Allow input of plugin output and perfdata when faking check results...
diff --git a/doc/treasures/active_checks/check_notify_count b/doc/treasures/active_checks/check_notify_count
index 423b2a0..d1ae52b 100755
--- a/doc/treasures/active_checks/check_notify_count
+++ b/doc/treasures/active_checks/check_notify_count
@@ -41,16 +41,16 @@ USAGE: check_notify_count
check_notify_count -h
OPTIONS:
- -h, --help Show this help message and exit
- -l PATH Path to livestatus socket (Autodetected in OMD)
- -r MINUTES Timerange in the past to observe, given in minutes.
- Default is set to 60 minutes.
- -w NUM Minumum number of notifications per contact in
- timerange to raise a WARNING state.
- Disabled by default.
- -c NUM Minumum number of notifications per contact in
- timerange to raise a CRITICAL state.
- Disabled by default.
+ -h, --help Show this help message and exit
+ -l PATH Path to livestatus socket (Autodetected in OMD)
+ -r MINUTES Timerange in the past to observe, given in minutes.
+ Default is set to 60 minutes.
+ -w NUM Minumum number of notifications per contact in
+ timerange to raise a WARNING state.
+ Disabled by default.
+ -c NUM Minumum number of notifications per contact in
+ timerange to raise a CRITICAL state.
+ Disabled by default.
""")
@@ -104,19 +104,25 @@ total_num = 0
perfdata = []
state = 0
details = []
+
+num_users = 0
+raw_notifications = 0
for contact_name, num in c.query_table(query):
- total_num += num
+ if contact_name == "check-mk-notify":
+ raw_notifications += num
+ else:
+ total_num += num
+
+ if crit != None and num > crit:
+ state = max(state, 2)
+ details.append('%s got %d (> %d)(!!)' % (contact_name, num, crit))
- if crit != None and num > crit:
- state = max(state, 2)
- details.append('%s got %d (>%d) (!!)' % (contact_name, num, crit))
- elif warn != None and num > warn:
- state = max(state, 1)
- details.append('%s got %d (>%d) (!)' % (contact_name, num, warn))
+ elif warn != None and num > warn:
+ state = max(state, 1)
+ details.append('%s got %d (> %d)(!)' % (contact_name, num, warn))
perfdata.append('%s_num=%d' % (contact_name, num))
detail_txt = details and ' (%s)' % ', '.join(details) or ''
-sys.stdout.write('%d notifications within last %d minutes%s | %s\n' %
- (total_num, timerange, detail_txt, ' '.join(perfdata)))
-sys.exit(0)
+sys.stdout.write('%d raw notifications, %d user notifications within last %d minutes%s | %s\n' %
+ (raw_notifications, total_num, timerange, detail_txt, ' '.join(perfdata)))
diff --git a/web/plugins/wato/active_checks.py b/web/plugins/wato/active_checks.py
index 8def316..cea3cc4 100644
--- a/web/plugins/wato/active_checks.py
+++ b/web/plugins/wato/active_checks.py
@@ -1387,7 +1387,7 @@ register_rule(group,
"log file of your monitoring core."),
elements = [
TextUnicode(
- title = _("Name"),
+ title = _("Service Description"),
help = _("The name that will be used in the service description"),
allow_empty = False
),
Module: check_mk
Branch: master
Commit: e1e73713a3b3bc0c75fab1b2ab3831509c6e3bb5
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e1e73713a3b3bc…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Dec 5 10:27:25 2014 +0100
#1701 FIX Correctly show absolute level for CPU load in case of warn/crit
In the check parameters of the CPU load check the levels are given in
load <i>per Core</i>. The check plugin output displayed this as level, but
this was confusing. Now the absolute level is being displayed instead.
---
.werks/1701 | 11 +++++++++++
ChangeLog | 1 +
modules/check_mk_base.py | 8 ++++----
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/.werks/1701 b/.werks/1701
new file mode 100644
index 0000000..0e77722
--- /dev/null
+++ b/.werks/1701
@@ -0,0 +1,11 @@
+Title: Correctly show absolute level for CPU load in case of warn/crit
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417771579
+Class: fix
+
+In the check parameters of the CPU load check the levels are given in
+load <i>per Core</i>. The check plugin output displayed this as level, but
+this was confusing. Now the absolute level is being displayed instead.
diff --git a/ChangeLog b/ChangeLog
index 428995a..78f7ee5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -115,6 +115,7 @@
* 1679 FIX: ups_bat_temp: Now skipping sensors which are reported to have 0 upsBatteryTemperature
* 1681 FIX: cmciii_lcp_fans: Skipping non FAN units now; cleaned up check
* 1682 FIX: cmciii_lcp_waterflow: Check can now deal with devices with a different setup
+ * 1701 FIX: Correctly show absolute level for CPU load in case of warn/crit...
Multisite:
* 1508 Allow input of plugin output and perfdata when faking check results...
diff --git a/modules/check_mk_base.py b/modules/check_mk_base.py
index c4cec73..00008af 100644
--- a/modules/check_mk_base.py
+++ b/modules/check_mk_base.py
@@ -1725,18 +1725,18 @@ def check_levels(value, dsname, params, unit="", factor=1.0, scale=1.0, statemar
# Critical cases
if crit_upper != None and value >= crit_upper:
state = 2
- infotexts.append("critical level at %.2f%s" % (crit_upper / factor / scale, unit))
+ infotexts.append("critical level at %.2f%s" % (crit_upper / scale, unit))
elif crit_lower != None and value <= crit_lower:
state = 2
- infotexts.append("too low: critical level at %.2f%s" % (crit_lower / factor / scale, unit))
+ infotexts.append("too low: critical level at %.2f%s" % (crit_lower / scale, unit))
# Warning cases
elif warn_upper != None and value >= warn_upper:
state = 1
- infotexts.append("warning level at %.2f%s" % (warn_upper / factor / scale, unit))
+ infotexts.append("warning level at %.2f%s" % (warn_upper / scale, unit))
elif warn_lower != None and value <= warn_lower:
state = 1
- infotexts.append("too low: warning level at %.2f%s" % (warn_lower / factor / scale, unit))
+ infotexts.append("too low: warning level at %.2f%s" % (warn_lower / scale, unit))
# OK
else:
service parameters per default now
Message-ID: <54817980.eNmkKY27iSOWracc%mk(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: f230ee1cd5cd07b2ac171929e351f876954eb6d4
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f230ee1cd5cd07…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Dec 5 10:22:28 2014 +0100
#1700 Enable icon for link to host/service parameters per default now
Also let it point to the general configuration page of that host/service, not
to its check parameters. Now also active checks and hosts have this icon.
---
.werks/1700 | 10 ++++++++++
ChangeLog | 1 +
web/plugins/config/builtin.py | 2 +-
web/plugins/icons/builtin.py | 23 ++++++++++++-----------
web/plugins/wato/check_mk_configuration.py | 2 +-
5 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/.werks/1700 b/.werks/1700
new file mode 100644
index 0000000..8bc0a01
--- /dev/null
+++ b/.werks/1700
@@ -0,0 +1,10 @@
+Title: Enable icon for link to host/service parameters per default now
+Level: 2
+Component: multisite
+Compatible: compat
+Version: 1.2.5i7
+Date: 1417771306
+Class: feature
+
+Also let it point to the general configuration page of that host/service, not
+to its check parameters. Now also active checks and hosts have this icon.
diff --git a/ChangeLog b/ChangeLog
index 1ca3481..303736f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -127,6 +127,7 @@
* 1558 Better visualize manually changed notification enable/disable
* 1621 Sorting Check_MK* services always on top of services lists
* 1636 Crash checks now have an icon for viewing and sending a crash dump...
+ * 1700 Enable icon for link to host/service parameters per default now...
* 1164 FIX: Fixed links from servicegroup overviews to single servicegroups
* 1166 FIX: Also prevting stylesheet update issues during version updates (just like for JS files)
* 1481 FIX: Fix broken layout of Host-, Service- and Contactgroup filters
diff --git a/web/plugins/config/builtin.py b/web/plugins/config/builtin.py
index 255f37d..11f4b2a 100644
--- a/web/plugins/config/builtin.py
+++ b/web/plugins/config/builtin.py
@@ -192,7 +192,7 @@ auth_by_http_header = False
table_row_limit = 100
# Add an icon pointing to the WATO rule to each service
-multisite_draw_ruleicon = False
+multisite_draw_ruleicon = True
# Default downtime configuration
adhoc_downtime = {}
diff --git a/web/plugins/icons/builtin.py b/web/plugins/icons/builtin.py
index 97fc581..86eafcb 100644
--- a/web/plugins/icons/builtin.py
+++ b/web/plugins/icons/builtin.py
@@ -118,18 +118,19 @@ multisite_icons.append({
def paint_rule_editor(what, row, tags, custom_vars):
- if config.may("wato.rulesets") and config.multisite_draw_ruleicon:
+ if config.wato_enabled and config.may("wato.rulesets") and config.multisite_draw_ruleicon:
+ urlvars = [("mode", "object_parameters"),
+ ("host", row["host_name"])]
+
if what == 'service':
- check_command = row["service_check_command"]
- if check_command.startswith("check_mk-") or \
- check_command.startswith("check_mk_active-"):
- url = html.makeuri_contextless( [("mode", "edit_ruleset"),
- ("check_command", row["service_check_command"]),
- ("service_description", row["service_description"]),
- ("host", row["host_name"])], "wato.py")
- title = _("Edit check parameters for this service")
- return '<a href="%s"><img title="%s" class=icon src="images/icon_rulesets.png"></a>' % \
- (url, title)
+ urlvars.append(("service", row["service_description"]))
+ title = _("View and edit parameters for this service")
+ else:
+ title = _("View and edit parameters for this host")
+
+ url = html.makeuri_contextless(urlvars, "wato.py")
+ return '<a href="%s"><img title="%s" class=icon src="images/icon_rulesets.png"></a>' % \
+ (url, title)
multisite_icons.append({
'service_columns': [ 'description', 'check_command', "host_name" ],
diff --git a/web/plugins/wato/check_mk_configuration.py b/web/plugins/wato/check_mk_configuration.py
index 03df040..626e839 100644
--- a/web/plugins/wato/check_mk_configuration.py
+++ b/web/plugins/wato/check_mk_configuration.py
@@ -240,7 +240,7 @@ register_configvar(group,
help = _("When enabled a rule editor icon is displayed for each "
"service in the multisite views. It is only displayed if the user "
"does have the permission to edit rules."),
- default_value = False),
+ default_value = True),
domain = "multisite")