Module: check_mk
Branch: master
Commit: e9c2330cfb84ca77c5b80ecb10398afcc0ab1fd5
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e9c2330cfb84ca…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Thu Jun 25 13:10:34 2015 +0200
#1260 jolokia_metrics.perm_gen: New Check to monitor used Perm Space on a JVM
---
.werks/1260 | 9 +++++++++
ChangeLog | 1 +
checkman/jolokia_metrics.perm_gen | 25 +++++++++++++++++++++++++
checks/jolokia_metrics | 34 +++++++++++++++++++++++++---------
web/plugins/metrics/check_mk.py | 14 ++++++++++++++
web/plugins/wato/check_parameters.py | 9 +++++++++
6 files changed, 83 insertions(+), 9 deletions(-)
diff --git a/.werks/1260 b/.werks/1260
new file mode 100644
index 0000000..e8cd24f
--- /dev/null
+++ b/.werks/1260
@@ -0,0 +1,9 @@
+Title: jolokia_metrics.perm_gen: New Check to monitor used Perm Space on a JVM
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.7i3
+Date: 1435230606
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 1bfe85d..311c7aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
1.2.7i3:
Checks & Agents:
* 2312 New checks for EMC VPLEX: emc_vplex_cpu, emc_vplex_director_stats,
emc_vplex_if, emc_vplex_volumes...
+ * 1260 jolokia_metrics.perm_gen: New Check to monitor used Perm Space on a JVM
1.2.7i2:
diff --git a/checkman/jolokia_metrics.perm_gen b/checkman/jolokia_metrics.perm_gen
new file mode 100644
index 0000000..9504bb4
--- /dev/null
+++ b/checkman/jolokia_metrics.perm_gen
@@ -0,0 +1,25 @@
+title: Perm Space usage of a JVM
+agents: linux
+catalog: app/java
+license: GPL
+distribution: check_mk
+description:
+ This check allows to monitor the usage of Perm Sprace
+ usage on web application servers.
+
+ To use this plugin, Jolokia and the agent plugin need to be installed
+ on the monitored server.
+ It will then fetch the memory usage from the JMX status info of the remote
+ Java Virtual Machine.
+
+item:
+ The name of the application server instance as configured by the agent.
+
+ }
+
+perfdata:
+ The Perm Space usage in bytes
+
+inventory:
+ One check is created for each Jolokia instance sent by the agent.
+
diff --git a/checks/jolokia_metrics b/checks/jolokia_metrics
index 1bae427..9d3890e 100644
--- a/checks/jolokia_metrics
+++ b/checks/jolokia_metrics
@@ -757,27 +757,43 @@ check_info["jolokia_metrics.bea_sess"] = {
"has_perfdata" : True,
}
-jolokia_metrics_permgen_default_levels = ( 10, 20 )
+jolokia_metrics_perm_gen_default_levels = { "perm" : ( 80.0, 100.0 ) }
-def inventory_jolokia_metrics_permgen(info):
+def inventory_jolokia_metrics_perm_gen(info):
parsed = jolokia_metrics_parse(info)
for instance, values in parsed.items():
if "PermGenUsage" in values:
- yield instance, "jolokia_metrics_permgen_default_levels"
+ yield instance, "jolokia_metrics_perm_gen_default_levels"
def check_jolokia_metrics_perm_gen(item, params, info):
parsed = jolokia_metrics_parse(info)
values = parsed.get(item)
- usage_bytes = int(values['PermGenUsage'])
- max_bytes = int(values['PermGenMax'])
if values:
- return 0, "Usage: %s, Max: %s" % (
get_bytes_human_readable(usage_bytes), get_bytes_human_readable(max_bytes) )
+ warn, crit = params['perm']
+ usage_bytes = int(values['PermGenUsage'])
+ size_bytes = int(values['PermGenMax'])
+ usage_perc = 100.0 / size_bytes * usage_bytes
+ warn_bytes = usage_bytes / 100.0 * warn
+ crit_bytes = usage_bytes / 100.0 * crit
+ perfdata = [("mem_perm_used", usage_bytes, warn_bytes, crit_bytes, 0,
size_bytes)]
+ state = 0
+ if usage_perc >= crit:
+ state = 2
+ elif usage_perc >= warn:
+ state = 1
+ if state != 0:
+ levels = "(Warn/Crit at %2.f %%/ %.2f %%)" % ( warn, crit )
+ else:
+ levels = ""
+ return state, "Usage: %.2f %% (%s of %s used) %s" % \
+ ( usage_perc, get_bytes_human_readable(usage_bytes),
get_bytes_human_readable(size_bytes), levels ), \
+ perfdata
check_info["jolokia_metrics.perm_gen"] = {
- "service_description" : "JVM %s PermGen Space",
+ "service_description" : "JVM %s PermGen Usage",
"check_function" : check_jolokia_metrics_perm_gen,
- "inventory_function" : inventory_jolokia_metrics_permgen,
- "group" : None,
+ "inventory_function" : inventory_jolokia_metrics_perm_gen,
+ "group" : "jvm_memory",
"has_perfdata" : True,
}
diff --git a/web/plugins/metrics/check_mk.py b/web/plugins/metrics/check_mk.py
index d88e58d..e4341d0 100644
--- a/web/plugins/metrics/check_mk.py
+++ b/web/plugins/metrics/check_mk.py
@@ -267,6 +267,12 @@ metric_info["mem_used"] = {
"unit" : "bytes",
}
+metric_info["mem_perm_used"] = {
+ "color": "#80ff40",
+ "title" : _("Perm used"),
+ "unit" : "bytes",
+}
+
metric_info["swap_total"] = {
"title" : _("Swap installed"),
"color": "#e0e0e0",
@@ -1269,6 +1275,7 @@ check_metrics["check_mk-ucd_cpu_load"]
= {}
check_metrics["check_mk-statgrab_load"] = {}
check_metrics["check_mk-hpux_cpu"] = {}
check_metrics["check_mk-blade_bx_load"] = {}
+check_metrics["check_mk-jolokia_metrics.perm_gen"] = {}
check_metrics["check_mk-kernel"] = {
"ctxt" : { "name": "context_switches" },
@@ -1576,6 +1583,12 @@ perfometer_info.append({
"exponent" : 4,
})
+perfometer_info.append({
+ "type" : "linear",
+ "segments" : [ "mem_perm_used"],
+ "total" : "mem_perm_used:max",
+
+})
perfometer_info.append(("logarithmic", ( "rta", 0.1, 4)))
perfometer_info.append(("linear", ( ["execution_time"], 90.0,
None)))
@@ -1780,6 +1793,7 @@ define_generic_graph("uptime")
define_generic_graph("temp")
define_generic_graph("humidity")
define_generic_graph("time_offset")
+define_generic_graph("mem_perm_used")
graph_info.append({
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index a0e6a02..47aad4e 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -7476,6 +7476,15 @@ register_check_parameters(
]
)
])),
+ ( "perm",
+ Tuple(
+ title = _("Perm Memory usage"),
+ elements = [
+ Percentage(title = _("Warning at"), label =
_("% usage")),
+ Percentage(title = _("Critical at"), label =
_("% usage")),
+ ]
+ )
+ ),
]),
TextAscii(
title = _("Name of the virtual machine"),