Module: check_mk
Branch: master
Commit: 88abf909a4e64071c67968b6326251f1788fd362
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=88abf909a4e640…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Oct 15 13:11:04 2012 +0200
Changed windows services rule syntax
---
checkman/services | 21 +++++----------------
checks/services | 34 +++++++++++++---------------------
2 files changed, 18 insertions(+), 37 deletions(-)
diff --git a/checkman/services b/checkman/services
index f99d558..949a0ad 100644
--- a/checkman/services
+++ b/checkman/services
@@ -74,13 +74,8 @@ inventory:
Since version 1.2.1i2 there is a new option {inventory_services_rules}
available, which is used to configure same options as the {inventory_services}
option but in a standardized format. The option holds a list of rules
- where each rule might contain one or several entries. Each of those
- entries is a tuple of three items. The first element is a string
- matching the service name or a regex (string is starting with a "~")
- to match the names. The second element is a string which matches the
- state of the service during inventory. The third element matches the
- start mode of the service. All of those three elements might be set to
- {None} to disable this criterion for matching a service.
+ where each rule contains one entry matching a list of service matching
+ strings (regexes) state/start mode.
examples:
# inventory will add checks for the following services
@@ -114,21 +109,15 @@ examples:
# Inventory Services Rules (like configured when using WATO)
inventory_services_rules = [
# Monitor the "Browser" service on all hosts
- ( [
- ('Browser', None, None),
- ], [], ALL_HOSTS),
+ ((['Browser'], None, None), [], ALL_HOSTS),
# Add monitoring of all services starting with "MSSQL " on all hosts
# which have the "db" tag
- ( [
- ('~MSSQL .*', None, None),
- ], [ 'db' ], ALL_HOSTS),
+ ((['MSSQL .*'], None, None), [ 'db' ], ALL_HOSTS),
# Add monitoring of all automatically started services on all hosts
# which have the "important" tag
- ( [
- (None, None, 'auto'),
- ], [ 'important' ], ALL_HOSTS),
+ (([], None, 'auto'), [ 'important' ], ALL_HOSTS),
]
# Manual checks without inventory. Those checks will be created
diff --git a/checks/services b/checks/services
index 91a9da8..bcf8ae5 100644
--- a/checks/services
+++ b/checks/services
@@ -56,28 +56,13 @@ inventory_services = []
# Implemented in 1.2.1i2:
# New rule-style (WATO compatible) notation:
-# ( [ ENTRIES ], ALL_HOSTS),
+# [({'start_mode': 'demand', 'service': ['Netman']},
[], ['@all'], {'docu_url': ''})]
#
-# ENTRIES is a list of inventory_services definitions like this:
-#
-# (<service>, <state>, <start_mode>)
-#
-# <service> might be a string matching the service-name or a regex
+# <services> is list of regexes matching the service name
# <state> is the expected state to inventorize services of (running, stopped, ...)
# <start_mode> is the expected state to inventorize services of (auto, manual,
...)
#
-# All above attributes can be set to None to disable this filter option for the entry.
-#
-# Example:
-# inventory_services_rules = [
-# ( [
-# ('netmsg', None, 'auto'), # Add monitoring if the service
is found
-# # and is automatically started
-# ('mstsc', 'running', None), # Add monitoring if the service
is found and running
-# ('~MSSQL .*', None, None), # Add all "MSSQL *"
monitoring
-# (None, None, 'auto'), # Add monitoring of all automatically started
services
-# ], [ 'win2003' ], ALL_HOSTS),
-# ]
+# All above attributes can be set to None or not set to disable this filter option for
the entry.
inventory_services_rules = []
def inventory_windows_services(info):
@@ -131,15 +116,22 @@ def inventory_windows_services(info):
# Filter WATO compatible rules by tags/hostlist
rules = []
for rule in inventory_services_rules:
- # e.g. [([('Netman', 'running', None)], [], ['@all'],
{'docu_url': ''})]
# 1. Get all rules matching the current host
taglist, hostlist = rule[1:3]
if not hosttags_match_taglist(tags_of_host(g_hostname), taglist) \
or not in_extraconf_hostlist(hostlist, g_hostname):
continue
- for entry in rule[0]:
- rules.append(entry)
+ # 2. Now extract the list of service regexes
+ value = rule[0]
+ svcs = value.get('services', [])
+ state = value.get('state', None)
+ start_mode = value.get('start_mode', None)
+ if svcs:
+ for svc in svcs:
+ rules.append(('~' + svc, state, start_mode))
+ else:
+ rules.append((None, state, start_mode))
inventory = []
for line in info: