Module: check_mk
Branch: master
Commit: ec97df2f6ffa858ba7e3df625490c155fb272c95
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ec97df2f6ffa85…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Fri Apr 8 17:01:29 2011 +0200
add support for f5 loadbalancers
---
checkman/f5_bigip_pool | 15 ++++++++
checkman/f5_bigip_vserver | 14 ++++++++
checks/f5_bigip_pool | 74 ++++++++++++++++++++++++++++++++++++++++
checks/f5_bigip_vserver | 82 +++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 185 insertions(+), 0 deletions(-)
diff --git a/checkman/f5_bigip_pool b/checkman/f5_bigip_pool
new file mode 100644
index 0000000..769251a
--- /dev/null
+++ b/checkman/f5_bigip_pool
@@ -0,0 +1,15 @@
+title: Check status of load balancing pools on F5 Big-IP
+agents: snmp
+author: Florian Heigl <fh(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ The check queries the MIB tables of F5 BIG-IP loadbalancers (local traffic managers) for the status of any load balancing pools. It gathers the number of loadbalancers backing the pool and how many of those are working. It doesn't currently honor the 'MinUpMembers' parameter that can be set to trigger actions for the pool if too many members fail.
+It supports devices running the 9.0 and above releases of the F5 OS. It's tested against 9.3 devices.
+
+inventory:
+ The check gather a list of the pools defined on a system. It will include non-enabled ones, as this is considered a temporary state.
+
+
+perfdata:
+ the check does not (yet) generate performance data.
diff --git a/checkman/f5_bigip_vserver b/checkman/f5_bigip_vserver
new file mode 100644
index 0000000..03dd8a0
--- /dev/null
+++ b/checkman/f5_bigip_vserver
@@ -0,0 +1,14 @@
+title: Check status of virtual servers on a F5 load balancer
+agents: snmp
+author: Florian Heigl <fh(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ The check queries the MIB tables of F5 BIG-IP loadbalancers (local traffic managers) for the status of any virtual server defined on them. It supports devices running the 9.0 and above releases of the F5 OS. It's tested against 9.3 devices.
+
+inventory:
+ Any virtual server that is found online will be added during inventoryy and checked for it's status. Virtual servers in the various "Warning" states will not be inventorized.
+
+
+perfdata:
+ the check does not (yet) generate performance data.
diff --git a/checks/f5_bigip_pool b/checks/f5_bigip_pool
new file mode 100644
index 0000000..7e61daa
--- /dev/null
+++ b/checks/f5_bigip_pool
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2010 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-
+# ails. 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.
+
+
+# Agent / MIB output
+# see: 1.3.6.1.4.1.3375.2.2.5.1.2.1
+# F5-BIGIP-LOCAL-MIB::ltmPoolName. 8.80.111.111.108.asci_encoded_str = Pool_NMA
+# F5-BIGIP-LOCAL-MIB::ltmPoolMemberCnt. 8.80.111.111.108.95.78.77.65 = 2
+# F5-BIGIP-LOCAL-MIB::ltmPoolActiveMemberCnt. 8.80.111.111.108.95.78.77.65 = 0
+
+
+def inventory_f5_bigip_pool(checkname,info):
+# inventorize all pools and their member count
+ inventory = []
+ for line in info:
+ if line[0] != "":
+ inventory.append((line[0],None))
+ return inventory
+
+
+def check_f5_bigip_pool(item, _no_params, info):
+ for line in info:
+ if line[0] == item:
+ pool_act_members = int(line[1])
+ pool_def_members = int(line[2])
+ if pool_act_members == pool_def_members:
+ return (0, "OK - all members online")
+ elif pool_act_members > 1:
+ return (1, "WARN - only %i of %i pool members are up" % (pool_act_members, pool_def_members))
+ elif pool_members == 1:
+ return (2, "CRIT - only 1 pool member left")
+ elif pool_members == 0:
+ return (2, "CRIT - no pool members left")
+ else:
+ return (3, "UNKNOWN output for pool %s" % item)
+ return (3, "UNKNOWN - unexpected Output from SNMP Agent")
+
+
+snmp_info["f5_bigip_pool"] = \
+ ( ".1.3.6.1.4.1.3375.2.2.5.1.2.1", [
+ 1, # ltmPoolEntry
+ 8, # ltmPoolActiveMemberCnt
+ 23, # ltmPoolMemberCnt
+ ])
+
+
+check_info["f5_bigip_pool"] = (check_f5_bigip_pool, "Load Balancing Pool %s", 0, inventory_f5_bigip_pool )
+
+
+snmp_scan_functions["f5_bigip_pool"] = \
+ lambda oid: '.1.3.6.1.4.1.3375.2' in oid(".1.3.6.1.2.1.1.2.0") and "big-ip" in oid(".1.3.6.1.4.1.3375.2.1.4.1.0").lower()
diff --git a/checks/f5_bigip_vserver b/checks/f5_bigip_vserver
new file mode 100644
index 0000000..43f3ea4
--- /dev/null
+++ b/checks/f5_bigip_vserver
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2010 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-
+# ails. 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.
+
+
+# Example output
+# Name of a Virt. Server:
+# 1.3.6.1.4.1.3375.2.2.10.2.3.1.1.ascii_encoded_string. "VS_XX"
+# Textual Status (only supported in F5 OS 9.3+
+# 1.3.6.1.4.1.3375.2.2.10.1.2.1.25.5.12.34.56.78.90 "The virtual server is available"
+# Table with name and status
+# 1.3.6.1.4.1.3375.2.2.10.13.2.1. 1 .5.12.34.56.78.90 "VS_XX"
+# 1.3.6.1.4.1.3375.2.2.10.13.2.1. 2 .5.12.34.56.78.90 1
+
+
+def inventory_f5_bigip_vserver(checkname,info):
+ inventory = []
+ for line in info:
+# snmp info will return some empty lines here, filter them and
+# only inventorize OK status.
+ if line[0] != "":
+ if int(line[1]) == 1:
+ inventory.append((line[0], None))
+ return inventory
+
+
+def check_f5_bigip_vserver(item, _no_params, info):
+ for line in info:
+ if line[0] != "":
+ if line[0] == item:
+ status = int(line[1])
+ if status == 0:
+ return (1, "WARN - Virtual Server is disabled")
+ elif status == 1:
+ return (0, "OK - Virtual Server is up and available")
+ elif status == 2:
+ return (2, "CRIT - Virtual Server is currently not available")
+ elif status == 3:
+ return (2, "CRIT - Virtual Server is not available")
+ elif status == 4:
+ return (1, "WARN - Virtual Server status is unknown")
+ else:
+ return (3, "UNKNOWN")
+ return (3, "UNKNOWN - Virtual Server %s not found in SNMP output" % item)
+
+
+
+snmp_info["f5_bigip_vserver"] = \
+ ( ".1.3.6.1.4.1.3375.2.2.10.1.2.1", [
+ 1, # Name
+ 2, # Status
+ ])
+
+
+
+check_info["f5_bigip_vserver"] = (check_f5_bigip_vserver, "Virtual Server %s", 0, inventory_f5_bigip_vserver )
+
+
+snmp_scan_functions["f5_bigip_vserver"] = \
+ lambda oid: '.1.3.6.1.4.1.3375.2' in oid(".1.3.6.1.2.1.1.2.0") and "big-ip" in oid(".1.3.6.1.4.1.3375.2.1.4.1.0").lower()
Module: check_mk
Branch: master
Commit: 3083fb5c6ada588c92850624ff163d6c6d0c565a
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3083fb5c6ada58…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Apr 7 17:12:52 2011 +0200
Updated bug entries
---
.bugs/241 | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/.bugs/241 b/.bugs/241
new file mode 100644
index 0000000..680efbb
--- /dev/null
+++ b/.bugs/241
@@ -0,0 +1,10 @@
+Title: BI filter for aggregation group does not work
+Component: bi
+Benefit: 2
+State: open
+Cost: 2
+Date: 2011-04-07 17:12:11
+Class: bug
+
+In the table single host aggregations the filter for the
+BI group is not effective. It is simply ignored.