a lot of changtes
This commit is contained in:
parent
ac6ec92e03
commit
434b1713a1
@ -7,6 +7,39 @@
|
||||
#
|
||||
|
||||
|
||||
# GRANTS for nagios user
|
||||
# CREATE USER NAGIOS IDENTIFIED BY SOMEPASSWORD;
|
||||
# GRANT CONNECT, RESOURCE TO NAGIOS ;
|
||||
# GRANT SELECT ON V_$ARCHIVED_LOG to nagios ;
|
||||
# GRANT SELECT ON V_$ASM_DISKGROUP to nagios ;
|
||||
# GRANT SELECT ON V_$DATAGUARD_STATS to nagios ;
|
||||
# GRANT SELECT ON V_$LOCK to nagios ;
|
||||
# GRANT SELECT ON V_$LOG_HISTORY to nagios ;
|
||||
# GRANT SELECT ON V_$PROCESS to nagios ;
|
||||
# GRANT SELECT ON V_$SESSION to nagios ;
|
||||
# GRANT SELECT ON V_$SESSION_WAIT to nagios ;
|
||||
# GRANT SELECT ON V_$SQLAREA to nagios ;
|
||||
# GRANT SELECT ON V_$SYSSTAT to nagios ;
|
||||
# GRANT SELECT ON V_$controlfile to nagios ;
|
||||
# GRANT SELECT ON V_$librarycache to nagios ;
|
||||
# GRANT SELECT ON V_$lock to nagios ;
|
||||
# GRANT SELECT ON V_$log to nagios ;
|
||||
# GRANT SELECT ON V_$log_history to nagios ;
|
||||
# GRANT SELECT ON V_$parameter to nagios ;
|
||||
# GRANT SELECT ON V_$recovery_file_dest to nagios ;
|
||||
# GRANT SELECT ON V_$session to nagios ;
|
||||
# GRANT SELECT ON V_$sysstat to nagios ;
|
||||
# GRANT SELECT ON DBA_DATA_FILES TO NAGIOS ;
|
||||
# GRANT SELECT ON DBA_EXTENTS TO NAGIOS ;
|
||||
# GRANT SELECT ON DBA_UNDO_EXTENTS TO NAGIOS ;
|
||||
# GRANT SELECT ON dba_data_files TO NAGIOS ;
|
||||
# GRANT SELECT ON dba_free_space TO NAGIOS ;
|
||||
# GRANT SELECT ON dba_objects TO NAGIOS ;
|
||||
# GRANT SELECT ON dba_source TO NAGIOS ;
|
||||
# GRANT SELECT ON dba_temp_files TO NAGIOS ;
|
||||
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# CONSTANTS
|
||||
@ -82,7 +115,7 @@ print_revision() {
|
||||
# t tns
|
||||
# d db
|
||||
# l login
|
||||
# o ospassword
|
||||
# o ospassword <- NOT NECESSARY
|
||||
# s sessions
|
||||
# c cache
|
||||
# p parsing
|
||||
@ -91,28 +124,49 @@ print_revision() {
|
||||
# g diskgroup
|
||||
# f FRA
|
||||
# r redogen
|
||||
|
||||
# k locks
|
||||
# a dgstats
|
||||
# o totalspace
|
||||
usage()
|
||||
{
|
||||
echo -e "${LIGHTBLUE}USAGE${RESET}
|
||||
# H host
|
||||
# U oracle user
|
||||
# S sid
|
||||
# W warning
|
||||
# C critical
|
||||
# t tns
|
||||
# d db
|
||||
# l login
|
||||
# o ospassword
|
||||
# s sessions
|
||||
# c cache
|
||||
# p parsing
|
||||
# b tablespace
|
||||
# u undo
|
||||
# g diskgroup
|
||||
# f FRA
|
||||
# r redogen
|
||||
Mandatory options:
|
||||
-H destination_hostname
|
||||
-U oracle_linux_user
|
||||
-S ORACLE_SID
|
||||
Optional arguments (required for some checks):
|
||||
-W warning
|
||||
-C critical
|
||||
|
||||
Checks:
|
||||
-t
|
||||
Check remote TNS server
|
||||
-d
|
||||
Check remote database (search /bin/ps for PMON process)
|
||||
-s
|
||||
Check remote database concurrent active sessions
|
||||
-l
|
||||
Attempt a dummy login and alert if not ORA-01017: invalid username/password
|
||||
-c
|
||||
Check remote database for library and buffer cache hit ratios
|
||||
-p
|
||||
Check remote database for Soft/Hard parse ratios
|
||||
-b
|
||||
Check remote database for tablespace capacity in ORACLE_SID
|
||||
-u
|
||||
Check remote database for UNDO tablespace capacity in ORACLE_SID
|
||||
-f
|
||||
Check remote database for FLASH_RECOVERY_AREA capacity in ORACLE_SID
|
||||
-d
|
||||
Check remote database for diskgroup capacity in ORACLE_ASM_SID (Tipically +ASM1/2...)
|
||||
-a
|
||||
Dataguard statistics (Apply & Transport Lag). This check is done ON THE STANDBY (the master does not have information on V\$DATAGUARD_STATS. So ORACLE_SID and HOSTNAME must be the STANDBY ones.
|
||||
-r
|
||||
Daily check for yesterday's redo generation
|
||||
-k
|
||||
Watch for session locks (any lock with return CRITICAL)
|
||||
-o
|
||||
Total Space taken by the database Excluding sytem tablespaces.
|
||||
|
||||
"
|
||||
exit 0
|
||||
@ -278,6 +332,9 @@ reverse_return_values()
|
||||
|
||||
|
||||
|
||||
# get_remote_oraclehome look for ORACLE_SID on oratab
|
||||
# so if you don't have ORACLE_SID in the oratab file, it will avoid
|
||||
# you can add a pseudo dummy line there...
|
||||
get_remote_oraclehome()
|
||||
{
|
||||
#set -x
|
||||
@ -1541,6 +1598,31 @@ ORDER BY 1;
|
||||
}
|
||||
|
||||
|
||||
printmsg()
|
||||
{
|
||||
echo -e "$*"
|
||||
}
|
||||
|
||||
|
||||
abort_message()
|
||||
{
|
||||
local let ABORTCODE=1
|
||||
[[ ${EXITCODE} -ne 0 ]] && ABORTCODE=${EXITCODE}
|
||||
printmsg "${LIGHTRED}ERROR${RESET}: $*"
|
||||
exit ${ABORTCODE}
|
||||
}
|
||||
|
||||
|
||||
# debug_me uses variable ${DEBUG}
|
||||
debug_me()
|
||||
{
|
||||
if [[ "${DEBUG}" && ${DEBUG} -eq 0 ]] ; then
|
||||
echo -e "${LIGHTBLUE}DEBUG: ${RESET}$*"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# / FUNCTIONS
|
||||
@ -1593,26 +1675,7 @@ ORACLEUSERPASSWORD="D2HSHBFMO5IINME9I9WT"
|
||||
########################################################################
|
||||
|
||||
|
||||
|
||||
# H host
|
||||
# U oracle user
|
||||
# S sid
|
||||
# W warning
|
||||
# C critical
|
||||
# t tns
|
||||
# d db
|
||||
# l login
|
||||
# o ospassword
|
||||
# s sessions
|
||||
# c cache
|
||||
# p parsing
|
||||
# b tablespace
|
||||
# u undo
|
||||
# g diskgroup
|
||||
# f FRA
|
||||
# r redogen
|
||||
|
||||
while getopts "H:U:S:W:C:tdloscpbugfrhDF" arg; do
|
||||
while getopts "H:U:S:W:C:tdloscpbugfrhkaDF" arg; do
|
||||
case $arg in
|
||||
# H host
|
||||
H)
|
||||
@ -1646,9 +1709,11 @@ while getopts "H:U:S:W:C:tdloscpbugfrhDF" arg; do
|
||||
l)
|
||||
COMMAND="login"
|
||||
;;
|
||||
# o ospassword
|
||||
# o ospassword <- not necessary
|
||||
# o totalspace
|
||||
o)
|
||||
COMMAND="ospassword"
|
||||
#COMMAND="ospassword"
|
||||
COMMAND="totalspace"
|
||||
;;
|
||||
# s sessions
|
||||
s)
|
||||
@ -1682,6 +1747,14 @@ while getopts "H:U:S:W:C:tdloscpbugfrhDF" arg; do
|
||||
r)
|
||||
COMMAND="redogen"
|
||||
;;
|
||||
# k sessionlock
|
||||
k)
|
||||
COMMAND="sessionlock"
|
||||
;;
|
||||
# a dgstats
|
||||
a)
|
||||
COMMAND="dgstats"
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
;;
|
||||
@ -1700,20 +1773,25 @@ done
|
||||
|
||||
# mandatory ops
|
||||
if [[ ! "${REMOTE_SERVER}" ]] ; then
|
||||
debug_me "No REMOTE_SERVER"
|
||||
usage
|
||||
fi
|
||||
if [[ ! "${ORACLE_OSUSER}" ]] ; then
|
||||
debug_me "No ORACLE_OSUSER"
|
||||
usage
|
||||
fi
|
||||
if [[ ! "${ORACLE_SID}" ]] ; then
|
||||
debug_me "No ORACLE_SID"
|
||||
usage
|
||||
fi
|
||||
if [[ ! "${WARNING}" || ! "${CRITICAL}" ]] ; then
|
||||
debug_me "no warning or critical, maybe this will fail"
|
||||
fi
|
||||
if [[ ! "${COMMAND}" ]] ; then
|
||||
debug_me "No COMMAND received"
|
||||
usage
|
||||
fi
|
||||
|
||||
|
||||
|
||||
SSH="ssh ${ORACLE_OSUSER}@${REMOTE_SERVER} -xq"
|
||||
|
||||
get_remote_oraclehome
|
||||
@ -1722,65 +1800,10 @@ get_remote_oraclehome
|
||||
SQLPLUS="sqlplus -s '${ORACLEUSER}/${ORACLEUSERPASSWORD}@${ORACLE_SID}'"
|
||||
ORAENV="ORACLE_HOME=${ORACLE_HOME};PATH=$PATH:$ORACLE_HOME/bin;LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib;export ORACLE_HOME PATH LD_LIBRARY_PATH;"
|
||||
|
||||
|
||||
|
||||
echo -e "${SSH}"
|
||||
echo -e "${SQLPLUS}"
|
||||
echo -e "${ORAENV}"
|
||||
echo -e "${COMMAND}"
|
||||
exit 0
|
||||
|
||||
|
||||
## getops ### # CLEANING THE COMMAND
|
||||
## getops ### COMMAND="${1:2}"
|
||||
## getops ### ORACLE_SID="$2"
|
||||
## getops ### [[ ! "${COMMAND}" || ! "${ORACLE_SID}" ]] && print_usage && exit ${STATE_UNKNOWN}
|
||||
|
||||
|
||||
## getops ### if [ $# -eq 3 ] ; then
|
||||
## getops ### #ospassword check
|
||||
## getops ### # the values are REVERSE as it use reverse_return_values
|
||||
## getops ### CRITICAL=$2
|
||||
## getops ### WARNING=$3
|
||||
## getops ###
|
||||
## getops ### if [[ "${WARNING}" && ${CRITICAL} ]] ; then
|
||||
## getops ### if [[ ${CRITICAL} -gt ${WARNING} ]] ; then
|
||||
## getops ### echo "UNKNOWN - ${COMMAND} CRITICAL level is bigger than WARNING (reverse check)"
|
||||
## getops ### exit $STATE_UNKNOWN
|
||||
## getops ### fi
|
||||
## getops ### fi
|
||||
## getops ### else
|
||||
## getops ### if [ $# -eq 4 ] ; then
|
||||
## getops ### CRITICAL=$3
|
||||
## getops ### WARNING=$4
|
||||
## getops ### elif [ $# -eq 5 ] ; then
|
||||
## getops ### TSDG=$3
|
||||
## getops ### CRITICAL=$4
|
||||
## getops ### WARNING=$5
|
||||
## getops ### fi
|
||||
## getops ### if [[ "${WARNING}" && ${CRITICAL} ]] ; then
|
||||
## getops ### if [[ ${WARNING} -gt ${CRITICAL} ]] ; then
|
||||
## getops ### echo "UNKNOWN - ${COMMAND} Warning level is less than Critical"
|
||||
## getops ### exit $STATE_UNKNOWN
|
||||
## getops ### fi
|
||||
## getops ### fi
|
||||
## getops ###
|
||||
## getops ### fi
|
||||
|
||||
## getops ### # if the check is not for asmfs, then a ORACLE_HOME is necessary
|
||||
## getops ### if ! [[ "${COMMAND}" = "asmfs" || "${COMMAND}" = "ospassword" ]] ; then
|
||||
## getops ### get_remote_oraclehome
|
||||
## getops ### RES=$?
|
||||
## getops ### if [ ${RES} -ne ${STATE_OK} ] ; then
|
||||
## getops ### echo "CRITICAL - No ORACLE_HOME found"
|
||||
## getops ### exit $STATE_UNKNOWN
|
||||
## getops ### fi
|
||||
## getops ### #
|
||||
## getops ### fi
|
||||
|
||||
## getops ### # SQLPLUS FOR CONNECTIONS
|
||||
## getops ### SQLPLUS="sqlplus -s '${ORACLEUSER}/${ORACLEUSERPASSWORD}@${ORACLE_SID}'"
|
||||
## getops ### ORAENV="ORACLE_HOME=${ORACLE_HOME};PATH=$PATH:$ORACLE_HOME/bin;LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib;export ORACLE_HOME PATH LD_LIBRARY_PATH;"
|
||||
debug_me "${SSH}"
|
||||
debug_me "${SQLPLUS}"
|
||||
debug_me "${ORAENV}"
|
||||
debug_me "${COMMAND}"
|
||||
|
||||
|
||||
case "${COMMAND}" in
|
||||
|
Loading…
Reference in New Issue
Block a user