Module: check_mk
Branch: master
Commit: 84776aa08638776b06d6a9f21ea2bad781849a3f
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=84776aa0863877…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Sat Nov 6 11:56:10 2010 +0100
check for duplicate service descriptions
---
ChangeLog | 3 +++
LIESMICH.zutun | 3 ---
modules/check_mk.py | 23 +++++++++++++++++++++++
3 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 0d46dd5..53c5e4f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -25,6 +25,9 @@
is called from another directory)
* ALL_SERVICES: Instead of [ "" ] you can now write ALL_SERVICES
* debug_log: also output Check_MK version, check item and check parameters
+ * Make sure, host has no duplicate service - this is possible e.g. by
+ monitoring via agent and snmp in parallel. duplicate services will
+ make Nagios reject the configuration.
Checks & Agents:
* megaraid_pdisks: Using the real enclosure number as check item now
diff --git a/LIESMICH.zutun b/LIESMICH.zutun
index b955bd2..6e83eb1 100644
--- a/LIESMICH.zutun
+++ b/LIESMICH.zutun
@@ -4,9 +4,6 @@ Doku: Check_MK und OMD: Installieren von MKPs, local-Hierarchie
--------------------------------------------------------------------------------
BUGS beheben ab 1.1.9i1
--------------------------------------------------------------------------------
-Wenn zwei Checks mit dem gleichen Namen existieren bei einem Host
-soll mit einem Fehler abgebrochen werden.
-
ich bin mir nicht sicher ob das nun ein Thruk Problem oder ein Livestatus Problem ist.
Vermutlich beides :-)
Wenn ich im Thruk im Suchfenster einfach Enter drücke, kommt folgende Query bei raus:
GET services
diff --git a/modules/check_mk.py b/modules/check_mk.py
index 8da1029..5f75973 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -1292,7 +1292,19 @@ def create_nagios_servicedefs(outfile, hostname):
aggregated_services_conf = set([])
do_aggregation = host_is_aggregated(hostname)
have_at_least_one_service = False
+ used_descriptions = {}
for ((checkname, item), (params, description, deps)) in host_checks:
+ # Make sure, the service description is unique on this host
+ if description in used_descriptions:
+ cn, it = used_descriptions[description]
+ raise MKGeneralException(
+ "ERROR: Duplicate service description '%s' for host
'%s'!\n"
+ " - 1st occurrance: checktype = %s, item = %r\n"
+ " - 2nd occurrance: checktype = %s, item = %r\n" %
+ (description, hostname, cn, it, checkname, item))
+
+ else:
+ used_descriptions[description] = ( checkname, item )
if have_perfdata(checkname):
template = passive_service_template_perf
else:
@@ -1420,6 +1432,17 @@ define servicedependency {
if len(legchecks) > 0:
outfile.write("\n\n# Legacy checks\n")
for command, description, has_perfdata in legchecks:
+ if description in used_descriptions:
+ cn, it = used_descriptions[description]
+ raise MKGeneralException(
+ "ERROR: Duplicate service description (legacy check)
'%s' for host '%s'!\n"
+ " - 1st occurrance: checktype = %s, item = %r\n"
+ " - 2nd occurrance: checktype = legacy(%s), item = None\n"
%
+ (description, hostname, cn, it, command))
+
+ else:
+ used_descriptions[description] = ( "legacy(" + command +
")", item )
+
extraconf = extra_service_conf_of(hostname, description)
if has_perfdata:
template = "check_mk_perf,"