Module: check_mk
Branch: master
Commit: 90dfb2cc19e6bf9f76a786681c191e0939aee53a
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=90dfb2cc19e6bf…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Oct 10 17:45:09 2013 +0200
View all services of host: link to service not to host
When clicking on the host name. Otherwise there is no way to
get to the details of the service
---
web/plugins/views/builtin.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/web/plugins/views/builtin.py b/web/plugins/views/builtin.py
index 1ec9918..38f0da1 100644
--- a/web/plugins/views/builtin.py
+++ b/web/plugins/views/builtin.py
@@ -1193,7 +1193,7 @@ multisite_builtin_views.update({
'owner': '',
'painters': [('service_state', None),
('service_icons', None),
- ('host', 'host'),
+ ('host', 'service'),
('svc_plugin_output', None),
('perfometer', None)],
'public': True,
Module: check_mk
Branch: master
Commit: 7f98680f89861fdd1e47c30171de5ec06eb78733
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=7f98680f89861f…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Thu Oct 10 16:47:33 2013 +0200
esx_vsphere_hostsystem.multipath:
- cleaned up inventory and manpage
- now able to configure warn, crit levels for each state
---
ChangeLog | 2 +
checkman/esx_vsphere_hostsystem.multipath | 19 ++++---
checks/esx_vsphere_hostsystem | 83 +++++++++++++++--------------
web/plugins/wato/check_parameters.py | 40 ++++++++++++++
4 files changed, 97 insertions(+), 47 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2384586..a92d1f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,7 @@
* agent_vsphere: now able to handle < > & ' " in login credentials
* if/if64 and friends: add 95% percentiles to graphs
* services: inventory now also matches against display names of services
+ * esx_vsphere_hostsystem.multipath: now able to set warn/crit levels
* FIX: windows_agent: fixed bug in cleanup of open thread handles
* FIX: cups default printer is now monitored again in linux agent
* FIX: host notification email in html format: fixed formating error
@@ -49,6 +50,7 @@
inventory check.
* Bulk inventory: yet another checkbox for skipping hosts where the
Check_MK service is currently critical
+ * New rule: Multipath Count (used by esx_vsphere_hostsystem.multipath)
* FIX: The rule "State and count of processes" is no longer available
in "Parameters for inventorized check". This rule was solely
intented for "Manual checks" configuration
diff --git a/checkman/esx_vsphere_hostsystem.multipath b/checkman/esx_vsphere_hostsystem.multipath
index e150622..b3aa1e2 100644
--- a/checkman/esx_vsphere_hostsystem.multipath
+++ b/checkman/esx_vsphere_hostsystem.multipath
@@ -5,16 +5,23 @@ license: GPL
distribution: check_mk
description:
This check monitors the state of all Multipath devices
- on an ESX host system. It returns {CRIT} if at least one
- path is {dead} or in {unknown} state.
- It returns {WARN} if at least one path is {disabled}. It also returns
- {WARN} if at least one path is in {standby} mode and the number of paths
- in {standby} mode is not equal to the number of {active} paths.
+ on an ESX host system.
+ Without further configuration it returns {CRIT} if at least one
+ path is {dead} or in {unknown} state. It returns {WARN} if at least
+ one path is {disabled}. It also returns {WARN} if at least one path
+ is in {standby} mode and the number of paths in {standby} mode is not
+ equal to the number of {active} paths.
+ By providing parameters you can configure the warn and crit levels for
+ each state type.
inventory:
One service per multipath device will be created. Paths
to local disk are ignored.
item:
- The path type and the unique id of the path joined with a slash.
+ The unique id of the path
+[parameters]
+parameters (dict): Each key represents a path state. It's values
+ are the warn / crit levels and of type (int,int). Available key types
+ are {active}, {dead}, {disabled}, {standby}, {unknown}
diff --git a/checks/esx_vsphere_hostsystem b/checks/esx_vsphere_hostsystem
index ae17b3d..eaf55dd 100644
--- a/checks/esx_vsphere_hostsystem
+++ b/checks/esx_vsphere_hostsystem
@@ -226,50 +226,51 @@ def esx_vsphere_multipath_convert(info):
def inventory_esx_vsphere_hostsystem_multipath(info):
data = esx_vsphere_multipath_convert(info).items()
- return [ (x, y ) for x, y in data]
+ return [ (x, None) for x, y in data]
def check_esx_vsphere_hostsystem_multipath(item, params, info):
- dead = 0
- disabled = 0
- standby = 0
- unknown = 0
- active = 0
- state = 0
- dead_label = ""
- disabled_label = ""
- standby_label = ""
- unknow_label = ""
-
- for path, states in esx_vsphere_multipath_convert(info).items():
+ state_infos = {
+ # alert_state, count, info
+ "active" : [0, 0, ""],
+ "dead" : [2, 0, ""],
+ "disabled" : [1, 0, ""],
+ "standby" : [0, 0, ""],
+ "unknown" : [2, 0, ""]
+ }
+
+ state = 0
+ message = ""
+
+ for path, states in esx_vsphere_multipath_convert(info).items():
if path == item:
+ # Collect states
for path_state, path_type in states:
- if path_state == "active":
- active += 1
- elif path_state == "dead":
- dead += 1
- dead_label = "(!!)"
- state = 2
-
- elif path_state == "disabled":
- disabled += 1
- disabled_label = "(!)"
- state = max(1, state)
-
- elif path_state == "standby":
- standby += 1
-
- elif path_state == "unknown":
- state = 2
- unknow_label = "(!!)"
- unknown += 1
-
- if standby > 0 and standby != active:
- standby_label = "(!)"
- state = max(1, state)
-
- message = "Type %s, %d active, %d dead%s, %d disabled%s, %d standby%s, %s unknown%s" % \
- (path_type, active, dead, dead_label, disabled, disabled_label,
- standby, standby_label, unknown, unknow_label )
+ state_item = state_infos.get(path_state)
+ if state_item:
+ state_item[1] += 1
+ state = max(state_item[0], state)
+
+ # Check warn, critical
+ if not params or type(params) == list:
+ if state_infos["standby"][1] > 0 and \
+ state_infos["standby"][1] != state_infos["active"][1]:
+ standby_label = "(!)"
+ state = max(state_infos["standby"][1], state)
+ else:
+ for state_name, state_values in state_infos.items():
+ if params.get(state_name):
+ warn, crit = params.get(state_name)
+ count = state_values[1]
+ if count > crit:
+ state = 2
+ state_values[2] = "(!!)"
+ elif count > warn:
+ state = max(state, 1)
+ state_values[2] = "(!)"
+ # Output message
+ message = "Type %s" % path_type
+ for element in "active", "dead", "disabled", "standby", "unknown":
+ message += ", %d %s%s" % ( state_infos[element][1], element, state_infos[element][2] )
break
else:
return 3, "Path not found in agent output"
@@ -280,6 +281,6 @@ check_info['esx_vsphere_hostsystem.multipath'] = {
"inventory_function" : inventory_esx_vsphere_hostsystem_multipath,
"check_function" : check_esx_vsphere_hostsystem_multipath,
"service_description" : "Multipath %s",
+ "group" : "multipath_count"
}
-#.
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index db0ae8f..4365f11 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -2795,6 +2795,46 @@ register_check_parameters(
register_check_parameters(
subgroup_storage,
+ "multipath_count",
+ _("Multipath Count"),
+ Alternative(
+ title = _("Match type"),
+ elements = [
+ FixedValue(
+ None,
+ title = _("OK if standby count is zero or equals active paths."),
+ totext = "",
+ ),
+ Dictionary(
+ title = _("Custom settings"),
+ elements = [ (element,
+ Tuple(
+ title = description,
+ elements = [
+ Integer(title = _("Warning if more than")),
+ Integer(title = _("Critical if more than")),
+ ]
+ )
+ ) for (element, description) in [
+ ("active", _("Active paths")),
+ ("dead", _("Dead paths")),
+ ("disabled", _("Disabled paths")),
+ ("standby", _("Standby paths")),
+ ("unknown", _("Unknown paths"))
+ ]
+ ]
+ ),
+ ]
+ ),
+ TextAscii(
+ title = _("Path ID")),
+ "first"
+)
+
+
+
+register_check_parameters(
+ subgroup_storage,
"hpux_multipath",
_("Multipathing on HPUX - state of paths of a LUN"),
Tuple(