Module: check_mk
Branch: master
Commit: b93fba8a7238162906dc0d2c8b78ab54baae9784
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=b93fba8a723816…
Author: Moritz Kiemer <mo(a)mathias-kettner.de>
Date: Thu Apr 4 11:06:55 2019 +0200
mongodb_mem: modernize
Change-Id: I1f4c5c32b069f957ce3a0ca93a2596d7a1fe09ca
---
checks/mongodb_mem | 45 ++++++++++++++++++++++++---------------------
1 file changed, 24 insertions(+), 21 deletions(-)
diff --git a/checks/mongodb_mem b/checks/mongodb_mem
index 1af6d3f..337678e 100644
--- a/checks/mongodb_mem
+++ b/checks/mongodb_mem
@@ -36,37 +36,40 @@
# heap_usage_bytes 65501032
-def inventory_mongodb_mem(info):
- return [(None, {})]
+def parse_mongodb_mem(info):
+ parsed = {}
+ for line in info:
+ key, value = line[0], " ".join(line[1:])
+ try:
+ parsed[key] = int(value)
+ except ValueError:
+ parsed[key] = value
+ return parsed
-def check_mongodb_mem(_no_item, params, info):
- info_dict = {x[0]: " ".join(x[1:]) for x in info}
+def check_mongodb_mem(_no_item, params, parsed):
- for what in ["resident", "virtual", "mapped"]:
- value_bytes = int(info_dict[what]) * 1024**2
- warn, crit = None, None
- state = 0
- if "%s_levels" % what in params:
- warn, crit = params["%s_levels" % what]
- if value_bytes >= crit:
- state = 2
- elif value_bytes >= warn:
- state = 1
- yield state, "%s usage: %s" % (what.title(),
get_bytes_human_readable(value_bytes)),\
- [ ("process_%s_size" % what, value_bytes, warn, crit) ]
+ for key in ("resident", "virtual", "mapped"):
+ value_bytes = parsed[key] * 1024**2
+ levels = params.get("%s_levels" % key, (None, None))
+ yield check_levels(
+ value_bytes,
+ "process_%s_size" % key,
+ levels,
+ human_readable_func=get_bytes_human_readable,
+ infoname="%s usage" % key.title())
# MongoDB doc: If virtual value is significantly larger than mapped (e.g. 3 or more
times),
# this may indicate a memory leak.
- virtual_bytes = float(info_dict["virtual"])
- mapped_bytes = float(info_dict["mapped"])
- virt_mapped_factor = virtual_bytes / mapped_bytes
+ virt_mapped_factor = parsed["virtual"] / float(parsed["mapped"])
if virt_mapped_factor >= 3:
- yield 1, "Virtual size is %.1f times the mapped size (Possible memory
leak)" % virt_mapped_factor
+ textfmt = "Virtual size is %.1f times the mapped size (possible memory
leak)"
+ yield 1, textfmt % virt_mapped_factor
check_info['mongodb_mem'] = {
- "inventory_function": inventory_mongodb_mem,
+ "parse_function": parse_mongodb_mem,
+ "inventory_function": discover_single,
"check_function": check_mongodb_mem,
"service_description": "Memory used MongoDB",
"group": "mongodb_mem",