Module: check_mk
Branch: master
Commit: 31c663ce9d311d712c60c63b197768a58ef39243
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=31c663ce9d311d…
Author: Sebastian Herbord <sh(a)mathias-kettner.de>
Date: Wed Apr 27 15:31:42 2016 +0200
3126 FIX fixed crash in some wmi-based checks when items disappear from the agent output
---
.werks/3126 | 10 ++++++++++
ChangeLog | 1 +
checks/wmi.include | 21 +++++++++++++++++----
3 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/.werks/3126 b/.werks/3126
new file mode 100644
index 0000000..c750b32
--- /dev/null
+++ b/.werks/3126
@@ -0,0 +1,10 @@
+Title: fixed crash in some wmi-based checks when items disappear from the agent output
+Level: 1
+Component: checks
+Class: fix
+Compatible: compat
+State: unknown
+Version: 1.2.9i1
+Date: 1461763841
+
+
diff --git a/ChangeLog b/ChangeLog
index 56cff79..5b813fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -192,6 +192,7 @@
* 3438 FIX: mk_mongodb: Fixed agent plugin handling when pymongo can not be imported
* 3441 FIX: ps: Added missing graph for number of processes
* 3429 FIX: ps, mem.linux, mem.include: fixed missing parse_proc_meminfo_bytes during
precompiling
+ * 3126 FIX: fixed crash in some wmi-based checks when items disappear from the agent
output
Multisite:
* 3187 notification view: new filter for log command via regex
diff --git a/checks/wmi.include b/checks/wmi.include
index 6dcb798..425f75e 100644
--- a/checks/wmi.include
+++ b/checks/wmi.include
@@ -243,7 +243,10 @@ def wmi_yield_raw_persec(table, row, column, label, perfvar,
levels=None):
levels = wmi_fix_levels(levels)
- value = int(table.get(row, column))
+ try:
+ value = int(table.get(row, column))
+ except KeyError:
+ return 3, "item not present anymore", []
value_per_sec = get_rate(column, get_wmi_time(table, row), value)
@@ -259,7 +262,10 @@ def wmi_yield_raw_counter(table, row, column, label, perfvar,
levels=None):
levels = wmi_fix_levels(levels)
- value = int(table.get(row, column))
+ try:
+ value = int(table.get(row, column))
+ except KeyError:
+ return 3, "item not present anymore", []
status = wmi_determine_status(value, levels)
@@ -296,7 +302,10 @@ def wmi_calculate_raw_average(table, row, column, factor):
def wmi_yield_raw_average(table, row, column, label, perfvar, levels=None):
levels = wmi_fix_levels(levels)
- average = wmi_calculate_raw_average(table, row, column, 1)
+ try:
+ average = wmi_calculate_raw_average(table, row, column, 1)
+ except KeyError:
+ return 3, "item not present anymore", []
return (
wmi_determine_status(average, levels),
@@ -308,7 +317,11 @@ def wmi_yield_raw_average(table, row, column, label, perfvar,
levels=None):
def wmi_yield_raw_fraction(table, row, column, label, perfvar, levels=None):
levels = wmi_fix_levels(levels)
- average = wmi_calculate_raw_average(table, row, column, 100)
+ try:
+ average = wmi_calculate_raw_average(table, row, column, 100)
+ except KeyError:
+ return 3, "item not present anymore", []
+
status = wmi_determine_status(average, levels)
return (