Module: check_mk
Branch: master
Commit: 107bdc26b2707d6c2167108bc2c598776ec64be0
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=107bdc26b2707d…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Jan 16 16:58:38 2017 +0100
EC: Loading rule hits from all connected sites ECs
Change-Id: Ib2641a2a16abca2d155dc22fa6f132219e08bc7a
---
bin/mkeventd | 16 +++++++++++++++-
web/plugins/wato/mkeventd.py | 23 +++++++++++++----------
2 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/bin/mkeventd b/bin/mkeventd
index 9c05f79..40a364b 100755
--- a/bin/mkeventd
+++ b/bin/mkeventd
@@ -135,6 +135,11 @@ history_columns = [
( "history_addinfo", "" ),
] + event_columns
+rule_columns = [
+ ( "rule_id", "" ),
+ ( "rule_hits", 0 ),
+]
+
# Alas, we often have no clue about the actual encoding, so we have to guess:
# Initially we assume UTF-8, but fall back to latin-1 if it didn't work.
def decode_from_bytes(string_as_bytes):
@@ -3209,10 +3214,13 @@ class StatusServer:
columns = event_columns
elif table == "history":
columns = history_columns
+ elif table == "rules":
+ columns = rule_columns
elif table == "status":
columns = g_event_server.status_columns()
else:
- raise MKClientError("Invalid table %s, we only have 'events',
'history' and 'status'" % table)
+ raise MKClientError("Invalid table %s, we only have 'events',
'history', "
+ "'rules' and 'status'" %
table)
filters = []
only_host = None
@@ -3245,6 +3253,8 @@ class StatusServer:
headers, list_rows = g_event_status.get_events(only_host)
elif table == "history":
headers, list_rows = get_event_history(filters, limit)
+ elif table == "rules":
+ headers, list_rows = g_event_status.get_rule_stats()
else:
headers, list_rows = g_event_server.get_status()
@@ -3793,6 +3803,10 @@ class EventStatus():
result.append(event_line)
return [ e[0] for e in event_columns ], result
+
+ def get_rule_stats(self):
+ return [ e[0] for e in rule_columns ], sorted(self._rule_stats.items(),
key=lambda x: x[0])
+
#.
# .--Actions-------------------------------------------------------------.
# | _ _ _ |
diff --git a/web/plugins/wato/mkeventd.py b/web/plugins/wato/mkeventd.py
index 02b8b96..027e1c7 100644
--- a/web/plugins/wato/mkeventd.py
+++ b/web/plugins/wato/mkeventd.py
@@ -24,6 +24,7 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
+import sites
import mkeventd
import zipfile
import cStringIO
@@ -930,16 +931,18 @@ def load_mkeventd_rules():
# Add information about rule hits: If we are running on OMD then we know
# the path to the state retention file of mkeventd and can read the rule
# statistics directly from that file.
- mkeventd_status = store.load_data_from_file(mkeventd_status_file)
- if mkeventd_status != None:
- rule_stats = mkeventd_status["rule_stats"]
- for rule_pack in vars["rule_packs"]:
- pack_hits = 0
- for rule in rule_pack["rules"]:
- hits = rule_stats.get(rule["id"], 0)
- rule["hits"] = hits
- pack_hits += hits
- rule_pack["hits"] = pack_hits
+ rule_stats = {}
+ for rule_id, count in sites.live().query("GET eventconsolerules\nColumns:
rule_id rule_hits\n"):
+ rule_stats.setdefault(rule_id, 0)
+ rule_stats[rule_id] += count
+
+ for rule_pack in vars["rule_packs"]:
+ pack_hits = 0
+ for rule in rule_pack["rules"]:
+ hits = rule_stats.get(rule["id"], 0)
+ rule["hits"] = hits
+ pack_hits += hits
+ rule_pack["hits"] = pack_hits
# Migrate old contact_group key (+ add False for notify option)
for rule_pack in vars["rule_packs"]: