1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-21 10:39:53 +00:00
Munin-Contrib/plugins/oracle/oracle_connections
Lars Kruse 72eeb4155f spelling: change "licenced" to "licensed"
Even though "licenced" is proper (British English) spelling,
"spellcheck" complains about it (probably being focused on American
English).
The change should just clean up the output of the spelling linter and
should not be interpreted as a language preference.
Sorry, (British) folks!
2020-08-25 17:44:16 +02:00

153 lines
3.9 KiB
Bash
Executable file

#!/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)
#
# Licensed 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 db"
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`"