Module: check_mk
Branch: master
Commit: f64c6fb215f313e8b935d8cec2b3f4ad03816595
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f64c6fb215f313…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Dec 8 22:41:53 2014 +0100
Thanks to Hermann Maurer.
---
.werks/1721 | 9 ++++++++
ChangeLog | 1 +
checks/dell_om_mem | 64 ++++++++++++++++++++++++++++------------------------
3 files changed, 44 insertions(+), 30 deletions(-)
diff --git a/.werks/1721 b/.werks/1721
new file mode 100644
index 0000000..d922ed3
--- /dev/null
+++ b/.werks/1721
@@ -0,0 +1,9 @@
+Title: dell_om_mem: Handle formerly unhandled situations with multiple errors
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.5i7
+Date: 1418074869
+Class: fix
+
+Thanks for the bug report to Hermann Maurer.
diff --git a/ChangeLog b/ChangeLog
index e09711c..51a278d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -131,6 +131,7 @@
* 1712 FIX: hyper_vms: fixed for snapshot VMs with (...) in their names...
* 1713 FIX: check_fstab_mounts: now correctly ignores swap space...
* 1716 FIX: windows_tasks: consider state SCHED_S_TASK_QUEUED (0x00041325) as OK now
+ * 1721 FIX: dell_om_mem: Handle formerly unhandled situations with multiple
errors...
Multisite:
* 1508 Allow input of plugin output and perfdata when faking check results...
diff --git a/checks/dell_om_mem b/checks/dell_om_mem
index 3ed4562..4122758 100644
--- a/checks/dell_om_mem
+++ b/checks/dell_om_mem
@@ -27,52 +27,56 @@
def inventory_dell_om_mem(info):
return [ (x[0], None) for x in info ]
+# DellMemoryDeviceFailureModes ::= INTEGER {
+# -- Note: These values are bit masks, so combination values are possible.
+# -- If value is 0 (zero), memory device has no faults.
+# eccSingleBitCorrectionWarningRate(1), -- ECC single bit correction warning
rate exceeded
+# eccSingleBitCorrectionFailureRate(2), -- ECC single bit correction failure
rate exceeded
+# eccMultiBitFault(4), -- ECC multibit fault encountered
+# eccSingleBitCorrectionLoggingDisabled(8), -- ECC single bit correction logging
disabled
+# deviceDisabledBySpareActivation(16) -- device disabled because of spare
activation
+
+
def check_dell_om_mem(item, _no_params, info):
- failure_mode = {
- 0 : 'No failure',
- 1 : 'ECC single bit correction warning rate exceeded',
- 2 : 'ECC single bit correction failure rate exceeded',
- 4 : 'ECC multibit fault encountered',
- 8 : 'ECC single bit correction logging disabled',
+ failure_modes = {
+ 1 : 'ECC single bit correction warning rate exceeded',
+ 2 : 'ECC single bit correction failure rate exceeded',
+ 4 : 'ECC multibit fault encountered',
+ 8 : 'ECC single bit correction logging disabled',
16 : 'device disabled because of spare activation',
}
for location, status, size, failuremode in info:
if location == item:
- status = saveint(status)
- failuremode = saveint(failuremode)
- state = 0
- msg = ""
- if status != 3:
- state = 2
- msg = "Modul State is %s(!!), " % status
- label = ""
- if failuremode in [ 2, 4 ]:
- state = 2
- label = "(!!)"
- elif failuremode in [ 1, 8, 16 ]:
- state = 1
- label = "(!)"
-
- size = get_bytes_human_readable(int(size)*1024)
- return state, msg + "Failuremode: %s%s, Size: %s" % \
- (failure_mode[failuremode], label, size)
+ status = int(status)
+ failuremode = int(failuremode)
+ if failuremode == 0:
+ yield 0, "No failure"
+ else:
+ bitmask = 1
+ while bitmask <= 16:
+ if failuremode & bitmask != 0:
+ if bitmask in [2, 4]:
+ yield 2, failure_modes[bitmask]
+ elif bitmask in [1, 8, 16]:
+ yield 1, failure_modes[bitmask]
+ bitmask *= 2
+ yield 0, "Size: %s" % get_bytes_human_readable(int(size) * 1024)
- return 3, "Module not found in SNMP tree"
check_info["dell_om_mem"] = {
"check_function" : check_dell_om_mem,
"inventory_function" : inventory_dell_om_mem,
- "service_description" : "Module %s",
+ "service_description" : "Memory Module %s",
"has_perfdata" : False,
# There is no other way to find out that openmanage is present.
"snmp_scan_function" : scan_dell_om,
"snmp_info" : ( ".1.3.6.1.4.1.674.10892.1.1100.50.1",
[
- "8.1", #Location
- "5.1", #Status
- "14.1", #Size
- "20.1", #FailureMode
+ "8.1", # Location
+ "5.1", # Status
+ "14.1", # Size
+ "20.1", # FailureMode
]),
"includes" : [ "dell_om.include" ],
}