diff --git a/plugins/oracle/oracle_connections b/plugins/oracle/oracle_connections index 17d26344..c039da4d 100755 --- a/plugins/oracle/oracle_connections +++ b/plugins/oracle/oracle_connections @@ -1,153 +1,153 @@ -#!/bin/bash -# -# Munin plugin to monitor oracle connections w/o DBD::Oracle, or perl for that -# matter ;-) -# -# Author: Kevin Kunkel (kunkel.kevin@gmail.com) on December 11, 2007 -# (Based off the perl munin plugin by Joan Carles Soler) -# -# Licenced under GPL v2. -# -# Usage: -# -# If required, give username, password and/or oracle server -# host through environment variables. -# -# Parameters: -# autoconf -# config (required) -# -# Config variables: -# -# ORACLE_SID - Which database to use. Defaults to orcl -# oracle_user - A oracle user account with read permission to -# the v$session view. Defaults to -# 'oracle'. Anyway, Munin must be told which user -# this plugin should be run as. -# oracle_pass - The corresponding password, if -# applicable. Default to undef. -# -# SHOW_ORACLE_USERS - If set to 1 show usernames and num. of connections. -# Default is not show users (0). -# Magic markers -#%# family=auto -#%# capabilities=autoconf - - -# Hard-code environment variables here - -#oracle_user= -#oracle_pass= -#ORACLE_SID= -#ORACLE_HOME= -#SHOW_ORACLE_USERS= - -# End variable hard-code - - - -if [ -z "$ORACLE_HOME" ] ; then - # Adjust to your oratab locations - for oratab in /var/opt/oracle/oratab /etc/oratab - do - [ ! -f $oratab ] && continue - IFS=: - while read SID HOME STARTUP; - do - if [ "$SID" = "*" ] - then - ORACLE_HOME=$HOME - break - fi - done < $oratab - [ -n "$ORACLE_HOME" ] && break - break - done -fi - -if [ -z "$ORACLE_SID" ] -then - ORACLE_SID="orcl" -fi - -if [ -z "$oracle_user" ] -then - oracle_user="oracle" -fi - -if [ -z "$SHOW_ORACLE_USERS" ] -then - SHOW_ORACLE_USERS=0 -else - if [ $SHOW_ORACLE_USERS -ne 1 ] - then - SHOW_ORACLE_USERS=0 - fi -fi - -PATH=$PATH:$ORACLE_HOME/bin -export ORACLE_HOME PATH ORACLE_SID - -if [ "$1" = "autoconf" ] -then - echo yes - exit 0 -fi -if [ "$1" = "config" ] -then - WARN_CRIT=`sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ - grep -v '^$' | awk '{print $1 * 0.7 " " $1 * 0.8 }' -set pagesize 0 -select value from v\\$parameter where name = 'sessions'; -EOF` - echo "graph_title Oracle active connections to $ORACLE_SID" - echo "graph_args -l 0 --base 1000" - echo "graph_vlabel Connections" - echo "graph_category Oracle" - echo "graph_info Shows active oracle connections to $ORACLE_SID" - echo "graph_scale no" - if [ $SHOW_ORACLE_USERS -eq 1 ] - then - sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ - grep -v '^$' | awk '{ print $1 ".label " $1 " active connections" - print $1 ".info " $1 " active connections" - print $1 ".type GAUGE" }; END { - print "total.label active connections" - print "total.info active connections" - print "total.type GAUGE" - }' -set pagesize 0 -select username, count(username) from v\$session where username is not null group by username; -EOF - echo $WARN_CRIT| awk '{ print "total.warning " $1 "\ntotal.critical " $2 }' - else - echo "connections.label active connections" - echo "connections.info active connections" - echo "connections.type GAUGE" - echo $WARN_CRIT| awk '{ print "connections.warning " $1 "\nconnections.critical " $2 }' - fi -fi - - -if [ $SHOW_ORACLE_USERS -eq 1 ] -then - sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ - grep -v '^$'|awk 'BEGIN { total=0 } { - print $1 ".value " $2 - total=total+$2 } END { print "total.value " total }' -set pagesize 0 -select username, count(username) from v\$session where username is not null group by username; -EOF -else - sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | grep -v '^$'|\ - awk '{ print "connections.value " $1 }' -set pagesize 0 -select count(username) from v\$session where username is not null; -EOF -fi - -echo "max_connections.value" "`sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ - grep -v '^$' | awk '{print $1 }' -set pagesize 0 -select value from v\\$parameter where name = 'sessions'; -EOF`" +#!/bin/bash +# +# Munin plugin to monitor oracle connections w/o DBD::Oracle, or perl for that +# matter ;-) +# +# Author: Kevin Kunkel (kunkel.kevin@gmail.com) on December 11, 2007 +# (Based off the perl munin plugin by Joan Carles Soler) +# +# Licenced under GPL v2. +# +# Usage: +# +# If required, give username, password and/or oracle server +# host through environment variables. +# +# Parameters: +# autoconf +# config (required) +# +# Config variables: +# +# ORACLE_SID - Which database to use. Defaults to orcl +# oracle_user - A oracle user account with read permission to +# the v$session view. Defaults to +# 'oracle'. Anyway, Munin must be told which user +# this plugin should be run as. +# oracle_pass - The corresponding password, if +# applicable. Default to undef. +# +# SHOW_ORACLE_USERS - If set to 1 show usernames and num. of connections. +# Default is not show users (0). +# Magic markers +#%# family=auto +#%# capabilities=autoconf + + +# Hard-code environment variables here + +#oracle_user= +#oracle_pass= +#ORACLE_SID= +#ORACLE_HOME= +#SHOW_ORACLE_USERS= + +# End variable hard-code + + + +if [ -z "$ORACLE_HOME" ] ; then + # Adjust to your oratab locations + for oratab in /var/opt/oracle/oratab /etc/oratab + do + [ ! -f $oratab ] && continue + IFS=: + while read SID HOME STARTUP; + do + if [ "$SID" = "*" ] + then + ORACLE_HOME=$HOME + break + fi + done < $oratab + [ -n "$ORACLE_HOME" ] && break + break + done +fi + +if [ -z "$ORACLE_SID" ] +then + ORACLE_SID="orcl" +fi + +if [ -z "$oracle_user" ] +then + oracle_user="oracle" +fi + +if [ -z "$SHOW_ORACLE_USERS" ] +then + SHOW_ORACLE_USERS=0 +else + if [ $SHOW_ORACLE_USERS -ne 1 ] + then + SHOW_ORACLE_USERS=0 + fi +fi + +PATH=$PATH:$ORACLE_HOME/bin +export ORACLE_HOME PATH ORACLE_SID + +if [ "$1" = "autoconf" ] +then + echo yes + exit 0 +fi +if [ "$1" = "config" ] +then + WARN_CRIT=`sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ + grep -v '^$' | awk '{print $1 * 0.7 " " $1 * 0.8 }' +set pagesize 0 +select value from v\\$parameter where name = 'sessions'; +EOF` + echo "graph_title Oracle active connections to $ORACLE_SID" + echo "graph_args -l 0 --base 1000" + echo "graph_vlabel Connections" + echo "graph_category Oracle" + echo "graph_info Shows active oracle connections to $ORACLE_SID" + echo "graph_scale no" + if [ $SHOW_ORACLE_USERS -eq 1 ] + then + sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ + grep -v '^$' | awk '{ print $1 ".label " $1 " active connections" + print $1 ".info " $1 " active connections" + print $1 ".type GAUGE" }; END { + print "total.label active connections" + print "total.info active connections" + print "total.type GAUGE" + }' +set pagesize 0 +select username, count(username) from v\$session where username is not null group by username; +EOF + echo $WARN_CRIT| awk '{ print "total.warning " $1 "\ntotal.critical " $2 }' + else + echo "connections.label active connections" + echo "connections.info active connections" + echo "connections.type GAUGE" + echo $WARN_CRIT| awk '{ print "connections.warning " $1 "\nconnections.critical " $2 }' + fi +fi + + +if [ $SHOW_ORACLE_USERS -eq 1 ] +then + sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ + grep -v '^$'|awk 'BEGIN { total=0 } { + print $1 ".value " $2 + total=total+$2 } END { print "total.value " total }' +set pagesize 0 +select username, count(username) from v\$session where username is not null group by username; +EOF +else + sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | grep -v '^$'|\ + awk '{ print "connections.value " $1 }' +set pagesize 0 +select count(username) from v\$session where username is not null; +EOF +fi + +echo "max_connections.value" "`sqlplus -s ${oracle_user}/${oracle_pass}@$ORACLE_SID << EOF | \ + grep -v '^$' | awk '{print $1 }' +set pagesize 0 +select value from v\\$parameter where name = 'sessions'; +EOF`"