Module: check_mk
Branch: master
Commit: e32285dbf2f6d9607d446bfabf5bc33614843e18
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e32285dbf2f6d9…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Tue Jun 26 14:28:46 2012 +0200
Add new bug entry
---
.bugs/714 | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/.bugs/714 b/.bugs/714
new file mode 100644
index 0000000..8e5adcf
--- /dev/null
+++ b/.bugs/714
@@ -0,0 +1,40 @@
+Title: PostgreSQL check breaks on version 9 output
+Component: checks
+State: open
+Date: 2012-06-26 14:14:46
+Targetversion: 1.2.0
+Class: bug
+
+Currently we do not support output from version 9 PostgreSQL.
+They send one more data field and our agent sends with " " as separator
+Fix should detect output format and then also handle postgresql 9
+
+>> On 06/15/2012 04:41 PM,alex(a)rar.gi <mailto:alex@rar.gi> wrote:
+>> > File "/var/lib/check_mk/precompiled/XXXX", line 901, in
+>> > get_bytes_human_readable
+>> >
+>> ^@|^L^@^Wf^B^@Sn^A^@^Ad^K^@d^L^@|^L^@^Wf^B^@Sq^G^@^Aq^G^@Wd^P^@S(^Q^@^@^@NR^D^B^@^@s^G^@^@^@commit=i^@^@^@^@s&^@^@^@OK
+>>
+>> > - mount options exactly as e
+>> > xpecteds^K^@^@^@missing: %ss
+>> > TypeError: unsupported operand type(s) for /: 'str' and 'float'
+>>
+
+
+
+
+Fix suggested by user:
+
+> Sorry that should be
+>
+> echo 'select datid, datname, numbackends, xact_commit, xact_rollback,
+> blks_read, blks_hit, tup_returned, tup_fetched, tup_inserted,
+> tup_updated, tup_deleted, conflicts, 'stats_reset::timestamp::date',
+> pg_database_size(datname) "datsize" from pg_stat_database;' \
+> | su - postgres -c "psql -A -F' '" | sed '$d'
+>
+
+
+Methinks (flo) that we should
+ - not fetch the stats_reset timestamp at all since we dont need it
+ - not use -F' ' but -F'somethingelse'
new variable ONLY_SIDS
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: 6a161c931103de630e676c9212c0332ee0708136
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6a161c931103de…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Jun 26 12:18:47 2012 +0200
ORACLE agent: fix handling of EXCLUDE, new variable ONLY_SIDS
---
ChangeLog | 2 ++
agents/plugins/mk_oracle | 29 +++++++++++++++++++++++------
2 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 60231ba..ef0789f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,8 @@
is running.
* oracle_version: new check outputting the version of an ORACLE
database - and using uncached direct SQL output.
+ * ORACLE agent: fix handling of EXCLUDE, new variable ONLY_SIDS
+ for explicitely listing SIDs to monitor
Multisite:
* Show number of rows and number of selected rows in header line
diff --git a/agents/plugins/mk_oracle b/agents/plugins/mk_oracle
index 2cca71e..b3b249d 100755
--- a/agents/plugins/mk_oracle
+++ b/agents/plugins/mk_oracle
@@ -52,7 +52,12 @@ then
. $MK_CONFDIR/mk_oracle.cfg
fi
-# It is possible to filter SIDS totally. Just add the following to
+# You can specify a list of SIDs to monitor. Those databases will
+# only be handled, if they are found running, though!
+#
+# ONLY_SIDS="XE HIRN SEPP"
+#
+# It is possible to filter SIDS negatively. Just add the following to
# the mk_oracle.cfg file:
#
# EXCLUDE_<sid>="ALL"
@@ -66,7 +71,7 @@ fi
# For example skip oracle_sessions and oracle_logswitches checks
# for the instance "mysid".
#
-# EXCLUDE_mysid="oracle_sessions oracle_logswitches"
+# EXCLUDE_mysid="sessions logswitches"
#
#
# This check uses a cache file to prevent problems with long running
@@ -88,6 +93,18 @@ function sqlplus ()
for SID in $SIDS; do
+ # Check if SID is listed in ONLY_SIDS if this is used
+ if [ "$ONLY_SIDS" ] ; then
+ SKIP=yes
+ for S in $ONLY_SIDS ; do
+ if [ "$S" = "$SID" ] ; then
+ SKIP=
+ break
+ fi
+ done
+ if [ "$SKIP" ] ; then continue ; fi
+ fi
+
EXCLUDE=EXCLUDE_$SID
EXCLUDE=${!EXCLUDE}
# SID filtered totally?
@@ -96,7 +113,7 @@ for SID in $SIDS; do
fi
# Do Version-Check (use as a general login check) without caching
- if [ "$EXCLUDE" = "${EXCLUDE/oracle_version/}" ]; then
+ if [ "$EXCLUDE" = "${EXCLUDE/version/}" ]; then
echo '<<<oracle_version>>>'
echo "select banner from v\$version where banner like 'Oracle%';" | sqlplus "$SID"
fi
@@ -139,17 +156,17 @@ for SID in $SIDS; do
{
# Only execute checks when not filtered
- if [ "$EXCLUDE" = "${EXCLUDE/oracle_sessions/}" ]; then
+ if [ '$EXCLUDE' = '${EXCLUDE/sessions/}' ]; then
echo '<<<oracle_sessions>>>'
echo \"select count(1) from v\\\$session where status = 'ACTIVE';\" | sqlplus \"$SID\"
fi
- if [ "$EXCLUDE" = "${EXCLUDE/oracle_logswitches/}" ]; then
+ if [ '$EXCLUDE' = '${EXCLUDE/logswitches/}' ]; then
echo '<<<oracle_logswitches>>>'
echo \"select count(1) from v\\\$loghist where first_time > sysdate - 1/24;\" | sqlplus \"$SID\"
fi
- if [ "$EXCLUDE" = "${EXCLUDE/oracle_tablespaces/}" ]; then
+ if [ '$EXCLUDE' = '${EXCLUDE/tablespaces/}' ]; then
echo '<<<oracle_tablespaces>>>'
sqlplus "$SID" <<EOF | sed 's/READ ONLY/READONLY/g'
select f.file_name, f.tablespace_name, f.status, f.AUTOEXTENSIBLE,
Module: check_mk
Branch: master
Commit: e8a759fb4932d3dad8c7a0978dafa416d4b1d825
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e8a759fb4932d3…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Tue Jun 26 11:09:31 2012 +0200
Checks/wut_webio_io: Updated W&T Webio check with headers and documentation
---
checkman/wut_webio_io | 2 +-
checks/wut_webio_io | 46 ++++++++++++++++++++++++++++++++++++++++------
2 files changed, 41 insertions(+), 7 deletions(-)
diff --git a/checkman/wut_webio_io b/checkman/wut_webio_io
index ee5f5b9..c800d4c 100644
--- a/checkman/wut_webio_io
+++ b/checkman/wut_webio_io
@@ -16,7 +16,7 @@ perfdata:
This check currently has no performance data.
inventory:
- All channels are automatically inventorized.
+ All channels are automatically inventorized with their state.
[parameters]
diff --git a/checks/wut_webio_io b/checks/wut_webio_io
index a4a166d..c1d790b 100644
--- a/checks/wut_webio_io
+++ b/checks/wut_webio_io
@@ -1,6 +1,37 @@
#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2012 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.
+
+
+
+#SNMP Data for the port that is labeled as "0" on the device and
+# in the web interface, but "1" in the tables.
+# .1.3.6.1.4.1.5040.1.2.4.1.3.1.4.1 1 << this is the index
+# .1.3.6.1.4.1.5040.1.2.4.3.1.5.2.1.1.1 1 << this is the state
+# .1.3.6.1.4.1.5040.1.2.4.3.2.1.1.1.1 "Stoerung USV" << this is the user descr.
-# snmpwalk fehlt
webio_state_names = {
0 : "Off",
@@ -10,15 +41,18 @@ webio_state_names = {
# Parser for the snmp data, hands back a dict with fugded
# item name and the state of all ports.
+# fix the port index. it is off by one. alternatively you could just
+# fix the nagios state text at check time.
+# Also do padding with 0, this means we need to handle it as "str"
+# tbh, there is a way in if.include but it is beyond me how that works.
+# The max model has 24 ports, so this will work for the current product
+# range.
def parse_webio_io_inputs(info):
wut_info = {}
for line in info:
input_index, input_desc, state = line
state = int(state)
- # fix the port index. it is off by one.
input_index = str(int(input_index) - 1)
- # Do padding with 0, this means we need to handle it as "str"
- # tbh, there is a way in if.include but it is beyond me how that works.
if len(input_index) < 2:
input_index = "0" + input_index
@@ -34,7 +68,7 @@ def parse_webio_io_inputs(info):
def inventory_wut_webio_io_inputs(info):
inventory = []
wut_info = parse_webio_io_inputs(info)
- # inventorize the err, things.
+ # inventorize the err, things as the parser returned them.
for index in wut_info.keys():
inventory.append((wut_info[index][0], wut_info[index][1]))
return inventory
@@ -48,7 +82,7 @@ def check_wut_webio_io_inputs(item, params, info):
oldstate = params
state = wut_info[index][1]
- # Compare to the last state of the IO port.
+ # Compare to the state of the IO port at inventory.
if state != params:
return (2, "CRITICAL - state should be %s but is %s (!!)" % (
webio_state_names[params],