Module: check_mk
Branch: master
Commit: 65b4a4937ea5062b8edcfce35f9cdac21535cdda
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=65b4a4937ea506…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Mon Dec 5 18:17:39 2016 +0100
4110 netscaler_vserver: health status is now configurable
---
.werks/4110 | 9 +++
ChangeLog | 1 +
checks/netscaler_vserver | 121 +++++++++++++++++++----------------
web/plugins/wato/check_parameters.py | 14 ++++
4 files changed, 90 insertions(+), 55 deletions(-)
diff --git a/.werks/4110 b/.werks/4110
new file mode 100644
index 0000000..f5591d6
--- /dev/null
+++ b/.werks/4110
@@ -0,0 +1,9 @@
+Title: netscaler_vserver: health status is now configurable
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.4.0i3
+Date: 1480958242
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 3965d1a..5145b8b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,6 +18,7 @@
* 3996 agent_netapp clustermode: now uses a fallback query to determine the node name
if the intial query fails
* 4108 ipmi_sensors: new options available...
* 4109 websphere_mq_instance, websphere_mq_instance.manager: new checks for Websphere
MQ
+ * 4110 netscaler_vserver: health status is now configurable
* 3987 FIX: Check_MK Agent Access: Windows agent reported incorrect only from value
* 3952 FIX: diskstat: fixed bug if multipath devices having an alias...
* 3939 FIX: f5_bigip_conns: readded performance data and graphs...
diff --git a/checks/netscaler_vserver b/checks/netscaler_vserver
index 1d22391..557c61f 100644
--- a/checks/netscaler_vserver
+++ b/checks/netscaler_vserver
@@ -26,55 +26,55 @@
#
netscaler_vserver_states = {
- "0": ("unknown", 1),
- "1": ("down", 2),
- "2": ("unknown", 1),
- "3": ("busy", 1),
- "4": ("out of service", 1),
- "5": ("transition to out of service", 1),
- "7": ("up", 0),
+ "0" : (1, "unknown"),
+ "1" : (2, "down"),
+ "2" : (1, "unknown"),
+ "3" : (1, "busy"),
+ "4" : (1, "out of service"),
+ "5" : (1, "transition to out of service"),
+ "7" : (0, "up"),
}
netscaler_vserver_types = {
- "0" :"http",
- "1" :"ftp",
- "2" :"tcp",
- "3" :"udp",
- "4" :"sslBridge",
- "5" :"monitor",
- "6" :"monitorUdp",
- "7" :"nntp",
- "8" :"httpserver",
- "9" :"httpclient",
- "10" :"rpcserver",
- "11" :"rpcclient",
- "12" :"nat",
- "13" :"any",
- "14" :"ssl",
- "15" :"dns",
- "16" :"adns",
- "17" :"snmp",
- "18" :"ha",
- "19" :"monitorPing",
- "20" :"sslOtherTcp",
- "21" :"aaa",
- "23" :"secureMonitor",
- "24" :"sslvpnUdp",
- "25" :"rip",
- "26" :"dnsClient",
- "27" :"rpcServer",
- "28" :"rpcClient",
- "62" :"serviceUnknown",
- "69" :"tftp",
+ "0" : "http",
+ "1" : "ftp",
+ "2" : "tcp",
+ "3" : "udp",
+ "4" : "ssl bridge",
+ "5" : "monitor",
+ "6" : "monitor udp",
+ "7" : "nntp",
+ "8" : "http server",
+ "9" : "http client",
+ "10" : "rpc server",
+ "11" : "rpc client",
+ "12" : "nat",
+ "13" : "any",
+ "14" : "ssl",
+ "15" : "dns",
+ "16" : "adns",
+ "17" : "snmp",
+ "18" : "ha",
+ "19" : "monitor ping",
+ "20" : "sslOther tcp",
+ "21" : "aaa",
+ "23" : "secure monitor",
+ "24" : "ssl vpn udp",
+ "25" : "rip",
+ "26" : "dns client",
+ "27" : "rpc server",
+ "28" : "rpc client",
+ "62" : "service unknown",
+ "69" : "tftp",
}
netscaler_vserver_entitytypes = {
- "0" :"unknown",
- "1" :"loadbalancing",
- "2" :"loadbalancinggroup",
- "3" :"sslvpn",
- "4" :"contentswitching",
- "5" :"cacheredirection",
+ "0" : "unknown",
+ "1" : "loadbalancing",
+ "2" : "loadbalancing group",
+ "3" : "ssl vpn",
+ "4" : "content switching",
+ "5" : "cache redirection",
}
@@ -83,27 +83,37 @@ def inventory_netscaler_vserver(info):
if line[0]:
yield line[0], None
-def check_netscaler_vserver(item, _no_params, info):
- for line in info:
- if line[0] == item:
- state = 0
- name, ip, port, svr_type, svr_state, svr_health, svr_entitytype = line
- svr_state_info = netscaler_vserver_states.get(svr_state,
("unknown", 1))
- yield svr_state_info[1], "State: %s" % svr_state_info[0]
+def check_netscaler_vserver(item, params, info):
+ if params is None:
+ params = {}
+
+ for name, ip, port, svr_type, svr_state,\
+ svr_health, svr_entitytype in info:
+ if name == item:
+ svr_state, svr_state_readable = netscaler_vserver_states.get(svr_state,
("unknown", 1))
+ yield svr_state, "Status: %s" % svr_state_readable
if svr_entitytype in [ "1", "2" ]:
- health_perc = int(svr_health)
+ health_perc = int(svr_health)
health_state = 0
+
if health_perc == 0:
health_state = 2
elif health_perc < 100:
health_state = 1
- yield health_state, "Health at: %s%%" % health_perc,
[("health_perc", health_perc, None, None, 0, 100)]
- yield 0, "Type: %s" %
netscaler_vserver_entitytypes.get(svr_entitytype , "unknown (%s)" %
svr_entitytype)
- yield 0, "Protocol: %s" % netscaler_vserver_types.get(svr_type,
"serviceUnknown (%s)" % svr_type)
- yield 0, "Socket: %s:%s" % (ip, port)
+ if "map_health_status" in params:
+ health_state = params["map_health_status"]
+
+ yield health_state, "Health: %s" %
get_percent_human_readable(health_perc),\
+ [("health_perc", health_perc, None, None, 0, 100)]
+
+ yield 0, "Type: %s, Protocol: %s, Socket: %s:%s" % (
+ netscaler_vserver_entitytypes.get(svr_entitytype , "unknown
(%s)" % svr_entitytype),
+ netscaler_vserver_types.get(svr_type, "service unknown (%s)" %
svr_type),
+ ip, port)
+
check_info["netscaler_vserver"] = {
"check_function" : check_netscaler_vserver,
@@ -120,4 +130,5 @@ check_info["netscaler_vserver"] = {
]),
"has_perfdata" : True,
"snmp_scan_function" : lambda oid:
oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.5951.1"),
+ "group" : "netscaler_vserver",
}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 0861c0c..614d8b0 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -6688,6 +6688,20 @@ register_check_parameters(
register_check_parameters(
subgroup_os,
+ "netscaler_vserver",
+ _("Netscaler VServer States"),
+ Dictionary(
+ elements = [
+ ("map_health_status", MonitoringState(title=_("Health
Status")))
+ ]
+ ),
+ TextAscii( title = _("Name of VServer") ),
+ "dict"
+)
+
+
+register_check_parameters(
+ subgroup_os,
"general_flash_usage",
_("Flash Space Usage"),
Alternative(