Module: check_mk
Branch: master
Commit: 28bfd31c8159931948016ce0fb9e5e12767e3670
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=28bfd31c815993…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Oct 16 16:46:22 2012 +0200
FIX: netapp_vfiler: fix inventory function (thanks to Falk Krentzlin)
Conflicts:
ChangeLog
---
ChangeLog | 7 +++++++
checks/netapp_vfiler | 10 ++++------
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 6254cb8..fbb7fa1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -93,6 +93,13 @@
* FIX: Linux mk_logwatch: iregex Parameter was never used
* FIX: Windows agent: quote '%' in plugin output correctly
* FIX: multipath check now handles '-' in "user friendly names"
+ * New check mssql_counters.locks: Monitors locking related information of
+ MSSQL tablespaces
+ * FIX: mssql_counters checks now really only inventorize percentage based
+ counters if a base value is set
+ * windows_updates agent plugin: Fetching data in background mode, caching
+ update information for 30 minutes
+ * FIX: netapp_vfiler: fix inventory function (thanks to Falk Krentzlin)
1.2.1i1:
Core:
diff --git a/checks/netapp_vfiler b/checks/netapp_vfiler
index 3c6809d..5282d44 100644
--- a/checks/netapp_vfiler
+++ b/checks/netapp_vfiler
@@ -34,25 +34,23 @@
def inventory_netapp_vfiler(info):
-
inventory = []
for line in info:
# If we find an entry consisting of name and status, add it to inventory.
- # otherwise we dont inventorize anything.
- if len(info) == 2:
- inventory.append([line[0], None])
+ # otherwise we don't inventorize anything.
+ if len(line) == 2:
+ inventory.append((line[0], None))
return inventory
def check_netapp_vfiler(item, _no_params, info):
-
for vfEntry in info:
vfName, vfState = vfEntry
if vfName == item:
if vfState == "2":
return (0, "OK - vFiler is running")
elif vfState == "1":
- return (2, "CRIT - vFiler is stopped!!")
+ return (2, "CRIT - vFiler is stopped")
else:
return (3, "UNKOWN - vFiler status unknown")
return (3, "UNKNOWN - vFiler not found in SNMP output")
Module: check_mk
Branch: master
Commit: d6ef6076a73ac7864e399b0bbc77036aac6c97d5
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=d6ef6076a73ac7…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Oct 15 14:06:08 2012 +0200
Check_MK configuration variable cleanup in WATO
---
web/plugins/wato/check_mk_configuration.py | 94 +++++++++++++--------------
1 files changed, 45 insertions(+), 49 deletions(-)
diff --git a/web/plugins/wato/check_mk_configuration.py b/web/plugins/wato/check_mk_configuration.py
index 61e7d5b..ff8c4eb 100644
--- a/web/plugins/wato/check_mk_configuration.py
+++ b/web/plugins/wato/check_mk_configuration.py
@@ -379,21 +379,6 @@ register_configvar(group,
(3, _("Unknown") ),
]))
-
-register_configvar(group,
- "always_cleanup_autochecks",
- Checkbox(title = _("Always cleanup autochecks"),
- help = _("When switched on, Check_MK will always cleanup the autochecks files "
- "after each inventory, i.e. create one file per host. This is the same "
- "as adding the option <tt>-u</tt> to each call of <tt>-I</tt> on the "
- "command line.")))
-
-
-group = _("Check configuration")
-
-# if_inventory_porttypes = [ '6', '32', '117' ]
-# if_inventory_portstates = [ '1' ]
-
_if_portstate_choices = [
( '1', 'up(1)'),
( '2', 'down(2)'),
@@ -472,30 +457,6 @@ _if_porttype_choices = [
("221", "gfp(221)" ), ("222", "ciscoISLvlan(222)" ), ("223", "actelisMetaLOOP(223)" ), ("224",
"fcipLink(224)" ), ("225", "rpr(225)" ), ("226", "qam(226)" ), ("227", "lmp(227)" ), ("228",
"cblVectaStar(228)" ), ("229", "docsCableMCmtsDownstream(229)" ), ("230", "adsl2(230)" ), ]
-
-register_configvar(group,
- "if_inventory_monitor_state",
- Checkbox(title = _("Monitor port state of network interfaces"),
- label = _("monitor port state"),
- help = _("When this option is active then during inventory of networking interfaces "
- "(and switch ports) the current operational state of the port will "
- "automatically be coded as a check parameter into the check. That way the check "
- "will get warning or critical when the state changes. This setting can later "
- "by overridden on a per-host and per-port base by defining special check "
- "parameters via a rule.")))
-
-register_configvar(group,
- "if_inventory_monitor_speed",
- Checkbox(title = _("Monitor port speed of network interfaces"),
- label = _("monitor port speed"),
- help = _("When this option is active then during inventory of networking interfaces "
- "(and switch ports) the current speed setting of the port will "
- "automatically be coded as a check parameter into the check. That way the check "
- "will get warning or critical when speed later changes (for example from "
- "100 MBit/s to 10 MBit/s). This setting can later "
- "by overridden on a per-host and per-port base by defining special check "
- "parameters via a rule.")))
-
register_configvar(group,
"if_inventory_pad_portnumbers",
Checkbox(title = _("Pad port numbers with zeroes"),
@@ -557,6 +518,51 @@ register_configvar(group,
)
register_configvar(group,
+ "win_dhcp_pools_inventorize_empty",
+ Checkbox(
+ title = _("Inventorize empty windows dhcp pools"),
+ help = _("You can activate the inventorization of "
+ "dhcp pools, which have no ip addresses in it"),
+ ),
+ need_restart = True
+ )
+
+register_configvar(group,
+ "always_cleanup_autochecks",
+ Checkbox(title = _("Always cleanup autochecks"),
+ help = _("When switched on, Check_MK will always cleanup the autochecks files "
+ "after each inventory, i.e. create one file per host. This is the same "
+ "as adding the option <tt>-u</tt> to each call of <tt>-I</tt> on the "
+ "command line.")))
+
+
+group = _("Check configuration")
+
+
+register_configvar(group,
+ "if_inventory_monitor_state",
+ Checkbox(title = _("Monitor port state of network interfaces"),
+ label = _("monitor port state"),
+ help = _("When this option is active then during inventory of networking interfaces "
+ "(and switch ports) the current operational state of the port will "
+ "automatically be coded as a check parameter into the check. That way the check "
+ "will get warning or critical when the state changes. This setting can later "
+ "by overridden on a per-host and per-port base by defining special check "
+ "parameters via a rule.")))
+
+register_configvar(group,
+ "if_inventory_monitor_speed",
+ Checkbox(title = _("Monitor port speed of network interfaces"),
+ label = _("monitor port speed"),
+ help = _("When this option is active then during inventory of networking interfaces "
+ "(and switch ports) the current speed setting of the port will "
+ "automatically be coded as a check parameter into the check. That way the check "
+ "will get warning or critical when speed later changes (for example from "
+ "100 MBit/s to 10 MBit/s). This setting can later "
+ "by overridden on a per-host and per-port base by defining special check "
+ "parameters via a rule.")))
+
+register_configvar(group,
"logwatch_service_output",
DropdownChoice(
title = _("Service output for logwatch"),
@@ -573,16 +579,6 @@ register_configvar(group,
)
register_configvar(group,
- "win_dhcp_pools_inventorize_empty",
- Checkbox(
- title = _("Invetorize empty windows dhcp pools"),
- help = _("You can activate the inventorization of "
- "dhcp pools, which have no ip addresses in it"),
- ),
- need_restart = True
- )
-
-register_configvar(group,
"printer_supply_some_remaining_status",
DropdownChoice(
title = _("Printer supply some remaining status"),
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:
Module: check_mk
Branch: master
Commit: a743d62990c9e00d7ef4ebc3537383b74167a7ab
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a743d62990c9e0…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Oct 15 13:28:59 2012 +0200
Add valuespec for formailzed inventory_services_rules
---
checks/ps | 26 ++++++-
web/plugins/wato/check_parameters.py | 149 +++++++++++++++++++++++++---------
2 files changed, 136 insertions(+), 39 deletions(-)
diff --git a/checks/ps b/checks/ps
index 784a53d..b3cc0e4 100644
--- a/checks/ps
+++ b/checks/ps
@@ -33,7 +33,31 @@
# Third generation (from 1.1.5) output also virtual memory, resident memory and %CPU:
# (class,122376,88128,0.0) /usr/jre1.6.0_13/bin/java -Dn=Cart_16TH13 -Dmcs.node=zbgh1ca -Dmcs.mdt.redundan
-
+# New since 1.2.1i2: WATO compatible syntax
+#
+# Holds a list of rules which are matching hosts by names or tags and
+# where each can hold a list of entries.
+#
+# Each of those entries defines the following options:
+#
+# 1. item name to be used for the service description
+# 2. matching-definition
+# 3. user definition
+# 4. four numbers (thresholds)
+# 5. monitor with perfdata
+#
+# inventory_processes_rules = [
+# # The ntp daemon must be running on all linux hosts, don't
+# # gather perfdata for this check.
+# ([('NTP', '/usr/sbin/ntpd', 'root', 1, 1, 1, 1, False),], ['linux'], ALL_HOSTS),
+#
+# # if we find Apache2, monitor it and make sure it's running
+# # as the user 'www-data'! Make also sure, that the number
+# # of processes is between 5 and 10, (critical if not running
+# # or if more than 30 processes). Enable perfdata monitoring.
+# ([('Apache2', '~.*bin/apache2', 'www-data', 1, 5, 10, 30, True)], ['webserver'], ALL_HOSTS),
+# ]
+inventory_processes_rules = []
inventory_processes = []
inventory_processes_perf = []
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index a32df62..4eba688 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -139,53 +139,126 @@ register_rule(group + '/' + subgroup_applications,
register_rule(group + '/' + subgroup_applications,
varname = "inventory_services_rules",
title = _('Windows Services Inventory'),
- valuespec = ListOf(
- Tuple(
- help = _("This defines one inventory services rule"),
- show_titles = True,
- orientation = "horizontal",
- elements = [
- Optional(
+ valuespec = Dictionary(
+ elements = [
+ ('services', ListOfStrings(
+ title = _("Service (Regex)"),
+ help = _('Matching the begining of the service names (regular expression). '
+ 'If no service is given, this rule will match all services.'),
+ orientation = "horizontal",
+ )),
+ ('state', DropdownChoice(
+ choices = [
+ ('running', _('Running')),
+ ('stopped', _('Stopped')),
+ ],
+ title = _("State"),
+ )),
+ ('start_mode', DropdownChoice(
+ choices = [
+ ('auto', _('Automatic')),
+ ('demand', _('Manual')),
+ ('disabled', _('Disabled')),
+ ],
+ title = _("Start Mode"),
+ )),
+ ],
+ help = _('<p>This rule can be used to configure the inventory of the windows services check. '
+ 'You can configure specific window services to be monitored by the windows check by '
+ 'selecting them by name, current state during the inventory or start mode.'),
+ ),
+ match = 'list',
+)
+
+register_rule(group + '/' + subgroup_applications,
+ varname = "inventory_processes_rules",
+ title = _('Process inventory (Linux/UNIX)'),
+ valuespec = Dictionary(
+ elements = [
+ ('descr', TextAscii(
+ title = _('Service Description'),
+ help = _('<p>The service description may contain one or more occurances of %s. If you do this, then the pattern must be a regular '
+ 'expression and be prefixed with ~. For each %s in the description, the expression has to contain one "group". A group '
+ 'is a subexpression enclosed in brackets, for example (.*) or ([a-zA-Z]+) or (...). When the inventory finds a process '
+ 'matching the pattern, it will substitute all such groups with the actual values when creating the check. That way one '
+ 'rule can create several checks on a host.</p>'
+ '<p>If the pattern contains more groups thenoccurrances of %s in the service description then only the first matching '
+ 'subexpressions are used for the service descriptions. The matched substrings corresponding to the remaining groups '
+ 'are copied into the regular expression, nevertheless.</p>'),
+ )),
+ ('match', Alternative(
+ title = _("Name of the process"),
+ elements = [
+ TextAscii(
+ title = _("Exact name of the process without argments"),
+ size = 50,
+ ),
Transform(
- RegExp(size = 40),
- forth = lambda x: x.lstrip('~'), # remove ~
+ RegExp(size = 50),
+ title = _("Regular expression matching command line"),
+ help = _("This regex must match the <i>beginning</i> of the complete "
+ "command line of the process including arguments"),
+ forth = lambda x: x[1:], # remove ~
back = lambda x: "~" + x, # prefix ~
),
- title = _("Service (Regex)"),
- label = _("use as inventory criterion"),
- ),
- Optional(
- DropdownChoice(
- choices = [
- ('running', _('Running')),
- ('stopped', _('Stopped')),
- ],
+ FixedValue(
+ None,
+ totext = "",
+ title = _("Match all processes"),
+ )
+ ],
+ match = lambda x: (not x and 2) or (x[0] == '~' and 1 or 0)
+ )),
+ ('user', Alternative(
+ title = _('Name of the user'),
+ elements = [
+ TextAscii(
+ title = _('Exact name of the user'),
),
- title = _("State"),
- label = _("use as inventory criterion"),
- ),
- Optional(
- DropdownChoice(
- choices = [
- ('auto', _('Automatic')),
- ('demand', _('Manual')),
- ('disabled', _('Disabled')),
- ],
+ FixedValue(
+ False,
+ title = _('Grab user from found processess'),
+ totext = '',
),
- title = _("Start Mode"),
- label = _("use as inventory criterion"),
- ),
- ]
- ),
- help = _('<p>This rule can be used to configure the inventory of the windows services check. '
- 'You can configure specific window services to be monitored by the windows check by '
- 'selecting them by name, current state during the inventory or start mode.'),
- add_label = _("Add rule"),
+ ],
+ help = _('<p>The user specification can either be a user name (string). The inventory will then trigger only if that user matches '
+ 'the user the process is running as and the resulting check will require that user. Alternatively you can specify '
+ '"grab user". If user is not selected the created check will not check for a specific user.</p>'
+ '<p>Specifying "grab user" makes the created check expect the process to run as the same user as during inventory: the user '
+ 'name will be hardcoded into the check. In that case if you put %u into the service description, that will be replaced '
+ 'by the actual user name during inventory. You need that if your rule might match for more than one user - your would '
+ 'create duplicate services with the same description otherwise.</p>'),
+ )),
+ ('perfdata', FixedValue(True,
+ title = _('Collect performance data'),
+ totext = '',
+ )),
+ ('warnmin', Integer(
+ title = _("Critical below"),
+ unit = _("processes"),
+ default_value = 1,
+ )),
+ ('okmin', Integer(
+ title = _("Warning below"),
+ unit = _("processes"),
+ default_value = 1,
+ )),
+ ('okmax', Integer(
+ title = _("Warning above"),
+ unit = _("processes"),
+ default_value = 1,
+ )),
+ ('warnmax', Integer(
+ title = _("Critical above"),
+ unit = _("processes"),
+ default_value = 1,
+ )),
+ ],
+ required_keys = ['warnmin', 'okmin', 'okmax', 'warnmax'],
),
match = 'list',
)
-
checkgroups = []
checkgroups.append((