Module: check_mk
Branch: master
Commit: cf04968e9da1516df9bba191ceea883f60761e8d
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=cf04968e9da151…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Feb 6 11:18:00 2013 +0100
Availability: consider flapping states
---
web/htdocs/images/bg_flapping.png | Bin 0 -> 420 bytes
web/htdocs/views.css | 12 +++++++++---
web/plugins/views/availability.py | 10 +++++++++-
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/web/htdocs/images/bg_flapping.png b/web/htdocs/images/bg_flapping.png
new file mode 100644
index 0000000..98692b2
Binary files /dev/null and b/web/htdocs/images/bg_flapping.png differ
diff --git a/web/htdocs/views.css b/web/htdocs/views.css
index 35fd892..596255f 100644
--- a/web/htdocs/views.css
+++ b/web/htdocs/views.css
@@ -481,14 +481,20 @@ table.data.availability td.number {
width: 60px;
}
-table.data.availability td.downtime, table.timeline td.downtime {
+table.data td.flapping, table.timeline td.flapping {
+ background-image: url("images/bg_flapping.png");
+ background-repeat: repeat;
+ background-color: #f0f;
+}
+
+table.data td.downtime, table.timeline td.downtime {
background-color: #0af;
}
-table.data.availability td.hostdown, table.timeline td.hostdown {
+table.data td.hostdown, table.timeline td.hostdown {
background-color: #048;
color: white;
}
-table.data.availability td.unmonitored, table.timeline td.unmonitored {
+table.data td.unmonitored, table.timeline td.unmonitored {
background-color: #ddd;
color: #888;
}
diff --git a/web/plugins/views/availability.py b/web/plugins/views/availability.py
index 5278dfe..72c7158 100644
--- a/web/plugins/views/availability.py
+++ b/web/plugins/views/availability.py
@@ -106,6 +106,9 @@ avoption_entries = [
title = _("Status Classification"),
columns = 2,
elements = [
+ ( "flapping",
+ Checkbox(label = _("Consider periods of flapping states")),
+ ),
( "downtime",
Checkbox(label = _("Consider scheduled downtimes")),
),
@@ -166,6 +169,7 @@ def render_availability_options():
avoptions = config.load_user_file("avoptions", {
"range" : (time.time() - 86400, time.time()),
"consider" : {
+ "flapping" : True,
"downtime" : True,
"host_down" : True,
"notification_period" : True,
@@ -315,7 +319,7 @@ def get_availability_data(datasource, filterheaders, range,
only_sites, limit, t
# Columns for availability
columns += [
"duration", "from", "until", "state",
"host_down", "in_downtime",
- "in_host_downtime", "in_notification_period", #
"is_flapping",
+ "in_host_downtime", "in_notification_period",
"is_flapping",
"log_output" ]
if timeline:
columns.append("log_output")
@@ -329,6 +333,7 @@ host_availability_columns = [
( "up", "state0", _("UP"),
None ),
( "down", "state2", _("DOWN"),
None ),
( "unreach", "state3",
_("UNREACH"), None ),
+ ( "flapping", "flapping",
_("Flapping"), None ),
( "in_downtime", "downtime",
_("Downtime"), _("The host was in a scheduled downtime") ),
( "outof_notification_period", "",
_("OO/Notif"), _("Out of Notification Period") ),
( "unmonitored", "unmonitored", _("N/A"),
_("During this time period no monitoring data is available") ),
@@ -339,6 +344,7 @@ service_availability_columns = [
( "warn", "state1", _("WARN"),
None ),
( "crit", "state2", _("CRIT"),
None ),
( "unknown", "state3",
_("UNKNOWN"), None ),
+ ( "flapping", "flapping",
_("Flapping"), None ),
( "host_down", "hostdown",
_("H.Down"), _("The host was down") ),
( "in_downtime", "downtime",
_("Downtime"), _("The host or service was in a scheduled downtime")
),
( "outof_notification_period", "",
_("OO/Notif"), _("Out of Notification Period") ),
@@ -393,6 +399,8 @@ def do_render_availability(datasource, filterheaders, avoptions,
only_sites, lim
s = "in_downtime"
elif span["host_down"] and
avoptions["consider"]["host_down"]:
s = "host_down"
+ elif span["is_flapping"] and
avoptions["consider"]["flapping"]:
+ s = "flapping"
else:
if has_service:
s = { 0: "ok", 1:"warn", 2:"crit",
3:"unknown" }[state]