Module: check_mk
Branch: master
Commit: 1c53c097b75a920af3829e0e7b57ac0fffc86972
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=1c53c097b75a92…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Jul 1 08:52:30 2013 +0200
mk_oracle: Added plugin for solaris
---
ChangeLog | 1 +
agents/solaris/mk_oracle | 200 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 201 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 46fca92..f289fa6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -40,6 +40,7 @@
* Special Agent vSphere: support ESX 4.1 (thanks to Mirko Witt)
* esx_vsphere_object: make check state configurable
* mk_logwatch: support continuation lines with 'A'. Please refer to docu.
+ * mk_oracle: Added plugin for solaris
Notifications:
* notify.py: Matching service level: Use the hosts service level if a
diff --git a/agents/solaris/mk_oracle b/agents/solaris/mk_oracle
new file mode 100644
index 0000000..194fda9
--- /dev/null
+++ b/agents/solaris/mk_oracle
@@ -0,0 +1,200 @@
+#!/bin/bash
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | 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.
+
+# Check_MK agent plugin for monitoring ORACLE databases
+
+# This plugin is a port of the linux agent plugin. It has been
+# tested with solaris 10.
+
+# Get list of all running databases
+SIDS=$(UNIX95=true ps -ef -o args | sed -n '/^ora_pmon_/p;/^xe_pmon_/p' | sed -n '/^[a-z]*_pmon_\([^ ]*\)/s//\1/p')
+if [ -z "$SIDS" ] ; then
+ # If on this system we've already found a database
+ if [ -e "$MK_CONFDIR/mk_oracle.found" ] ; then
+ echo '<<<oracle_version>>>'
+ echo '<<<oracle_sessions>>>'
+ echo '<<<oracle_logswitches>>>'
+ echo '<<<oracle_tablespaces>>>'
+ fi
+ exit 0
+fi
+
+touch $MK_CONFDIR/mk_oracle.found
+
+# Recreate data if cachefile is older than 120 seconds.
+# If you set this to 0, then the cache file will be created
+# as often as possible. If the database queries last longer
+# then your check interval, caching will be active nevertheless.
+CACHE_MAXAGE=120
+
+# Source the optional configuration file for this agent plugin
+if [ -e "$MK_CONFDIR/mk_oracle.cfg" ]
+then
+ . $MK_CONFDIR/mk_oracle.cfg
+fi
+
+# 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"
+#
+# Another option is to filter single checks for SIDS. Just add
+# lines as follows to the mk_oracle.cfg file. One service per
+# line:
+#
+# EXCLUDE_<sid>="<service>"
+#
+# For example skip oracle_sessions and oracle_logswitches checks
+# for the instance "mysid".
+#
+# EXCLUDE_mysid="sessions logswitches"
+#
+#
+# This check uses a cache file to prevent problems with long running
+# SQL queries. It starts building a cache when
+# a) no cache is present or the cache is too old and
+# b) the cache is not currently being built
+# The cache is used for $CACHE_MAXAGE seconds. The CACHE_MAXAGE
+# option is pre-set to 120 seconds but can be changed in mk_oracle.cfg.
+
+function sqlplus ()
+{
+ if OUTPUT=$({ echo 'set pages 0' ; echo 'whenever sqlerror exit 1'; echo 'set lines 8000' ; echo 'set feedback off'; cat ; } | $MK_CONFDIR/sqlplus.sh $1)
+ then
+ echo "${OUTPUT}" | sed -e 's/[[:space:]]\+/ /g' -e '/^[[:space:]]*$/d' -e "s/^/$1 /"
+ else
+ echo "${OUTPUT}" | sed "s/^/$1 FAILURE /"
+ fi
+}
+
+
+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?
+ if [ "$EXCLUDE" = "ALL" ]; then
+ continue
+ fi
+
+ # Do Version-Check (use as a general login check) without caching
+ if [ "$EXCLUDE" = "${EXCLUDE/version/}" ]; then
+ echo '<<<oracle_version>>>'
+ echo "select banner from v\$version where banner like 'Oracle%';" | sqlplus "$SID"
+ fi
+
+ CACHE_FILE=$MK_CONFDIR/oracle_$SID.cache
+
+ # Check if file exists and recent enough
+ CACHE_FILE_UPTODATE=
+ if [ -s $CACHE_FILE ]; then
+ NOW=$(perl -le "print time()")
+
+ MTIME=$(perl -MPOSIX -le 'print mktime(localtime((lstat($ARGV[0]))[9]))' $CACHE_FILE)
+ if [ $(($NOW - $MTIME)) -le $CACHE_MAXAGE ]; then
+ CACHE_FILE_UPTODATE=1
+ fi
+ fi
+
+ # If the cache file exists, output it, regardless of its age. If it's outdated
+ # then it will be recreated *asynchronously*. It's new contents will not
+ # be available here anyway.
+ if [ -s "$CACHE_FILE" ] ; then cat "$CACHE_FILE" ; fi
+
+ # When the cache file is not valid, we recreated it, but only if there is not
+ # yet a background process from a previous check still doing this! We see this
+ # because of the existance of the .new file
+ # When the cache is old and there is no *new file present, then start a query
+ # to update the information for this instance.
+ if [ -z "$CACHE_FILE_UPTODATE" -a ! -e "$CACHE_FILE.new" ]
+ then
+ nohup bash -c "
+ set -o noclobber
+ function sqlplus ()
+ {
+ if OUTPUT=\$({ echo 'set pages 0' ; echo 'whenever sqlerror exit 1'; echo 'set lines 8000' ; echo 'set feedback off'; cat ; } | $MK_CONFDIR/sqlplus.sh \$1)
+ then
+ echo \"\${OUTPUT}\" | sed -e 's/[[:space:]]\+/ /g' -e '/^[[:space:]]*$/d' -e \"s/^/\$1 /\"
+ else
+ echo \"\${OUTPUT}\" | sed \"s/^/\$1 FAILURE /\"
+ fi
+ }
+
+ {
+ # Only execute checks when not filtered
+ if [ '$EXCLUDE' = '${EXCLUDE/sessions/}' ]; then
+ echo '<<<oracle_sessions>>>'
+ echo \"select count(1) from v\\\$session where status = 'ACTIVE';\" | sqlplus \"$SID\"
+ fi
+
+ 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/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,
+ f.blocks, f.maxblocks, f.USER_BLOCKS, f.INCREMENT_BY,
+ f.ONLINE_STATUS, t.BLOCK_SIZE, t.status, decode(sum(fs.blocks), NULL, 0,
+ sum(fs.blocks)) free_blocks
+ from dba_data_files f, dba_tablespaces t, dba_free_space fs
+ where f.tablespace_name = t.tablespace_name
+ and f.file_id = fs.file_id(+)
+ group by f.file_name, f.tablespace_name, f.status, f.autoextensible,
+ f.blocks, f.maxblocks, f.user_blocks, f.increment_by, f.online_status,
+ t.block_size, t.status
+ UNION
+ select f.file_name, f.tablespace_name, f.status, f.AUTOEXTENSIBLE,
+ f.blocks, f.maxblocks, f.USER_BLOCKS, f.INCREMENT_BY, 'TEMP',
+ t.BLOCK_SIZE, t.status, sum(sh.blocks_free) free_blocks
+ from v\\\$thread th, dba_temp_files f, dba_tablespaces t, v\\\$temp_space_header sh
+ WHERE f.tablespace_name = t.tablespace_name and f.file_id = sh.file_id
+ GROUP BY th.instance, f.file_name, f.tablespace_name, f.status,
+ f.autoextensible, f.blocks, f.maxblocks, f.user_blocks, f.increment_by,
+ 'TEMP', t.block_size, t.status;
+EOF
+ fi
+ } > $CACHE_FILE.new && mv $CACHE_FILE.new $CACHE_FILE || rm -f $CACHE_FILE*
+ "
+ fi
+done
Module: check_mk
Branch: master
Commit: df4c6fe22d47bdb677e51f5212ccfb54bf44d516
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=df4c6fe22d47bd…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Sat Jun 29 18:24:09 2013 +0200
Add catalog: information for new brocade checks
---
checkman/brocade_fan | 15 ++++++++-------
checkman/brocade_fcport | 3 +--
checkman/brocade_power | 13 ++++++-------
checkman/brocade_temp | 15 ++++++++-------
4 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/checkman/brocade_fan b/checkman/brocade_fan
index 3c686d7..9832aee 100644
--- a/checkman/brocade_fan
+++ b/checkman/brocade_fan
@@ -1,20 +1,21 @@
-title: Brocade FC switches FAN speed
+title: Fans of a Brocade FC switch
+catalog: hw/storagehw/brocade
agents: snmp
-author: Bastian Kuhn <bk(a)mathias-kettner.de>
license: GPL
distribution: check_mk
description:
- This checks monitors the FAN speeds of a Brocade FC switch
+ This checks monitors the FAN speeds of a Brocade FC switch.
item:
- The Number of the FAN (1, 2, 3 ...) like descripted in the snmp output
+ The number of the FAN (1, 2, 3 ...) like descripted in the SNMP output.
perfdata:
- The speed of each FAN
+ The speed of each fan.
inventory:
- The inventory creates a service for each fan
+ The inventory creates a service for each fan.
[parameters]
-tuple (warn, crit): The levels of the minimum FAN speed
+warn(int): the minimum fan speed for an OK state
+crit(int): the minimum fan speed for a WARN state
diff --git a/checkman/brocade_fcport b/checkman/brocade_fcport
index f34df4f..892cfdd 100644
--- a/checkman/brocade_fcport
+++ b/checkman/brocade_fcport
@@ -1,7 +1,6 @@
title: FibreChannel ports of Brocade FC switches
+catalog: hw/storagehw/brocade
agents: snmp
-catalog: hw/storagehw/brocade
-author: Mathias Kettner <mk(a)mathias-kettner.de>
license: GPL
distribution: check_mk
description:
diff --git a/checkman/brocade_power b/checkman/brocade_power
index 42f1ce2..26aae9a 100644
--- a/checkman/brocade_power
+++ b/checkman/brocade_power
@@ -1,17 +1,16 @@
-title: Brocade FC switch power supply state
+title: Power supplies of a Brocade FC switch
+catalog: hw/storagehw/brocade
agents: snmp
author: Bastian Kuhn <bk(a)mathias-kettner.de>
license: GPL
distribution: check_mk
description:
- This checks monitors for a non ok state of a brocade power supply.
+ This check monitors the state of the power supplies of
+ a Brocade switch.
item:
- The Number of the power supply (1, 2, 3 ...) like descripted in the snmp output
-
-perfdata:
- None
+ The number of the power supply (1, 2, 3 ...) like descripted in the SNMP output.
inventory:
- The inventory creates a service for each supply
+ The inventory creates a service for each power supply.
diff --git a/checkman/brocade_temp b/checkman/brocade_temp
index a65b94b..d7c6ba2 100644
--- a/checkman/brocade_temp
+++ b/checkman/brocade_temp
@@ -1,20 +1,21 @@
-title: Brocade FC switches hardware temperatur
+title: Hardware temperature of Brocade FC switches
+catalog: hw/storagehw/brocade
agents: snmp
-author: Bastian Kuhn <bk(a)mathias-kettner.de>
license: GPL
distribution: check_mk
description:
- This checks monitors the hardware temperatures of a Brocade FC switch
+ This checks monitors the hardware temperatures of a Brocade FC switch.
item:
- The Number of the sensor (1, 2, 3 ...) like descripted in the snmp output
+ The Number of the sensor (1, 2, 3 ...) like descripted in the SNMP output.
perfdata:
- The actual temperatur value for each sensor
+ The current temperature value for each sensor
inventory:
- The inventory creates a service for each sensor
+ The inventory creates a service for each sensor.
[parameters]
-tuple (warn, crit): The levels of the maximum temperatur
+warn(int): the temperature at which a WARN state is reached
+crit(int): the temperature at which a CRIT state is reached