Module: check_mk
Branch: master
Commit: 8187ebb49841217b2fcc3c0906ad55f9c7013724
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8187ebb4984121…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Wed Oct 18 09:25:22 2017 +0200
5322 fortigate_node_sessions: Now upper levels are configurable
Change-Id: Ia6dacd911e488939e96f81334db66b8e69d19f6d
---
.werks/5322 | 10 ++++++++++
checks/fortigate_node | 21 +++-----------------
checks/fortigate_sessions | 20 ++++++-------------
checks/fortigate_sessions.include | 38 ++++++++++++++++++++++++++++++++++++
checks/fortigate_sessions_base | 20 ++++++-------------
web/plugins/wato/check_parameters.py | 26 ++++++++++++++++++------
6 files changed, 83 insertions(+), 52 deletions(-)
diff --git a/.werks/5322 b/.werks/5322
new file mode 100644
index 0000000..9e26c6e
--- /dev/null
+++ b/.werks/5322
@@ -0,0 +1,10 @@
+Title: fortigate_node_sessions: Now upper levels are configurable
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i1
+Date: 1508311477
+Class: feature
+
+
diff --git a/checks/fortigate_node b/checks/fortigate_node
index 4bc1b10..154b028 100644
--- a/checks/fortigate_node
+++ b/checks/fortigate_node
@@ -235,24 +235,7 @@ def check_fortigate_node_ses(item, params, parsed):
if item in parsed["nodes"]:
if type(params) == dict:
params = params["levels"]
-
- warn, crit = map(int, params)
-
- current = parsed["nodes"][item]["sessions"]
-
- status = 0
- if current >= crit:
- status = 2
- elif current >= warn:
- status = 1
-
- if status > 0:
- wcsuffix = ", (warn/crit at %d/%d)" % (warn, crit)
- else:
- wcsuffix = ""
-
- return status, "%s Sessions%s" % (current, wcsuffix),\
- [("session", current, warn, crit)]
+ return fortigate_sessions(parsed["nodes"][item]["sessions"],
params)
check_info["fortigate_node.sessions"] = {
@@ -260,4 +243,6 @@ check_info["fortigate_node.sessions"] = {
"check_function" : check_fortigate_node_ses,
"service_description" : "Sessions %s",
"has_perfdata" : True,
+ "group" : "fortigate_node_sessions",
+ "includes" : ["fortigate_sessions.include"],
}
diff --git a/checks/fortigate_sessions b/checks/fortigate_sessions
index 529c58b..6526fb2 100644
--- a/checks/fortigate_sessions
+++ b/checks/fortigate_sessions
@@ -24,29 +24,20 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
+
fortigate_sessions_default_levels = (100000, 150000)
+
def inventory_fortigate_sessions(info):
return [(None, "fortigate_sessions_default_levels")]
+
def check_fortigate_sessions(item, params, info):
try:
- current = int(info[0][0])
+ return fortigate_sessions(int(info[0][0]), params)
except (IndexError, ValueError):
return
- warn, crit = params
- state = 0
- icon = ''
- if current >= warn:
- state = 1
- icon = "(!)"
- if current >= crit:
- state = 2
- icon = "(!!)"
-
- perf = [("session", current, warn, crit)]
- return state, "%d Session%s (warn/crit at %d/%d)" % (current, icon, warn,
crit), perf
check_info["fortigate_sessions"] = {
"inventory_function" : inventory_fortigate_sessions,
@@ -57,5 +48,6 @@ check_info["fortigate_sessions"] = {
# uses mib FORTINET-MIB-280
"snmp_scan_function" : lambda oid: ".1.3.6.1.4.1.12356.101.1"
in oid(".1.3.6.1.2.1.1.2.0") and\
oid(".1.3.6.1.4.1.12356.1.10.0"),
- "snmp_info" : ( ".1.3.6.1.4.1.12356.1", [ 10 ]),
+ "snmp_info" : ( ".1.3.6.1.4.1.12356.1", [ 10 ]),
+ "includes" : ["fortigate_sessions.include"],
}
diff --git a/checks/fortigate_sessions.include b/checks/fortigate_sessions.include
new file mode 100644
index 0000000..d16b231
--- /dev/null
+++ b/checks/fortigate_sessions.include
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2017 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at
http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# tails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+
+def fortigate_sessions(sessions, params):
+ warn, crit = params
+ infotext = "%d Sessions" % sessions
+ state = 0
+ if sessions >= crit:
+ state = 2
+ elif sessions >= warn:
+ state = 1
+ if state:
+ infotext += " (warn/crit at %d/%d)" % (warn, crit)
+ return state, infotext, [("session", sessions, warn, crit)]
diff --git a/checks/fortigate_sessions_base b/checks/fortigate_sessions_base
index 23693c5..ae82092 100644
--- a/checks/fortigate_sessions_base
+++ b/checks/fortigate_sessions_base
@@ -24,26 +24,17 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
+
fortigate_sessions_base_default_levels = (100000, 150000)
+
def inventory_fortigate_sessions_base(info):
return [(None, "fortigate_sessions_base_default_levels")]
-def check_fortigate_sessions_base(item, params, info):
- warn, crit = params
- current = int(info[0][0])
- status = 0
- if current >= crit:
- status = 2
- elif current >= warn:
- status = 1
- infotext = "%d active sessions" % current
- if status:
- infotext += " (warn/crit at %d/%d)" % (warn, crit)
+def check_fortigate_sessions_base(item, params, info):
+ return fortigate_sessions(int(info[0][0]), params)
- perfdata = [("session", current, warn, crit)]
- return status, infotext, perfdata
check_info["fortigate_sessions_base"] = {
"inventory_function" : inventory_fortigate_sessions_base,
@@ -54,5 +45,6 @@ check_info["fortigate_sessions_base"] = {
# uses mib FORTINET-FORTIGATE-MIB
"snmp_scan_function" : lambda oid: ".1.3.6.1.4.1.12356.101.1"
in oid(".1.3.6.1.2.1.1.2.0") and\
oid(".1.3.6.1.4.1.12356.101.4.1.8.0"),
- "snmp_info" : ( ".1.3.6.1.4.1.12356.101.4.1", [ 8 ]),
+ "snmp_info" : ( ".1.3.6.1.4.1.12356.101.4.1", [ 8 ]),
+ "includes" : ["fortigate_sessions.include"],
}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index c93e2be..f1c78c9 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -228,22 +228,36 @@ register_check_parameters(
'dict'
)
+fortigate_sessions_element = Tuple(
+ title = _(u"Levels for active sessions"),
+ elements = [
+ Integer( title = _(u"Warning at"), default_value = 100000, size = 10
),
+ Integer( title = _(u"Critical at"), default_value = 150000, size = 10
),
+ ])
+
register_check_parameters(
subgroup_networking,
"fortigate_sessions",
_(u"Fortigate Active Sessions"),
- Tuple(
- title = _(u"Levels for active sessions"),
- elements = [
- Integer( title = _(u"Warning at"), default_value = 100000, size =
10 ),
- Integer( title = _(u"Critical at"), default_value = 150000, size =
10 ),
- ]),
+ fortigate_sessions_element,
None,
"first"
)
register_check_parameters(
subgroup_networking,
+ "fortigate_node_sessions",
+ _(u"Fortigate Active Sessions"),
+ fortigate_sessions_element,
+ TextAscii(
+ title = _("Node name"),
+ allow_empty = False
+ ),
+ "first"
+)
+
+register_check_parameters(
+ subgroup_networking,
"f5_bigip_cluster_v11",
_(u"Configuration Sync Status for F5 BigIP devices"),
Dictionary(