Module: check_mk
Branch: master
Commit: eebe8a5a67978942830b769b8bb04859a62fc529
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=eebe8a5a679789…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Dec 13 12:08:38 2011 +0100
Added Perf-O-Meter for fileinfo
---
ChangeLog | 1 +
web/htdocs/status.css | 8 ++++++++
web/plugins/perfometer/check_mk.py | 14 ++++++++++++++
web/plugins/views/perfometer.py | 26 ++++++++++++++++++++------
4 files changed, 43 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index be56aa2..82b7b5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -29,6 +29,7 @@
(and later possible ages)
* logwatch: allow to classify messages based on their count (see
man page of logwatch for details)
+ * fileinfo: new check for monitoring age and size of files
Multisite:
* New nifty sidebar snapin "Speed-O-Meter"
diff --git a/web/htdocs/status.css b/web/htdocs/status.css
index 107df0b..09ed6b8 100644
--- a/web/htdocs/status.css
+++ b/web/htdocs/status.css
@@ -193,6 +193,14 @@ table.data td.perfometer td.inner {
height: 22px;
padding: 0px 0px 0px 1px;
}
+table.data td.perfometer div.stacked table:first-child {
+ border-bottom-style: none;
+}
+
+table.data td.perfometer div.stacked td.inner {
+ height: 10px;
+}
+
td.perfometer a {
color: #000;
diff --git a/web/plugins/perfometer/check_mk.py b/web/plugins/perfometer/check_mk.py
index 1d113c5..841c76f 100644
--- a/web/plugins/perfometer/check_mk.py
+++ b/web/plugins/perfometer/check_mk.py
@@ -371,3 +371,17 @@ def perfometer_msx_queues(row, check_command, perf_data):
return "%d" % length, perfometer_logarithmic(length, 100, 2, color)
perfometers["check_mk-winperf_msx_queues"] = perfometer_msx_queues
+
+def perfometer_fileinfo(row, check_command, perf_data):
+ h = '<div class="stacked">'
+ texts = []
+ for i, color, base, scale, verbfunc in [
+ ( 0, "#ffcc50", 1000000, 10, lambda v: number_human_readable(v,
precision=0) ), # size
+ ( 1, "#ccff50", 3600, 10, age_human_redable )]: # age
+ val = float(perf_data[i][1])
+ h += perfometer_logarithmic(val, base, scale, color)
+ texts.append(verbfunc(val))
+ h += '</div>'
+ return " / ".join(texts), h # perfometer_logarithmic(100, 200, 2,
"#883875")
+
+perfometers["check_mk-fileinfo"] = perfometer_fileinfo
diff --git a/web/plugins/views/perfometer.py b/web/plugins/views/perfometer.py
index 78fec0f..0f37aa1 100644
--- a/web/plugins/views/perfometer.py
+++ b/web/plugins/views/perfometer.py
@@ -31,7 +31,8 @@ perfometers = {}
# Helper functions for perfometers
def perfometer_td(perc, color):
- return '<td class="inner" style="background-color: %s; width:
%d%%;"></td>' % (color, int(float(perc)))
+ return '<td class="inner" style="background-color: %s; ' \
+ 'width: %d%%;"></td>' % (color, int(float(perc)))
# Paint linear performeter with one value
def perfometer_linear(perc, color):
@@ -89,16 +90,29 @@ def perfometer_logarithmic_dual(value_left, color_left, value_right,
color_right
return result + '</tr></table>'
-def number_human_readable(n):
+def number_human_readable(n, precision=1):
n = float(n)
+ f = "%." + str(precision) + "f"
if abs(n) > 1024 * 1024 * 1024:
- return "%.1fG" % (n / (1024.0 * 1024 * 1024))
+ return (f + "G") % (n / (1024.0 * 1024 * 1024))
elif abs(n) > 1024 * 1024:
- return "%.1fM" % (n / (1024.0 * 1024))
+ return (f + "M") % (n / (1024.0 * 1024))
elif abs(n) > 1024:
- return "%.fK" % (n / 1024.0)
+ return (f + "K") % (n / 1024.0)
else:
- return "%.1fB" % n
+ return (f + "B") % n
+
+def age_human_redable(secs):
+ if secs < 240:
+ return "%d sec" % secs
+ mins = secs / 60
+ if mins < 240:
+ return "%d min" % mins
+ hours = mins / 60
+ if hours < 48:
+ return "%d hours" % hours
+ days = hours / 24
+ return "%d days" % days
def paint_perfometer(row):