check manpage added
Message-ID: <526683fb.tgPlFxB8Xdj4/JeI%gg(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Module: check_mk
Branch: master
Commit: fa48fdbcbac79f31e258ac25ab53d5c4618597b2
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=fa48fdbcbac79f…
Author: Götz Golla <gg(a)mathias-kettner.de>
Date: Tue Oct 22 15:55:24 2013 +0200
improvements to genuscreen carp check, check manpage added
---
checkman/genua_carp | 29 +++++++++++++++++
checks/genua_carp | 87 ++++++++++++++++++++++-----------------------------
2 files changed, 66 insertions(+), 50 deletions(-)
diff --git a/checkman/genua_carp b/checkman/genua_carp
new file mode 100644
index 0000000..38f418f
--- /dev/null
+++ b/checkman/genua_carp
@@ -0,0 +1,29 @@
+title: State of carp interfaces on carp clusters and nodes of genuscreen devices
+agents: snmp
+catalog: hw/network/genua
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the state of the carp interfaces of genuscreen devices.
+ It can be used on single hosts as well as clusters. For the latter, the nodes of
+ the carp cluster must be included in a Check_MK cluster, and the check must be
configured as
+ clustered service with an approriate rule. Clusters with more then two nodes are
+ supported.
+ The check detects if it is called on a cluster or a node. For a node the
+ interface and carp state of the carp interface items are checked.
+ For a cluster the check determines the number of carp interfaces on the cluster with
+ the state master. If it is either {0} or {>1} the check is critical.
+
+ The check is known to run with genuscreen version 3.0, others may also work.
+
+perfdata:
+ None
+
+inventory:
+ The inventory process checks if the device has a system description OIDs
(.1.3.6.1.2.1.1.2.0)
+ and if the name of this OID contains "genuscreen" (case insensitive).
+ If this is true the system is inventorized.
+
+item:
+ The name of the carp interfaces
+
diff --git a/checks/genua_carp b/checks/genua_carp
index 9cc97ae..f84faa4 100644
--- a/checks/genua_carp
+++ b/checks/genua_carp
@@ -40,7 +40,6 @@
def inventory_genua_carp(info):
-
inventory = []
if info[0]:
@@ -88,19 +87,24 @@ def check_genua_carp(item, _no_params, info):
if not info[0]:
return(3, "Invalid Output from Agent")
state = 0
- nodes = 0
+ nodes = len(info)
masters = 0
+ if nodes > 1:
+ prefix = "Cluster test: "
+ else:
+ prefix = "Node test: "
# Loop over all nodes, just one line if not a cluster
for line in info:
- nodes += 1
# Loop over interfaces on node
for ifIndex, ifName, ifType, ifLinkState, ifCarpState in line:
ifTypeStr = genua_iftype(str(ifType))
ifLinkStateStr = genua_linkstate(str(ifLinkState))
ifCarpStateStr = genua_carpstate(str(ifCarpState))
# is inventorized interface in state carp master ?
- output = "IfName: %s IfType: %s " % (ifName, ifTypeStr)
+ if ifName == item:
+ output = "node in carp state %s with IfLinkState %s" \
+ % (ifCarpStateStr,ifLinkStateStr)
if ifName == item and ifCarpState == "2":
# is master
masters += 1
@@ -108,45 +112,30 @@ def check_genua_carp(item, _no_params, info):
# first master
if ifLinkState == "2":
state = 0
- output += "IfLinkState: %s IfCarpState: %s" \
- % (ifLinkStateStr, ifCarpStateStr)
elif ifLinkState == "1":
state = 2
- output += "IfLinkState: %s (!!) IfCarpState: %s " \
- % (ifLinkStateStr, ifCarpStateStr)
elif ifLinkState in [ "0", "3" ]:
state = 1
- output += "IfLinkState: %s (!) IfCarpState: %s " \
- % (ifLinkStateStr, ifCarpStateStr)
else:
state = 3
- output += "IfLinkState: %s IfCarpState: %s (!) " \
- % (ifLinkStateStr, ifCarpStateStr)
- return(state, output)
else:
- output = "%d masters found on cluster IF %s with %d nodes"
\
- % (masters,item,nodes)
- return (2, output)
- # carp backup
- elif ifName == item and ifCarpState == "1" and ifLinkState ==
"1":
- state = 0
- output += "IfLinkState: %s IfCarpState: %s" \
- % (ifLinkStateStr, ifCarpStateStr)
- # carp init
- elif ifName == item and ifCarpState == "0":
- state = 1
- output += "IfLinkState: %s IfCarpState: %s (!) " \
- % (ifLinkStateStr, ifCarpStateStr)
- else:
- state = 1
- output += "IfLinkState: %s (!) IfCarpState: %s (!)" \
- % (ifLinkStateStr, ifCarpStateStr)
+ state = 2
+ output = "%d masters found on cluster with %d nodes" \
+ % (masters,nodes)
+ # look for non-masters, only interesting if no cluster
+ elif ifName == item and nodes == 1:
+ # carp backup
+ if ifCarpState == "1" and ifLinkState == "1":
+ state = 0
+ else:
+ state = 1
- if nodes > 1:
- # Called for cluster, and no master found
+ # no masters found in cluster
+ if nodes > 1 and masters == 0:
state = 2
- output = "No master found on cluster IF %s with %d nodes" % (item,
nodes)
+ output = "No master found on cluster with %d nodes" % nodes
+ output = prefix + output
return(state, output)
check_info['genua_carp'] = {
@@ -155,28 +144,26 @@ check_info['genua_carp'] = {
"service_description": "Carp Interface %s",
"has_perfdata" : False,
"snmp_info" : [( ".1.3.6.1.4.1.3717.2.1.2",[
- 1.1, # "ifIndex"
- 1.2, # "ifName"
- 1.3, # "ifType"
- 1.4, # "ifLinkState"
- 1.7, # "ifCarpState"
+ "1.1", # "ifIndex"
+ "1.2", # "ifName"
+ "1.3", # "ifType"
+ "1.4", # "ifLinkState"
+ "1.7", # "ifCarpState"
])],
- "snmp_scan_function" : lambda oid: "genuscreen" in
oid(".1.3.6.1.2.1.1.1.0").lower() \
- and oid(".1.3.6.1.4.1.3717.2.1.2.1.7") != None,
+ "snmp_scan_function" : lambda oid: "genuscreen" in
oid(".1.3.6.1.2.1.1.1.0").lower()
}
-check_info['genua_carp_bad-eoid'] = {
+check_info['genua_carp_bad_eoid'] = {
"inventory_function" : inventory_genua_carp,
"check_function" : check_genua_carp,
"service_description": "Carp Interface %s",
"has_perfdata" : False,
- "snmp_info" : ( ".1.3.6.1.4.1.3137.2.1.2",[
- 1.1, # "ifIndex"
- 1.2, # "ifName"
- 1.3, # "ifType"
- 1.4, # "ifLinkState"
- 1.7, # "ifCarpState"
- ]),
- "snmp_scan_function" : lambda oid: "genuscreen" in
oid(".1.3.6.1.2.1.1.1.0").lower() \
- and oid(".1.3.6.1.4.1.3137.2.1.2.1.7") != None
+ "snmp_info" : [( ".1.3.6.1.4.1.3137.2.1.2",[
+ "1.1", # "ifIndex"
+ "1.2", # "ifName"
+ "1.3", # "ifType"
+ "1.4", # "ifLinkState"
+ "1.7", # "ifCarpState"
+ ])],
+ "snmp_scan_function" : lambda oid: "genuscreen" in
oid(".1.3.6.1.2.1.1.1.0").lower()
}